Как стать автором
Поиск
Написать публикацию
Обновить

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

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


Загрузочный 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.
Теги:
Хабы:
Всего голосов 93: ↑81 и ↓12+69
Комментарии61

Публикации

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