CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
22.01.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: LiveCD

Мультизагрузочный CD с использованием GRUB

Версия 1.1
Версия 1.0 - на Unix.ginras.ru

Прелюдия..

Существует немало ситуаций, когда воспользоваться винчестером бывает невозможно: несовместимость ATA режимов HDD и IDE-тракта, разрушение загрузчика или таблицы разделов, утеря паролей, нарушение целостности файловой системы после аппаратных сбоев или вирусной атаки и т.д. и т.п.

Системы, предназначенные для преодоления подобного рода трудностей, обычно называют "спасательными" (rescue) или аварийными. До недавнего времени основным носителем таких систем были дискеты со всеми их недостатками. Как то: малый объём, низкая надёжность, "неприлично" низкая, по нынешним временам, скорость доступа. Не секрет, что "флоппики" нынче умирают, а потребность в rescue-системах всё ещё существует. Вот и приходят на смену дискетам CD и flash-карты.

Как-то "сложилось", что мне несколько раз приходилось писать то в Сети, то в периодике о мультизагрузке вообще и мультизагрузчиках, в частности. Я программировал средства модификации главной загрузочной записи (MBR) сам, описывал и популяризовывал чужие... Одним словом: некоторый опыт по этому поводу имею.

С другой стороны, ещё одна "близкая" мне в последние пару лет тема - LiveCD. Вплоть до создания собственных. И мог ли я пройти мимо сообщения о том, что очередная версия моего любимого GRUB может быть инсталлирована на CD? Нет, конечно. Тем более, что собственный "парк" rescue-систем, состоящий в основном из дискет, всё чаще стал давать "сбои": старость, знаете ли... Одним словом, создать коллекцию rescue-систем на одном CD-диске показалось мне заманчивым. И вот что из этого получилось...

Почему - GRUB?

Возможность сделать CD загружаемым существует уже достаточно давно. Так, в Linux для этого обычно используется замечательный загрузчик Питера Анвина syslinux (точнее, один из его компонентов - isolinux). Всем хорош: и фонт свой можно загрузить (а значит и локализовать в полной мере), и опции загрузки обеспечить, и help вывести (хоть десяток: по штуке на каждую функциональную клавишу). GRUB, однако, как и положено "GRand Unified" умеет почти всё то же самое, но, вдобавок: собственные средства создания, просмотра и редактирования MBR (включая Partition Table), обеспечивает доступ ко многим файловым системам, позволяя искать и просматривать файлы на них и, наконец, предоставляет возможность загрузки не только ядер Linux, но и "чуждых" разделов, имеющих собственные загрузчики (BSD, Windows, etc...)

В данном случае, можно не напоминать о возможностях загрузки по сети, шифруемых паролях и других достоинствах GRUB: достаточно и того, что помимо функций загрузчика это ещё и довольно мощный инструмент, ценный в составе rescue-системы сам по себе.

Почему - LiveCD?

Повторяться, очевидно, нет необходимости: преимущества 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. Итак:

  • на ftp://alpha.gnu.org/gnu/grub/ берём последний grub-0.9х-i386-pc.tar.gz. Положим: grub-0.95-i386-pc.tar.gz
  • в каталоге, представляющем собой "заготовку" будущего диска (положим: rescue) создаём подкаталог /boot/grub
  • переносим туда все файлы из вышеупомянутого архива
  • редактируем в соответствии с собственным замыслом boot/grub/menu.lst
  • готовим iso-образ командой:
    	mkisofs -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)
    	
  • Загрузка rescue-системы на основе Linux труда не представляет. Команда
    	kernel /boot/parted/kernel vga=normal \
    	devfs=nomount load_ramdisk=1
    	
    загрузит ядро Linux с соответствующими опциями, а команда
    	initrd=/boot/parted/partroot.gz
    	
    разместит в памяти файловую систему (Initial RAM disk). Если rescue-система предполагает её наличие, разумеется.
  • Для загрузки "чужой" системы из раздела n диска m потребуются тривиальные:
    	root (hdm,n)
    	makeactive (hdm,n)
    	chainload +1
    	boot
    	
    boot в составе menu-секции - излишня.
  • Для загрузки "чужой" системы, существующей только на дискете используем:
    	kernel /grub/memdisk floppy
    	initrd image
    	
    memdisk - файлик из состава syslinux, а image - образ дискеты. Если "чужая" система имеет место только как дискета (не образ), то необходимый образ можно получить командой dd или (под DOS/Windows) с помощью популярной программы rawrite.

Чем "начинить"?

