Мультибут что это такое
IT Blog. Code Inside
MultiBoot USB: Создаем мультизагрузочную флешку с Windows, Linux и утилитами
В этой статье приведена инструкция по созданию мультизагрузочной флешки с помощью программы MultiBoot USB. Программа работает с NTFS и FAT32, так что можно использовать не только флешку, но и внешний жесткий диск.
Подготовка к установке
1. Для начала возьмем флешку такого размера, чтоб на нее поместились все запланированные образы.
2. Скачиваем программу MultiBoot USB и устанавливаем.С программой в комплекте идет наглядная инструкция на русском языке: Readme.pdf.
В образе, создаваемом данной программой, предустановлены следующие программы:
Кроме перечисленных выше утилит, в состав пакета можно добавить ISO-образы (для них уже созданы необходимые пункты меню, и файлы-пустышки, которые нужно заменить на настоящие образы):
Процесс установки и создания мультизагрузочной флешки
1. Для начала запускаем утилиту HP USB Disk Storage Format Tool, выбираем устройство, ставим галочку «QuickFormat» и форматируем (желательно под NTFS, чтобы в случае чего не возникло проблем с большими файлами образов).
2. Далее устанавливаем grub4dos. Запускаем Grub4Dos Installer, в поле «DeviceName» выбираем Disk, и своё устройство (название устройства не отображается, только размер в мегабайтах). Жмем «Install«.
3. Далее следует распаковать на флешку набор файлов и утилит. Через кнопку «Обзор…» указываем путь к флешке и нажимаем «Извлечь». На вопрос: «Вы хотите заменить существующий файл?» отвечаем «Да».
Технически флешка уже стала мультизагрузочной, но кроме утилит, которые мы распаковали, на ней ничего нет.
Дополним комплект образами операционных систем. Для удобства можно создать в корне папку «iso», где будут расположены все образы дисков.
Для систем семейства Windows
Для установки Windows 7, Windows 8, Windows 8.1, следуем пункту 4.1 инструкции, выбирая соответствующий (2й) чекбокс:
Для Linux-based образов
Открываем на флешке файл menu.lst (в корне) блокнотом и заменяем пункты по умолчанию на желаемые, например:
title Загрузка Ubuntu 11.10 — i386 // название пункта меню
Проверка работоспособности флешки
Для проверки работы запускаем WinSetupFromUSB, в поле с устройством выбираем созданную флешку, и ставим галочку «TestinQEMU». По нажатию на «GO» будет произведен запуск загрузки с флешки в вииртуальной среде без перезагрузки системы.
Как сменить фоновую картинку под меню загрузки
1. Вам понадобится макет фоновой картинки в PSD и архив для перепаковки скинов. Отредактируйте PSD файл и сохраните в BMP (возможно придется пересохранить сторонней программой).
2. Готовый файл копируем в папку «Files» из архива «SkinsRepack», и запускаем файл «Упаковать.cmd». Получаем файл Skins без расширения. Этот файл копируем на флешку, и в файлах menu.lst и /boot/menu_u.lst во второй строчке указываем путь к скину:
Проверить как выглядит ваш новый скин также можно в эмуляторе.
После всех действий на флешке будут две папки и четыре файла, впрочем их можно пометить как скрытые, что никак не отразится на работе устройства.
Проверка в эмуляторе не даёт 100% гарантии того, что конкретный образ заработает в реальных условиях. Проверки на виртуальных машинах VirtualBox или VMWare также не всегда могут сработать корректно, так что лучше всего проверять на реальном железе.
Для примера вы можете скачать готовый файл menu.lst с прописанными в загрузке:
Создание мультизагрузочного USB HDD или флешки
Загрузочный USB Flash или HDD накопитель удобен тем, что можно отказаться от использования CD/DVD для установки ОС и использования диагностических программ типа Memtest, MHDD, Acronis TI.
«Мультизагрузочная» флешка или HDD хороши тем, что можно не форматировать весь диск для каждой программы, а один раз установить туда все необходимые программы и при загрузке с него выбирать нужную через красивое меню. В случае с HDD удобно создать для этого отдельный небольшой раздел.
Существует множество решений для флешек (например, http://eee-pc.ru/wiki/софт:usb_multiboot), но, как правило, они не работают с USB HDD. На хабре я нашел только статью об установке Win7 с USB HDD, но год назад попытки воспроизвести это не увенчались успехом. Для установки Windows 7 с флешки существует MS Win7 DVD Tool, но он опять же не работает с HDD. Поэтому давайте создадим свой мультизагрузочный USB HDD с помощью GRUB4DOS.
Начнем
Для проверки работоспособности многих программ необязательно каждый раз ребутать компьютер. Можно использовать виртуальные машины: MobaLiveCD или VirtualBox. Для VB выполняем в консоли: где число в PhysicalDrive — номер нашего загрузочного диска, и указываем полученный файл (C:\USBHDD.VDI) в качестве жесткого диска при создании машины. Однако некоторые ОС (например, Windows 7) могут не работать таким способом.
Примеры установки некоторых ОС и программ
Memters86+
Открываем Menu.lst текстовым редактором, добавляем туда следующее:
И попробуем разобраться, что эти команды означают.
title Memtest — название пункта (Memtest), которое будет отображаться в меню.
map /mt420.iso (hd32) — загрузка ISO образа, находящегося в корне загрузочного диска (эмуляция CD-ROM).
root (hd32)— делает виртуальный CD-ROM корневым.
chainloader () — передает управление другому загрузчику (если в скобках ничего не указано, то используется корневой, в данном случае hd32).
Ubuntu 10.4
Также кидаем ISO образ с ubuntu.com на HDD и прописываем в Menu.lst (образ переименован в ubuntu1.iso):
Windows 7
А вот с Win 7 немного сложнее.
Способ 1:
Копируем все файлы с диска (образа) Windows 7 и добавляем в Menu.lst:
В некоторых случаях работает, но могут возникнуть различные ошибки во время установки. К тому же таким способом будет работать только если на hdd находится одна Windows 7, иначе (например, если хотим поместить туда х86 и х64) запустится установка первой найденной.
Способ 2:
Небольшой скрипт автоматизирующий некоторые операции (в т.ч. добавление пункта в Menu.lst) по изменению образа. Источник — greenflash.su/forum/5-661-1, там же ссылки на подробное описание того, что он делает.
Способ 3:
Качаем imdisk, запускаем, копируем полученную папку imdisk на наш диск.
Создаем в этой папке файлы со следующим содержанием:
Либо берем здесь уже готовую папку.
Кидаем образ Windows 7 в корень диска (не забываем переименовать его в win7.iso или соответственно изменить имена во всех файлах) и в Menu.lst добавляем:
И во время установки Win 7, когда попросит драйвер CD-ROM, открываем консоль (SHIFT+F10) и запускаем setup.bat:
UPD: автоматизация этого способа: rghost.ru/20467691 либо greenflash.su/_fr/7/7487664.7z. Файлы из архива (кроме menu.lst и seven.iso) необходимо скопировать в корень раздела (либо соответственно изменить пути в Menu.lst).
Возможные проблемы и ошибки
Error 60: File for drive emulation must be in one contiguous disk area
Решение: нужно дефрагментировать образ. Например, с помощью программы Contig от Марка Руссиновича. Использование: contig.exe g:\ubuntu1.iso в консоли.
BIOS не поддерживает загрузку с USB, зависает, долго грузится и другие проблемы, связанные с загрузкой с USB HDD
Решение: Plop boot manager. Вариантов использования много и на их описание не хватит места, поэтому инструкцию на русском можно найти, например, тут.
Надеюсь, эта статья помогла вам разобраться в создании мультизагрузочного жесткого диска или флешки.
Более подробный мануал по GRUB4DOS есть здесь (перевод на русский язык, местами кривой) либо в README_GRUB4DOS из архива с GRUB4DOS.
UPD1: перезалит скрипт из 2 способа вин7: ошибся и выложил старую версию, в ней были проблемы с х64.
UPD1.1: добавлен автоматизированный 3 способ вин7.
Как создать мультизагрузочную флешку.
MultiBoot USB — Мультизагрузочная флешка. Мультизагрузочный диск
Мультизагрузочная флешка (MultiBoot USB) предназначена для установки операционных систем Windows XP/2000/Vista/7/8
и загрузки восстановительно-реанимационных образов и утилит непосредственно с USB накопителя.
Мультизагрузочная флешка. Утилиты, входящие в состав установочного пакета:
Скины находятся в папке Boot. По умолчанию установлены скины «Moonlight» и «Rainbow». При замене скинов, скопируйте их в папку Boot и пропишите название новых скинов в файлах menu.lst и menu_2.lst в строке: «gfxmenu /Boot / Moonlight».
Мультизагрузочная флешка. Установка и работа с программой
Для установки программы на компьютер необходимо запустить инсталлятор мультизагрузочной флешки — Мультизагрузочная флешка.exe. После распаковки SFX-архива и завершения копирования файлов, программа автоматически запустится и откроется меню селектора с набором всех необходимых утилит и программ для создания мультизагрузочной флешки. После установки программы, создаются два ярлыка: на «Рабочем столе» и в меню «Пуск/Все программы/Утилиты».
Если на компьютере установлена операционная система Windows 7 или Windows Vista, запуск программы необходимо осуществлять от имени администратора.
Форматирование USB флешки
Перед тем, как приступить к созданию мультизагрузочной флешки, её необходимо отформатировать.
Запускаем утилиту HP USB Disk Storage Format Tool, выбираем файловую систему NTFS (желательно) или FAT32, устанавливаем галку на «Quick Format» и нажимаем на «Start».
Устанавливаем загрузчик grub4dos на флешку
После форматирования флешки, приступаем к установке загрузчика grub4dos. Запускаем утилиту Grub4Dos Installer, в окне «Device Name» выбираем «Disk», находим свою флешку и нажимаем на «Install».
Если всё сделали правильно, то в открывшемся окне, появится надпись с текстом «The MBR/BS has been…».
Нажимаем на «Enter» и переходим к следующему пункту меню.
Монтируем образ Windows PE/XPE на флешку
Монтируем на виртуальный диск iso-образ Windows XPE USB WIM с помощью утилиты Daemon Tools, UltraISO или Alcohol. Запускаем утилиту PeToUSB, ниже в поле «Source Path To Built BartPE/WinPE Files» указываем путь к нашему виртуальному диску. Галку устанавливаем только в окне «Enable File Copy» и нажимаем «Start».
Установка дистрибутива Windows XP на флешку
Монтируем на виртуальный диск iso-образ Windows XP с помощью утилиты Daemon Tools, UltraISO или Alcohol. Запускаем утилиту WinSetupFromUSB, устанавливаем галку в окне «Windows 2000/XP/2003 Setup», указываем путь к нашему виртуальному диску и нажимаем «GO».
Установка дистрибутива Windows 7 на флешку
Монтируем на виртуальный диск iso-образ Windows 7 с помощью утилиты Daemon Tools, UltraISO или Alcohol. Запускаем утилиту WinSetupFromUSB, устанавливаем галку в окне «Vista / 7 / Server 2008 — Setup /PE/RecoveryISO», указываем путь к нашему виртуальному диску и нажимаем «GO».
Копирование файлов и утилит на флешку
Через кнопку «Обзор…» указываем путь к флешке и нажимаем «Извлечь». На вопрос: «Вы хотите заменить существующий файл?» нажимаем «Да».
После завершения копирования файлов на флешку, её можно будет протестировать и проверить работоспособность.
Внимание. Выполнение пунктов 1; 2 и 5 обязательно.
Любой из пунктов 3; 4.1 и 4.2, если это вам не нужно, можно пропустить.
Тестирование мультизагрузочной флешки
Чтобы протестировать и посмотреть, что у нас получилось, запускаем из меню селектора утилиту WinSetupFromUSB, устанавливаем галку в окне «Test in QEMU», нажимаем «GO» и наслаждаемся
Если всё прошло успешно, то интерфейс загрузочной флешки будет выглядит так:
Multiboot, UEFI, NTFS или почти рецепт счастья
Пост написан по мотивам публикации «Живительная флешка».
Предисловие
Доброго времени суток, Хабр. Совсем недавно, читая Хабр, наткнулся на статью Живительная флешка, где был описан способ создания мультизагрузочной флешки с набором полезных утилит, разнообразных систем и т.д. И все бы ничего, да вот и тут зарыта собака — обратим внимание на эту ветку комментариев, в которой обсуждается работоспособность мультизагрузки в системах с UEFI. Таким образом я начал собственное расследование искать универсальный способ решения этой проблемы.
Далеко ходить не пришлось — еще со времен безумной популярности сборки Windows XP Zver Edition ее разработчики использовали набор утилит под названием RMPrepUSB для записи сборки на USB-накопитель. Сборка ушла из памяти людей, ну а сам проект пакета утилит продолжает развиваться и крепнуть. Ну а сама основа — проект Easy2Boot. Изучая их сайт я нашел универсальный способ создания мультизагрузочной флешки, которая может содержать в себе любой дистрибутив, LiveCD или образы дискет, которые Вы только захотите добавить. Итак, приступим к созданию такой чудо-флешки.
Начинаем
Идем на сайт и качаем последний архив с Install_RMPrepUSB_Full в названии. Распаковываем и устанавливаем.
Внимание: для любителей переносимости — можно открыть установочник в 7-zip (к примеру) и распаковать его в папку без установки.
Далее идем на сайт Easy2Boot и качаем архив с самим E2B, распаковываем в любую папку на ПК.
Подготовка флешки
Заходим в папку с E2B и запускаем файл _ISO\docs\Make_E2B_USB_Drive.cmd.
Внимание: если Вы не устанавливали, а распаковывали RMPrepUSB, то на первом же этапе Вас попросят указать путь в папке RMPrepUSB.
Нас попросят указать номер накопителя из приведенного списка, спросят, действительно ли мы хотим форматировать накопитель и попросят выбрать ФС.
И вот тут внимание! Выбираем FAT32 — грузимся в UEFI без проблем, но нет поддержки файлов >4 Гб, и наоборот — NTFS без UEFI, но с поддержкой больших файлов. Если Ваши образы весять меньше 4 Гб каждый, то смело выбирайте FAT32. С NTFS немного сложнее, а именно — флешка в UEFI не загрузится, но если загрузить ее на обычном биосе, а потом выбрать образ для UEFI (об этом ниже), то Easy2Boot перепишет MBR флешки и она будет загружаться в UEFI, при условии, что в том образе есть его поддержка (наличие файлов efi\bootia32.efi и efi\boot\bootx64.efi)
Идем по сложному пути — пишем N (то есть форматируем в NTFS), вылезет окошко с подтверждением, жмем ОК и ждем. После форматирования будут скопированы файлы E2B и на зеленом фоне появится надпись «Нажмите любую клавишу».
Структура папок или куда же класть образы?
Далее запускаем RMPrepUSB, выбираем накопитель в списке и жмем Ctrl+F2, соглашаемся и ждем пару секунд. Программа пошаманит с файлами и можно грузиться с флешки.
Постой, а как же UEFI?
Как все это выглядит?
Грузимся в биосе, выбираем нужный UEFI образ, переключаем UEFI обратно и получаем флешку с одним разделом, содержащим файлы этого образа. Соответственно, если данный образ поддерживает загрузку в UEFI — он появится в списке устройств, с которых можно загрузиться.
Внимание! Если Вы загружались с образов, подготовленных для UEFI, то Вы заметите, что при следующей загрузке с накопителя будет меню загрузки с того самого образа. А где же все те, что мы набросали на флешку? Да и файлы на флешке не те… Тут два варианта — из загрузчика выбрать верхний пункт EASY2BOOT или в ОС запустить с флешки скрипт e2b\RestoreE2B (run as admin).cmd.
В сухом остатке
Без минусов не обошлось и тут — приходится переключаться в биос для того, чтобы подключить нужный образ. Зато функционал данного набора утилит закрывает все мыслимые и немыслимые потребности в мультизагрузочной флешке.
Минимальный multiboot загрузчик
Обзор
Когда вы включаете компьютер, он загружает BIOS из специальной флэш памяти. BIOS запускает тесты самопроверки и инициализацию аппаратного обеспечения, затем он ищет загрузочные устройства. Если было найдено хотя бы одно, он передаёт контроль загрузчику, который является небольшой частью запускаемого кода, сохранённого в начале устройства хранения. Загрузчик определяет местоположение образа ядра, находящегося на устройстве, и загружает его в память. Ему также необходимо переключить процессор в так называемый защищённый режим, потому что x86 процессоры по умолчанию стартуют в очень ограниченном реальном режиме (чтобы быть совместимыми с программами из 1978).
Мы не будем писать загрузчик, потому что это сам по себе сложный проект (если вы действительно хотите это сделать, почитайте об этом здесь). Вместо этого мы будем использовать один из многих испытанных загрузчиков для загрузки нашего ядра с CD-ROM. Но какой?
Мультизагрузка
К счастью, есть стандарт загрузчика: спецификация мультизагрузки. Наше ядро должно лишь указать, что поддерживает спецификацию и любой совместимый загрузчик сможет загрузить его. Мы будем использовать спецификацию Multiboot 2 (PDF)
вместе с известным загрузчиком GRUB 2.
Field | Type | Value |
---|---|---|
магическое число | u32 | 0xE85250D6 |
архитектура | u32 | 0 для i386, 4 для MIPS |
длина заголовка | u32 | общий размер заголовка включая тэги |
контрольная сумма | u32 | -(магическое число + архитектура + длина заголовка) |
тэги | variable | |
завершающий тэг | (u16, u16, u32) | (0, 0, 8) |
В переводе на x86 ассемблер это будет выглядеть так ( Intel синтаксис):
Если вы не знаете x86 ассемблер, то вот небольшая вводная:
Загрузочный код
Чтобы загрузить наше ядро, мы должны добавить код, который сможет вызвать загрузчик. Давайте создадим файл boot.asm :
Здесь есть несколько новых команд:
После сборки, просмотра и дизассемблирования мы можем увидеть опкоды процессора в действии:
Создание исполняемого файла
Для создания самого ELF исполняемого кода мы должны связать объектные файлы. Будем использовать кастомный скрипт для связывания, называемый linker.ld :
Переведём что написано на человеческий язык:
Давайте создадим ELF объектные файлы и слинкуем их, используя вышеуказанный линкер скрипт:
Примечание: команды ld и objdump платформо-зависимы. Если вы работаете не на x86_64 архитектуре, вы нуждаетесь в кросс компиляции binutils. После этого воспользуйтесь x86_64‑elf‑ld и x86_64‑elf‑objdump вместо ld и objdump соответственно.
Создание ISO-образа
Теперь мы можем создать загружаемый образ, используя следующую команду:
[loomaclin@loomaclin a_minimal_multiboot_kernel]$ yaourt xorriso
1 extra/libisoburn 1.4.8-2
frontend for libraries libburn and libisofs
==> Enter n° of packages to be installed (e.g., 1 2 3 or 1-3)
==> — ==> 1
[sudo] password for loomaclin:
resolving dependencies…
looking for conflicting packages.
Packages (3) libburn-1.4.8-1 libisofs-1.4.8-1 libisoburn-1.4.8-2
Total Download Size: 1.15 MiB
Total Installed Size: 3.09 MiB
Загрузка
Пришло время загрузить нашу ОС. Для этого воспользуемся QEMU:
Появится окно эмулятора:
Обратите внимание на зелёный текст OK в верхнем левом углу. Если у вас это не работает, посмотрите секцию комментариев.
Резюмируем, что произошло:
Вы также можете протестировать это на настоящем железе. Необходимо записать получившийся образ на диск или USB накопитель и загрузиться с него.
Автоматизация сборки
Сейчас необходимо вызывать 4 команды в правильном порядке каждый раз, когда мы меняем файл. Это плохо. Давайте автоматизируем этот процесс, с помощью Makefile. Но для начала мы должны создать подходящую структуру директорий чтобы отделить архитектурно-зависимые файлы:
Makefile должен иметь следующий вид:
Теперь мы можем вызвать make и все обновлённые файлы ассемблера будут скомпилированы и скомпонованы. Команда make iso также создаёт ISO образ, а make run в дополнение запускает QEMU.
Что дальше?
В следующей статье мы создадим таблицу страниц и проведем некоторую конфигурацию процессора для переключения в 64-битный long-mode режим.