Как стать автором
Обновить

Создание мультизагрузочного USB HDD или флешки

Время на прочтение 5 мин
Количество просмотров 735K


Загрузочный 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.

Нам понадобится:
  • USB HDD (все описанное должно работать и для флешек).
  • ОС Windows (естественно можно аналогично сделать это и из ОС на базе Linux, но у меня сейчас нет возможности проверить работоспособность и наличие «подводных камней»).
  • Материнская плата (BIOS) с поддержкой загрузки с USB накопителей. Если загрузка с USB не поддерживается, можно использовать Plop, об этом ниже.


Начнем


  1. Скачиваем HP USBFW и форматируем наш накопитель. Обычно все, в том числе и я, пропускают этот шаг. Возможно, будет работать и без него, но лично я перепробовал все стандартные варианты форматирования из Windows 7, однако загрузка с моей 320ГБ Тошибы не работала (зависала сразу после выбора в Boot menu) до использования этой утилиты.
  2. Если воспользовались HP USBFW из прошлого пункта, то можно удалить созданный им на весь диск раздел и создать свой, поменьше (желательно FAT32, иначе могут возникнуть проблемы с некоторыми программами и ОС), а оставшееся место оставить для «файлопомойки».
  3. Устанавливаем загрузчик GRUB4DOS в MBR. Рекомендуется использовать первый вариант, чтобы не ошибиться с выбором диска или раздела.
    1. Можно воспользоваться GUI: для этого скачиваем grubinst-1.1-bin-w32-2008-01-01, запускаем grubinst_gui.exe, выбираем диск, жмем Refresh в Part list и выбираем нужный раздел. Остальные настройки можно не трогать.
    2. Либо в консоли командой:
      grubinst.exe hd(номер диска, номер раздела)
      Номер диска можно узнать в «Управлении дисками» (diskmgmt.msc).
  4. Копируем файлы grldr и Menu.lst из архива grub4dos-0.4.4.zip в корень раздела.

Можно перезагружаться и проверять работоспособность нашего мультизагрузочного накопителя.

Для проверки работоспособности многих программ необязательно каждый раз ребутать компьютер. Можно использовать виртуальные машины: MobaLiveCD или VirtualBox. Для VB выполняем в консоли:
"C:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "C:\USBHDD.VDI" -rawdisk \\.\PhysicalDrive1
где число в PhysicalDrive — номер нашего загрузочного диска, и указываем полученный файл (C:\USBHDD.VDI) в качестве жесткого диска при создании машины. Однако некоторые ОС (например, Windows 7) могут не работать таким способом.

Примеры установки некоторых ОС и программ


Memters86+

Скачиваем ISO образ с офф. сайта memtest.org/download/4.20/memtest86+-4.20.iso.zip и кидаем его на наш загрузочный HDD (не забываем распаковать .zip архив).

Открываем Menu.lst текстовым редактором, добавляем туда следующее:
title Memtest 
find --set-root /mt420.iso 
map /mt420.iso (hd32) 
map --hook 
root (hd32) 
chainloader ()

И попробуем разобраться, что эти команды означают.
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):

title Ubuntu
map /ubuntu1.iso (hd32)
map --hook
root (hd32)
kernel /casper/vmlinuz iso-scan/filename=/ubuntu1.iso boot=casper quiet splash -- locale=ru_RU
initrd /casper/initrd.lz


Windows 7


А вот с Win 7 немного сложнее.

Способ 1:


Копируем все файлы с диска (образа) Windows 7 и добавляем в Menu.lst:
title Install Windows 7
find --set-root /bootmgr 
chainloader /bootmgr


В некоторых случаях работает, но могут возникнуть различные ошибки во время установки. К тому же таким способом будет работать только если на hdd находится одна Windows 7, иначе (например, если хотим поместить туда х86 и х64) запустится установка первой найденной.

Способ 2:


Небольшой скрипт автоматизирующий некоторые операции (в т.ч. добавление пункта в Menu.lst) по изменению образа. Источник — greenflash.su/forum/5-661-1, там же ссылки на подробное описание того, что он делает.

Способ 3:


Качаем imdisk, запускаем, копируем полученную папку imdisk на наш диск.
Создаем в этой папке файлы со следующим содержанием:

SetupImDisk.cmd
@ECHO ON
rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 132 .\imdisk.inf


SetupCDROM7.cmd
@ECHO ON
Set fullname=%srcdrv%\win7.iso
imdisk -a -f %srcdrv%\win7.iso -m #:


Setup.bat
@ECHO OFF
for %%x in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%x:\imdisk\SetupImDisk.cmd set srcdrv=%%x:
echo Find the USB in %srcdrv%\
echo.
cd\
%srcdrv%
cd imdisk
echo Begin with SetupImDisk.cmd
echo.
call %srcdrv%\imdisk\SetupImDisk.cmd
@ECHO OFF
echo.
echo Now going to SetupCDROM.cmd
echo.
pause
echo.
call %srcdrv%\imdisk\SetupCDROM7.cmd
@ECHO OFF
echo.
echo Done. Have Fun.....
echo.
pause
for %%y in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%y:\look.win set install=%%y:
cd\
%install%
cd sources
setup.exe
exit 

Либо берем здесь уже готовую папку.

Кидаем образ Windows 7 в корень диска (не забываем переименовать его в win7.iso или соответственно изменить имена во всех файлах) и в Menu.lst добавляем:

Title Install Win7
map /win7.iso (hd32)
map --hook
chainloader (hd32)


И во время установки Win 7, когда попросит драйвер CD-ROM, открываем консоль (SHIFT+F10) и запускаем setup.bat:
pushd E:\imdisk — вместо Е буква нашего раздела HDD 
setup.bat


Источник — chapaty.org/kasha/software/usb-hdd-install-iso-win-7-xp-ubuntu.html.

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.
Теги:
Хабы:
+69
Комментарии 61
Комментарии Комментарии 61

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн