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

GRUB всемогущий, или Делаем загрузочную флешку

Время на прочтение 8 мин
Количество просмотров 555K
Про сам grub, загрузочные флешки и особенно специальные утилиты для создания дисков написано уже не мало, но выглядят они узко направленными. Например только для создания флешки Windows 7, различные PEtoUSB, есть более универсальные как в этом топике. Куча утилит по сути устанавливают загрузчик grub, isolinux (реже BCDW или lilo, еще реже свой как Win7), и затем раскладывают предложенные ему файлы (Windows7,WindowsXP, Ubuntu и т.д.) по папкам. От сюда и требовательность к образам (как писали в комментариях к этому топику).

А между тем абсолютное большинство выложенных в интернете дисков (особенно USB) как раз и используют isolinux и grub, что мешает их просто объединять? да ничего!

Я постараюсь с примерами рассказать, как сделать загрузочную, установочную и просто Live флешку, причем все в одном без заточенных под конкретный дистрибутив утилит. И иметь возможность, при необходимости, легко добавить на флешку еще что-то, без очередного ее переформатирования.
image
(С) Картинка оттуда

Демонстрация


Для пользователей Linux нет необходимости объяснять, как пользоваться командой grub-install /dev/sdb, да и преимущества grub им очевидны. Предвидя комментарии типа dd, хочу сказать, что статья нацелена в первую очередь на Windows пользователей.
Пользователям Windows я постараюсь объяснить преимущества grub, и надеюсь смогу убедить, что grub нужно держать если не первым, то вторым загрузчиком точно (флешку с grub иметь точно необходимо).
Для начала можно попробовать без затирания MBR. Достаточно прописать grub в boot.ini:
Нам понадобятся файлы из архива GRUB4DOS, копируем их в корень C:\, не обязательно что бы это был FAT, у меня работает и на NTFS:
default
grldr
grldr.mbr
menu.lst


Для Windows XP в boot.ini добавляем c:\grldr="GRUB4DOS". Все.
Либо запустить GRUB\install.bat из файла в приложении (файл install.bat взят из установщика xPUD ©, и только добавляет grub, ничего не копирует).

Для пользователей Vista и 7 установка несколько сложнее, чем в XP — делается это чрез bcdedit:

делаем резервную копию
bcdedit.exe /export "C:\BCD.bak"
bcdedit.exe /create /d "GRUB4DOS" /application bootsector
запоминаем GUID вида "{1a5b5afd-0469-110d-9a85-000103005000}", и далее заменяем в команде GUID на эту строку

bcdedit.exe /set GUID device boot
bcdedit.exe /set GUID device partition=%SYSTEMDRIVE%
bcdedit.exe /set GUID path \grldr.mbr
bcdedit.exe /displayorder GUID /addlast

Либо так же запустить GRUB\install.bat из файла в приложении.

В общем то на этом установка закончена, и можно уже перезагружаться и поиграться с командной строкой (нажать С после появления меню grub).

Например, можно начать загрузку с дисковода:
chainloader (fd0)+1
rootnoverify (fd0)
boot


С привода компакт дисков:
cdrom --init
map --hook
chainloader (cd0)
boot


Перезагрузиться:
reboot

Выключить компьютер:
halt

Можно загрузиться с заранее вставленной флешки (если конечно там есть какой то загрузчик):
map (hd1) (hd0)
map (hd0) (hd1)
root (hd1,0)
chainloader +1
boot


А можно начать установку Windows 7, образ которой до этого просто разархивировали на флешку (и сама флешка не загрузочная):
root (hd1,0)
chainloader /bootmgr
boot


Напомню, что все это мы делали из режима командной строки. Но 1 в 1 (удалив только последнюю команду boot), эти команды можно прописать и в menu.lst, и они будут работать из меню.

Случай из жизни: Cлетел MBR первого диска, и по этому BIOS загрузил сразу grub со второго диска. Увидев привычный синий экран, я смекнул что MBR, после очередных экспериментов, повреждена и требуется восстановление. Все что потребовалось мне, это перейти в режим командной строки ( С ) и ввести:
root (hd0,0)
chainloader /bootmgr
boot


И началась загрузка Windows7 После загрузки выполнил bootsect /nt60 c: /mbr И все (!)
Никакого безопасного режима или режима восстановления, ни каких 2-3 перезагрузок, и тем более ни каких дисков восстановления (да и нет у меня CD привода на нетбуке). После процедуры даже не понадобилось лишний раз перезагружаться, Windows загрузилась уже в штатном режиме (одно время я неделю ее так запускал, забывал восстановить MBR после загрузки).
Так же в архиве GRUB4DOS есть примеры автоматического поиска Windows XP и Windows 7/Vista, и даже если вы не знаете где у вас установлена Windows — все равно можно загрузиться при слетевшей MBR.

Установка