Вообще-то, это дело вкуса... Но некоторые рекомендации возможны:

  • Как это ни странно, но я бы посоветовал образ дискеты от win'98: некоторые утилиты производителей (те же "переключатели" udma-моды от Seagate и Fujitsu, updater BIOS от AWARD) существуют только как DOS-приложения. Раз уж мы "грузим" DOS, то стоит воспользоваться и пресловутым nc (или - vc для патриотично настроенных), ghost от Symantec (для копирования дисков/разделов), хорошо зарекомендовавшим себя hddspeed Михаила Радченко, для любителей - PQMagic от PowerQuest. Во всех случаях, как видите, речь идёт о ПО либо свободно распространяемом, либо поставляемом производителями вместе с mainboard. Так или иначе: лицензионные проблемы - на совести составителя диска.
  • Из rescue-систем на основе Linux мне более всего импонирует компиляция авторов parted: поддержка большинства файловых систем, MidNight Commander, всё необходимое для проверки и "ремонта" файловых систем, плюс сама parted, не такая красивая, как PQMagic, но и не уступающая ему в функциональности. А если принять во внимание умение работать с современными файловыми системами Linux (reiserfs, xfs и т.п.), то и превосходящая. Диск parted, кстати, снабжён очень хорошим help-ом, который вообще можно рассматривать как краткую инструкцию по использованию Linux rescue-систем.
  • Как "тестер" оборудования можно использовать stresslinux, но я бы посоветовал вместо этого сборку собственного, самого "свежего" ядра и соответствующей "свежести" пакет sensors. А вот утилиты "разогрева" системы и "нагрузки" IDE-устройств действительно можно позаимствовать из stresslinux.
  • IMHO, GRUB - наиболее универсальный мультизагрузчик. Нельзя, однако, отрицать, что его авторы никогда не стремились к созданию продукта с "максимально дружественным" интерфейсом. Поэтому, даже не считая коммерческих продуктов и LILO (существующего только в среде Linux), интерес представляет ещё несколько мультизагрузчиков. Стоит отметить (и, при желании, дополнить ими создаваемый "джентльменский набор") два из них:
    • SmartBootManager группы "китайских товарищей", пытающийся определить все загружаемыеустройства и их разделы. С переменным, прямо скажем, успехом.
    • И gujin Etienne LORRAINE который, помимо разделов, обнаруживает на дисках ещё и ядра Linux, правда, только если последние расположены в каталогах /boot. Симпатично: не зря во Франции написан.

А флешка?

Я сознательно не касался инсталляции GRUB на флеш-картах: для этого iso9660_stage1_5 не требуется. Что, правда не означает отсутствия проблем. Нужно, чтобы ядро host-системы "видело" флешку, чтобы "целевой" IBM PC мог загрузиться с usb-устройства, а загружаемая rescue-система умела читать с него (чего не скажешь, например, о дискетах DOS/Windows). Скажем так: прецеденты успешной инсталляции были, а вот полной уверенности в результате пока - нет. Иногда для флеш-карт более предпочтительным оказывается syslinux: хоть он и ограничен "по определению" (читать: только с FAT, загружать: только ядра и initrd Linux), но то, что умеет - делает уверенно. syslinux, кстати, существует и успешно запускается как под Linux, так и под DOS/Windows (вплоть до XP). Впрочем, это уже совсем другая история.




Комментарии

аноним, Sat May 10 03:21:54 2008:
Может мой вопрос не совсем в тему. Хотелось бы спросить у автора Владимира Попова, без всяких сомнений человека очень осведомоенного в вопросах мультизагрузки, не планируете ли вы написать что-то по поводу проблемы и способа ее решения с SP1 (обновление KB935509) для Windows Vista Ultimate/Enterprise, который делает невозможной загрузку с любого стороннего загрузчика отличного от родного виндовского.
http://www.linux.org.ru/view-message.jsp?msgid=2663589&lastmod=1210071697948

У многих уже серьезные проблемы появились :(((
аноним, Fri May 9 12:17:10 2008:
Как я понял, эта статья не для пользователей Windows, а для создателей загрузочных дисков. Так что косяки в сторону автора не обоснованы! Более того, Вы показали свою тупость и абсолютную безграмотность в этом вопросе.
Для тех, кто не понял, возьмите готовые загрузочные диски и пользуйтесь. Например MultiBoot или Multidistro или rescue какой-нибудь, их навалом в интернете!
sasha_k, Wed Apr 30 10:05:00 2008:
2 Novice
"Умность" статьи адекватна сложности решаемой задачи. Лучше попробовать задать вопрос по существу.
аноним, Wed Apr 30 08:04:55 2008:
2 Novice

В чем проблема?
Novice, Wed Apr 30 08:01:38 2008:
Статья очень умная, но я хотел бы получить информацию более понятную для человека, который недавно стал работать с LINUX. Я сейчас пытаюсь востановить свою LINUX систему через WINDOWS XP и ищу помощь в интернете, но не сомневайтесь - я догадываюсь, что значит фраза "загрузка чужой системы из раздела m диска n".

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds