GRUB всемогущий, или Делаем загрузочную флешку
Про сам grub, загрузочные флешки и особенно специальные утилиты для создания дисков написано уже не мало, но выглядят они узко направленными. Например только для создания флешки Windows 7, различные PEtoUSB, есть более универсальные как в этом топике. Куча утилит по сути устанавливают загрузчик grub, isolinux (реже BCDW или lilo, еще реже свой как Win7), и затем раскладывают предложенные ему файлы (Windows7,WindowsXP, Ubuntu и т.д.) по папкам. От сюда и требовательность к образам (как писали в комментариях к этому топику).
А между тем абсолютное большинство выложенных в интернете дисков (особенно USB) как раз и используют isolinux и grub, что мешает их просто объединять? да ничего!
Я постараюсь с примерами рассказать, как сделать загрузочную, установочную и просто Live флешку, причем все в одном без заточенных под конкретный дистрибутив утилит. И иметь возможность, при необходимости, легко добавить на флешку еще что-то, без очередного ее переформатирования.
(С) Картинка оттуда
Демонстрация
Для пользователей 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
Выключить компьютер:
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
Теперь 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
В последней версии 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 из любого дистрибутива.
Источник
Multiboot-флешка на GRUB2 с несколькими разделами под Ubuntu
Каждый знает о загрузочных флешках, и многие имеют карточку с несколькими системами. Но при их использовании возникает множество неудобств, например:
- Медленная загрузка с iso-образов
- Путаница в файлах нескольких систем(попробуйте разделить Ubuntu и BackTrack без костылей!)
- Невозможность поставить несколько однотипных систем(опять же, не используя костыли)
- И конечно, весь этот балаган мешается под рукой, когда нужно просто перекинуть несколько файлов.
Сегодня я вам расскажу, как избежать все эти минусы удобно и относительно быстро.
Итак, приступим. В качестве подопытного зверька я выбрал Transcend JetFlash 16G; модель флешки не принципиальна, только в разбивке 512 мегабайт памяти смысла нет 🙂
Для начала форматируем память, создаём чистую MBR и разделы. Под линуксом средств масса, я использовал стандартную утилиту Ubuntu.
Устанавливаем GRUB2:
sudo grub-install —no-floppy —root-directory=/media/ALKID /dev/sdd
sudo grub-mkconfig -o /media/ALKID/boot/grub/grub.cfg
В примере /media/ALKID — подмонтированный раздел флешки (любой кроме NTFS; первый раздел будет использоваться для личных файлов, так что предпочтительно ставить, скажем, на второй раздел);
/dev/sdd — сама флешка.
Если груб отвечает примерно так:
utrack@utrack
$ sudo grub-install —no-floppy —root-directory=/media/fpart2 /dev/sdd
[sudo] password for utrack:
/usr/sbin/grub-setup: предупр: Your embedding area is unusually small. core.img won’t fit in it..
/usr/sbin/grub-setup: предупр: Встраивание невозможно. При имеющихся параметрах GRUB можно установить только с помощью списка блоков (blocklists). Однако, список блоков является НЕНАДЁЖНЫМ механизмом и его лучше не использовать..
/usr/sbin/grub-setup: ошибка: не будет продолжена с использованием blocklists.
то значит что для бутлоадера не хватает места и нужно перенести начало первого раздела, скажем, на 1 мб вперед.
Затем просто копируем файлы систем на флешку, iso-образы можно распаковать обычным архиватором.
А теперь сложная часть 🙂
Дело в том, что для каждой системы настройки немного, да отличаются. Для некоторых дистрибутивов вам придётся подбирать параметры самим, но я помогу с наиболее популярными системами.
Для любого дистрибутива Linux на отдельном разделе:
menuentry ‘BackTrack 5 R1’ —class gnu-linux —class gnu —class os <
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root BC1B-344D
linux /casper/vmlinuz file=/preseed/custom.seed boot=casper text splash vga=791 —
initrd /casper/initrd.gz
>
, где BC1B-344D это UUID раздела (узнать его можно командой ‘ls -l /dev/disk/by-uuid’).
Из-за сходной структуры с ними есть одна закавыка: для каждого придётся изменить имя папки casper, например BT5 в примере находится в папке casper, а вот на соседнем разделе будет Mint, причём в папке casper2. Подключить её можно так:
menuentry ‘Mint Default’ —class ubuntu —class gnu-linux —class gnu —class os <
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root 1E1F-DD84
linux /casper2/vmlinuz live-media-path=/casper2/ nopersistent boot=casper initrd=/casper2/initrd.lz quiet splash —
initrd /casper2/initrd.lz
>
Далее, Dr.Web на втором разделе в папке drweb:
menuentry «Dr.Web» <
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root 8614-5FEE
linux /drweb/boot/vmlinuz usbroot root=/dev/ram0 realroot=/dev/sd[a-z]8/drweb init=/linuxrc init_opts=4 quiet vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1 dokeymap looptype=squashfs usbroot=/dev/sd[a-z]5/drweb slowusb vga=791 CONSOLE=/dev/tty1 SDELAY=12 USBWAIT=15
initrd /drweb/boot/initrd
>
Касперский рядом с ним в папке kav:
menuentry «Kaspersky RD 10» <
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
insmod ntfs
search —no-floppy —fs-uuid —set=root 8614-5FEE
linux /kav/boot/rescue subdir=/kav root=/dev/ram0 vga=791 init=/linuxrc looptype=squashfs loop=/kav/image.squashfs nodevfs kav_lang=en udev aufs quiet noresume doscsi kav_lang=en cdroot=/dev/sd[a-z]9
initrd /kav/boot/rescue.igz
>
Можно сменить язык на русский директивой kav_lang=ru.
Partition Editor на нтфс-разделе в папке /sys/pwizard:
menuentry ‘pwhe6 — Partition Editor’ <
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
insmod ntfs
search —no-floppy —fs-uuid —set=root 01CCC7C26FA774D0
linux /sys/pwizard/BZIMAGE ramdisk_size=102400 root=/dev/ram0 rw
initrd /sys/pwizard/tinycore.gz
>
В принципе с ним проблем никаких, к тому же из всего образа можно оставить только файлы BZIMAGE и tinycore.gz.
menuentry ‘Partition Doctor’ <
recordfail
set gfxpayload=$linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root BC1B-344D
linux /partdoc/memdisk
initrd /partdoc/partdoc.ima
>
menuentry «Memory test (memtest86+)» <
insmod part_msdos
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root 8614-5FEE
linux16 /memtest.bin
>
И загрузка с первого жёсткого диска, если вы случайно оставили флешку в разъёме:
menuentry «hd0» <
insmod part_msdos
insmod ntfs
insmod fat
insmod ext2
set root='(hd0)’
chainloader +1
>
Некоторые BIOS воспринимают карту как hd0, поэтому желательно рядом оставить загрузку hd1 аналогичным способом.
Если вы нашли нужную систему в статье- можете удалить из скопированных образов папки syslinux, isolinux, boot/grub и др., если же не нашли-то ищите в них подсказки 🙂
Например для того же Linux Mint в файле /isolinux/isolinux.cfg:
label live
menu label Start Linux Mint
kernel /casper/vmlinuz
append file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz quiet splash —
Всё что нам нужно сделать-это подключить insmod’ом нужные для ФС модули, заменить kernel на linux и перенести секцию append после имени ядра и указать раздел системы. Вот так:
menuentry ‘Mint Default’ —class ubuntu —class gnu-linux —class gnu —class os <
insmod ext2
insmod fat
search —no-floppy —fs-uuid —set=root 1E1F-DD84
linux /casper/vmlinuz boot=casper initrd=/casper/initrd.lz quiet splash —
initrd /casper/initrd.lz
>
Готово, можно перезагружаться и испытывать новую систему!
Источник