И так, Вы прониклись и хотите сделать себе такую флешку, но у Вас уже есть флешка на 16Гб и форматировать ее крайне не желательно, а большинство распространенных утилит (и инструкций) для изготовления бут-флешек предлагают ее предварительно отформатировать, что бы, полагаю, убедиться, что на создаваемой флешке точно файловая система FAT32. А потом устанавливают туда опять же grub или isolinux.

Установить grub можно без форматирования (при условии, конечно, что у вас уже FAT32, коих абсолютное большинство). Есть утилитка Winrub (любителям GUI), а в архиве GRUB4DOS есть bootlace.com. Рассмотрим вариант WinGrub. Раньше это был sfx архив, который сам себя распаковывает в %programfiles% и создавал ярлык на рабочем столе, что мне не нравилось. Достаточно было его самостоятельно распаковать, запустив потом grubinst_gui.exe. Когда писал статью, скачал последнюю версию, там уже инсталятор более менее полноценный. Качаем, ставим. Либо смотрим приложенный файл в конце статьи, я выложу свой комплект для сборки архивом. Запускаем, далее выбираем флешку (ориентируясь по размеру), и в partition list выбираем MBR или Whole disk. Жмем Install. Появляется окно консоли "The MBR/BS has been successfully installed", с предложением нажать Enter, После нажатия которого — оно закрывается. В случае если написал "grubinst: Should be a disk image" поставьте галочку «Floppy image» и повторно нажмите Install

imageimage

Теперь GRUB4DOS прописан в MBR.
После (хотя можно и ДО), копируем файлы из архива GRUB4DOS в корень флешки:
default
grldr
grldr.mbr
menu.lst

И редактируем menu.lst по желанию, параллельно наполняем флешку (часть пунктов уже можно посмотреть в статье выше, да и сам архив содержит примеры).

Наполняем


1. Alkid live
В полной раздаче есть архив multiboot.7z, где есть пример файла для grub, от туда его и возьмем, а сам ISO просто разархивируем в корень. Переименовываем i386 в minint, если забудем то не запустится, но скажет что не найден minint (что и стало столь не очевидной подсказкой).
Добавляем в menu.lst
title Alkid Live CD
root (hd0,0)
chainloader (hd0,0)/minint/setuplns.bin


В папке programs можно удалить лишнее, если флешка не сильно большая. А так же обновить базы антивирусов до актуального состояния.

2. Hiren's BootCD
Открываем ISO и видим, что в папке HBCD лежит конфиг загрузчика isolinux.
Разархивируем папку HBCD в корень флешки, открываем isolinux.cfg:
menu label Start BootCD
kernel /HBCD/memdisk
append initrd=/HBCD/boot.gz


что легко преобразуется в синтаксис grub
title Start BootCD
root (hd0,0)
kernel /HBCD/memdisk
initrd /HBCD/boot.gz


добавляем и его в menu.lst
Установка закончена.

3. Некоторые мелкие утилиты уже есть готовые в интернете. обычно это образ дискеты с memtest, Ghost, DOS, PQMagic. Грузиться с них так же не составляет труда. Прописываем в menu.lst:
title Ghost 11
map --mem /Ghost.ima (fd0)
map --floppies=1
map --hook
chainloader (fd0)+1
rootnoverify (fd0)


У меня EEEPC без CD привода и когда вдруг встала необходимость восстановить его, я даже не задумался где взять внешний привод. Переписал Ghost образ с DVD дсика на флешку на «большом» компе, загрузился с флешки и восстановил.

4. Запуск дистрибутива. Возьмем для примера образ Parted Magic. Качаем образ для USB. Он уже на grub и имеет очень большое меню различных вариантов загрузки. Для его установки распаковываем архив, папка pmagic должна оказаться в корне, и из boot\grub файл menu.lst копируем в \pmagic, а в наш груб добавляем:
title PМagic
configfile /pmagic/menu.lst


Эта команда загрузит меню из родного menu.lst от pmagic, и нам не придется вообще ничего изобретать. Разве что добавить в \pmagic\menu.lst пункт для возврата обратно в наше:
title <<main menu
configfile /menu.lst


В последней версии PМagic добавилась еще куча утилит, в т.ч. memtest, восстановление grub, hardware analyzer. Рекомендую самостоятельно потренироваться в «переселении» их на свою флешку, подглядывая в п.3 или menu.lst.

5. Запуск Live Ubuntu. У меня лежал "ubuntu-9.10-desktop-i386.iso", на его примере и рассмотрим. Так же, разархивируем в корень. В папке isolinux (ее после можно удалить), в файле text.cfg находм как запускается Live режим, и соответственно добавляем свои строки в menu.lst (сравните что там было и что получилось)
title Try Ubuntu without any change to your computer
root (hd0,0)
kernel /casper/vmlinuz file=/preseed/ubuntu.seed boot=casper
initrd /casper/initrd.lz


