2005-05-30
Версия 1.1
Версия 1.0 - на Unix.ginras.ru
Существует немало ситуаций, когда воспользоваться винчестером бывает невозможно: несовместимость ATA режимов HDD и IDE-тракта, разрушение загрузчика или таблицы разделов, утеря паролей, нарушение целостности файловой системы после аппаратных сбоев или вирусной атаки и т.д. и т.п.
Системы, предназначенные для преодоления подобного рода трудностей, обычно называют "спасательными" (rescue) или аварийными. До недавнего времени основным носителем таких систем были дискеты со всеми их недостатками. Как то: малый объём, низкая надёжность, "неприлично" низкая, по нынешним временам, скорость доступа. Не секрет, что "флоппики" нынче умирают, а потребность в rescue-системах всё ещё существует. Вот и приходят на смену дискетам CD и flash-карты.
Как-то "сложилось", что мне несколько раз приходилось писать то в Сети, то в периодике о мультизагрузке вообще и мультизагрузчиках, в частности. Я программировал средства модификации главной загрузочной записи (MBR) сам, описывал и популяризовывал чужие... Одним словом: некоторый опыт по этому поводу имею.
С другой стороны, ещё одна "близкая" мне в последние пару лет тема - LiveCD. Вплоть до создания собственных. И мог ли я пройти мимо сообщения о том, что очередная версия моего любимого GRUB может быть инсталлирована на CD? Нет, конечно. Тем более, что собственный "парк" rescue-систем, состоящий в основном из дискет, всё чаще стал давать "сбои": старость, знаете ли... Одним словом, создать коллекцию rescue-систем на одном CD-диске показалось мне заманчивым. И вот что из этого получилось...
Возможность сделать CD загружаемым существует уже достаточно давно. Так,
в Linux для этого обычно используется замечательный загрузчик Питера Анвина
syslinux (точнее, один из его компонентов - isolinux). Всем хорош: и фонт свой можно загрузить (а значит и локализовать в полной мере), и опции загрузки обеспечить, и help вывести (хоть десяток: по штуке на каждую функциональную клавишу). GRUB, однако, как и положено "GRand Unified" умеет почти всё то же самое, но, вдобавок: собственные средства создания, просмотра и редактирования MBR (включая Partition Table), обеспечивает доступ ко многим
файловым системам, позволяя искать и просматривать файлы на них и, наконец,
предоставляет возможность загрузки не только ядер Linux, но и "чуждых"
разделов, имеющих собственные загрузчики (BSD, Windows, etc...)
В данном случае, можно не напоминать о возможностях загрузки по сети, шифруемых паролях и других достоинствах GRUB: достаточно и того, что помимо функций загрузчика это ещё и довольно мощный инструмент, ценный в составе rescue-системы сам по себе.
Повторяться, очевидно, нет необходимости: преимущества CD и flash-карт над дискетами столь существенны, что рациональность создания rescue-системы на CD доказательств, пожалуй, не требует. Ещё недавно существовавшие ограничения формата ISO-9660 (CD) на длину и набор символов имён файлов, глубину вложения директорий, по мере усовершенствования самого ISO-9660 и повсеместного распространения его расширения Joliet, можно считать окончательно снятыми.
Почему, однако, не flash-карта? Устройство не менее надёжное и значительно более компактное. По той простой причине, что загрузка с USB-устройства возможно далеко не на всех IBM PC. Хуже того: выполняется на системах разных производителей по-разному. Признаться, даже не знаю, существует ли в отрасли единый стандарт, регламентирующий алгоритм такой загрузки. Похоже: нет. Другого объяснения возможности загрузки одной и той же "флэшки" на одних системах и полного отказа на других я не нахожу. Жаль, конечно, но всё-таки придётся предпочесть CD, возможно: пока.
Поскольку GRUB - "детище" GNU (Gnu is Not Unix!), то рядом с GNU его, конечно, и следует искать. Пользователи MS Windows не то, чтобы не могут записать диск, о котором пойдёт речь, но его создание под MS Windows, скажем, нетривиально. Тогда как под Linux процедура выглядит вполне "обыденно".
И, разумеется, любой пользователь может воспользоваться подготовленным
образом диска, предварительно загрустив файл rescue.iso.bz2 с unix.ginras.ru.
В настоящее время GRUB входит в большинство дистрибутивов Linux. Это, однако, не означает, что этого достаточно. Требуется версия не ниже 0.95, поскольку нас интересует возможность инсталляции на CD. Итак:
grub-0.9х-i386-pc.tar.gz. Положим:
grub-0.95-i386-pc.tar.gz/boot/grubboot/grub/menu.lstmkisofs -o rescue.iso \ -r -J -V "Rescue" -A "Rescue" \ -b boot/grub/iso9660_stage1_5 \ -c boot/boot.cat \ -v -no-emul-boot -boot-load-size 4 -boot-info-table \ rescue
cdrecord dev=ATAPI:0,1,0 speed=10 -multi -v rescue.iso(или любым другим доступным вам способом).
dev=ATAPI:0,1,0 и speed=10
вашем случае могут быть, разумеется, другими.Готово, однако...
Нетрудно заметить, что опции команды mkisofs аналогичны таковым при использовании isolinux. Неудивительно: принцип используется один и тот же, а поподробнее об этом - в man mkisofs.
Обратите внимание также на то, что для cdrecord использована
опция -multi, из чего следует, что диск мы записываем
мультисессионный. А почему бы, в самом деле, не дополнить со временем (или
даже изменить) содержимое нашего диска, раз мультисессионность это
допускает? Есть только одно "но": /boot/grub/menu.lst изменить в следующей сессии не удастся. То есть изменить можно: запись новой сессии с
новой версией menu.lst дополнит TOC (Table Of Contebt), что даст полную иллюзию замены файла... Вот только GRUB будет "тупо" использовать первую версию, которой с нашей точки зрения и на диске-то нет... Нелогично? Согласен. Более того: это ошибка в этом самом
iso9660_stage1_5, но... придётся пока смириться.
Мультисессионностью диска, кстати, могут воспользоваться и пользователи MS Windows: любое представляющееся вам полезным приложение (из числа запускаемых в DOS Prompt, разумеется) может быть "дописано" к предлагаемому диску в составе ещё одной сессии. Нужно только не забыть при "прожиге" исходного iso-файла "предупредить" записывающую программу, что диск - мультисессионный.
Особенностей, отличающих использование GRUB на CD почти нет. За исключением:
root не требуется: при загрузке с CD root-ом полагается именно CD. Впрочем, для адресации к разделам hdd root всё же потребуется. Как и для возврата к CD. Нетрудно догадаться, что выглядеть это будет как
root (cd)
kernel /boot/parted/kernel vga=normal \ devfs=nomount load_ramdisk=1загрузит ядро Linux с соответствующими опциями, а команда
initrd=/boot/parted/partroot.gzразместит в памяти файловую систему (Initial RAM disk). Если rescue-система предполагает её наличие, разумеется.
root (hdm,n) makeactive (hdm,n) chainload +1 boot
boot в составе menu-секции - излишня.kernel /grub/memdisk floppy initrd image
memdisk - файлик из состава syslinux, а image - образ дискеты. Если "чужая" система имеет место только как дискета (не образ), то необходимый образ можно получить командой dd или (под DOS/Windows) с помощью популярной программы rawrite.Вообще-то, это дело вкуса... Но некоторые рекомендации возможны:
nc (или - vc для патриотично настроенных), ghost от Symantec (для копирования дисков/разделов), хорошо зарекомендовавшим себя hddspeed Михаила Радченко, для любителей - PQMagic от PowerQuest. Во всех случаях, как видите, речь идёт о ПО либо свободно распространяемом, либо поставляемом производителями вместе с mainboard. Так или иначе: лицензионные проблемы - на совести составителя диска.MidNight Commander, всё необходимое для проверки и "ремонта" файловых систем, плюс сама parted, не такая красивая, как PQMagic, но и не уступающая ему в функциональности. А если принять во внимание умение работать с современными файловыми системами Linux (reiserfs, xfs и т.п.), то и превосходящая. Диск parted, кстати, снабжён очень хорошим help-ом, который вообще можно рассматривать как краткую инструкцию по использованию Linux rescue-систем.stresslinux./boot. Симпатично: не зря во Франции написан.Я сознательно не касался инсталляции GRUB на флеш-картах: для этого
iso9660_stage1_5 не требуется. Что, правда не означает отсутствия проблем. Нужно, чтобы ядро host-системы "видело" флешку, чтобы "целевой" IBM PC мог загрузиться с usb-устройства, а загружаемая rescue-система умела читать с него (чего не скажешь, например, о дискетах DOS/Windows). Скажем так: прецеденты успешной инсталляции были, а вот полной уверенности в результате пока - нет. Иногда для флеш-карт более предпочтительным оказывается syslinux: хоть он и ограничен "по определению" (читать: только с FAT, загружать: только ядра и initrd Linux), но то, что умеет - делает уверенно. syslinux, кстати, существует и успешно запускается как под Linux, так и под DOS/Windows (вплоть до XP). Впрочем, это уже совсем другая история.