6. Установка Debian (точно так же ставится и Ubuntu):
Для этого нам понадобится файлы HD-Media (или графический инсталятор) из репозитория, и ISO образ DVD1. Складываем все это в корень, а в grub добавляем:
title Debian Install
kernel /vmlinuz
init /initrd.gz


После начала установки будет найден образ ISO DVD1 и продолжится установка без сети, без CD приводов.

7. Установка на флешку Антивирусов сильно сложнее, например установку Dr.Web Live CD я расписывал тут.

Образы антивирусов не все удалось нормально «подселить» на флешку, если кто то сможет и поделится опытом буду рад (сам давно их не качал, возможно в последних версиях это уже делается сильно проще). В образе от Dr.Web, например, лежит даже инструкция по установке на флешки.
Для справки Live образы антивирусов:
Dr.Web
BitDefender
Avast! уже платный :(
Symantec NAV
Panda
Avira

8. DOS. Тут стоит разделить, если нам нужен ДОС для какой то серьезной работы, то имеет смысл найти DOS-Live образы, например этот, и грузить как в п.3. Мы же запускаем DOS что бы потом из него запустить установку Windows XP. От ДОСа нам понадобятся:
AUTOEXEC.BAT
COMMAND.COM
CONFIG.SYS
EMM386.EXE
HIMEM.SYS
IO.SYS
SMARTDRV.EXE


желательно, но не обязательно:
Mouse.com
MOUSE.INI
OAKCDROM.SYS


Копируем все это в корень флешки, а в menu.lst добавляем
title DOS (Install WinXP?)
root (hd0,0)
makeactive
chainloader /io.sys

Тут можно либо насладиться DOS, либо заранее в AUTOEXEC.BAT прописать (файл ответов конечно по желанию):
smartdrv
cd \WinXP\i386
winnt /U:\WinXP\i386\winnt.sif


9. Установка Windows 7. Как уже писал выше достаточно разархивировать ISO в корень флешки, а в menu.lst добавить (уже с hd0,0)
root (hd0,0)
chainloader /bootmgr
boot


10. Ну и для ровного счета расскажу еще об одном типе утилит. Некоторые (не все!) ISO образы могут быть загружены прямо из grub. Среди таких у меня нашлись: Acronis True Image, Acronis Disk Director, Active Password Changer. Это особым образом подготовленные образы (не простой слепок с CD), их загружать следующим образом:
title Active Password Changer
map (hd0,0)/Pwdchanger.iso (hd32)
map --hook
chainloader (hd32)


Удаление


Что делать если случайно установили grub в MBR основного диска, а не флешки, либо нужно удалить с флешки? Можно воспользоваться утилитой bootsect.exe как я писал выше.
В случае если еще не перезагрузились (если перезагрузились, то при помощи grub загрузите Windows, способом описанным выше), и запустите bootsect.exe
Для восстановления Windows XP bootsect /nt52 c: /mbr
Для восстановления Windows Vista/7 bootsect /nt60 c: /mbr
bootsect находится в папке boot диска Windows, а так же есть в моем выложенном архиве в конце статьи.
Флешку же достаточно просто отформатировать.

Заключение


Надеюсь что примеры помогут кому то разобраться, а кому то заинтересоваться данным загрузчиком, а утилиты для создания загрузочных флешек будут вызывать улыбку (ни кого не хочу обидеть, уважаю всех разработчиков, больше того сам с таких утилит начинал). Ну и конечно же очень рекомендую изучить подробнее сам grub, и GRUB4DOS, например вот русское руководство по последнему.
Перед добавлением очередного дистрибутива или утилитки, следите что бы папки не совпадали. Часть Linux дистрибутивов, при определенной сноровке и хорошем владении grub, позволяет безболезненно переименовать свою папку. Особенно не большие, на подобии pmagic, puppy, xpud.
В общем, не бойтесь экспериментировать, и удачи!

Так же ресурсы, которые могут быть полезны тем, кто хочет создать свою загрузочную флешку:
greenflash.su
flashboot.ru
lexapass.narod.ru

Приложение — мой архивчик со всем необходимым: bootsect, DOS, grub install скипт, WINGRUB, grub4dos. А так же список файлов на моей флешке c описаниями (некоторые просили).

UPD:
  • Форум где обсуждают варианты создания и загрузки ISO-образов.
  • В этой статье, от savvateev, он расказывается как решить некоторые возникающие проблемы, в том числе и фрагментацию образов ISO.
  • Статья «Программа для быстрого теста загрузочных дисков». С помощью описанной в статье утилиты загрузочную флешку можно тестировать мгновенно и без перезагрузки компьютера.
  • Скрипт для создания LiveLinux из любого дистрибутива.
Теги:
Хабы:
+104
Комментарии 62
Комментарии Комментарии 62

Публикации

Истории

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

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