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

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

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

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

Desktop
Internet
Internet-серверы
Безопасность
Бизнес/Офис
Игры
Мультимедиа
Наука
Операционные системы
Программирование
СУБД
Создание веб-сайтов
Утилиты

Статьи

Дискуссионный клуб
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. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

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

От редактора: это довольно старая статья, публиковавшаяся некогда в журнале Upgrade. Но, судя по вопросам на форумах, актуальности она не потеряла, а Upgrade, как известно, не балует читателей онлайновыми версиями собственных материалов. В связи с чем она и размещается здесь.
Алексей Федорчук

Прелюдия

Существует немало ситуаций, когда воспользоваться винчестером бывает невозможно: несовместимость 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.zip с 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 Contents), что даст полную иллюзию замены файла... Вот только 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). Впрочем, это уже совсем другая история.




Комментарии

Страницы комментариев: 1 :: 2 :: следующая

аноним, Tue Apr 28 20:11:27 2009:
Как сделать чтобы папка bcdw грузилась
а то сразу ставится XP
аноним, Thu Dec 11 15:53:55 2008:
Grub 4 DOS умеет грузить с флеш-карты?
Алексей Федорчук, Tue Oct 30 14:23:26 2007:
2 027
> есть халявная FreeDOS
насколько я понимаю (если ошибаюсь - прошу поправить), FreeDOS - это доработка Caldera'вской OpenDOS, которая, в свою очередь, представляет собой DR DOS, которую Caldera купила и успела открыть до того, как скурвилась, превратившись в SCO.
Если так - то по крайней мере 15-летний достойный стаж за ней числится. Во времена моего до-выньдового эникейства я и сам DR DOS пользовал, и всем своим ее ставил. Потом оказалось, что вынь-да 3.1 поверх DR DOS работает криво - пришлось отказаться.
Тогда еще, помнится, тоже судебный процесс по этому поводу был.
аноним, Tue Oct 30 13:35:15 2007:
После доса 7.10 был 8-ой (в миллениуме). Хоть я и линуксоид, но в этом разбираюсь лучше
027, Tue Oct 2 02:32:12 2007:
И ишшо про досю. Маленький ликбез. Простите за назойливость, уважаемые никсоиды :)
Последняя MSDOS, 7.10, появилась в вынь95OSR2, и с тех пор не менялясь. Ни в 98-й (обеих), ни в кастрате миллениуме.

Сколько я с ее помощью шабашек зашабашил!.. Ей Богу, купил бы за 30 бабкингов (кажись, столько 6.2 стоила), купил бы из чистой благодарности. Так не продают же, уроды.
Есть еще PTS-DOS (25 тугриков, или 5 за ОЕМ, вроде), есть халявная FreeDOS. Они, наверное, хорошие. Охотно верю. Один только у них недостаток. Они не обкатаны двадцатилетней практикой. И никаких заслуг они передо мной, старым халявщиком, не имеют! :)

***

Что-то в моем панегирике не так...

***

А! Понял. Дося, она не для повседневных юзверьских дел. Тут она, конечно же, полный ацтой. Дося, она для аварийных работ. Когда нужно быстро спасти и сохранить. Восстанавливать, это потом.

С уважением, Анатолий.
027, Tue Oct 2 02:06:37 2007:
>На сегодняшний день наиболее продвинутый вариант - grub4dos. Используя этот прекрасный и, действительно, "лучший в мире загрузчик", можно загрузить компьютер из любого положения (если только он вообще способен загружаться).
>С ним можно: загрузиться из ISO-образа на жестком диске (естественно, если в ядро включена соответствующая поддержка); загрузить "недоделанный" 98-й
Я ничуть не спорю - просто не знаю. Так, на всякий случай сообщу.
Загрузчикb BСDW и тот, что на Hiren's CD (каюсь, так и не посмотрел, что там), оба умеют грузить все, что угодно, из образа IMA. Любых размеров, цветов и пропорций. Безо всякой поддержки ведра.

Оно, конечно, WinImage программуля шароварная... но образы, с ее помощью созданные, под ее лицензию не подпадают. А их есть множество готовых.
027, Tue Oct 2 01:50:36 2007:
А можно попинать немного? ;)

> Тем более, что собственный "парк" rescue-систем, состоящий в основном из дискет, всё чаще стал давать "сбои": старость, знаете ли...
А образы на винте хранить религия не позволяет? O_o

>Как это ни странно, но я бы посоветовал образ дискеты от win'98
Не надо этого советовать! Нет, конечно, если реципиент в досе ни бум-бум, то это хоть что-то. Но, блин, ведь этот набор дебил составлял. Мелкосовт, фуйли.
Куча ненужного хлама,а остро необходимого просто нет. Нет даже текстового редактора edit из того же доса. Зато есть ebd.sys - убиццаапстену, какая необходимая вещь.

Дос - это отдельная песня. Когда-то не было никакого линуха в наших широтах, отдельных двинутых фидошников не считаем. По досом поначалу просто жили, потом стали плодиться различнейшие _винды_, но все серьезные дела с винтами продолжались делаться исключительно из под дос. И до сих пор серьезные дела с винтами доверить винде может только ламер. (Линуксу - не знаю, я в линуксе чайник зеленый, посмотрел на попавшиеся под руку утилиты для работы с партишн тейбл и бутрекордами: чо-т не то. Мутные какие-то).

И набор утиля на дискетке вместо той, что от 98 (от 95-й на самом деле)... место-то ограничено... вырабатывался жестко. Соственно, еще до появления 95-й делался. Собственно, еще во времена дос 6.0 делался. Поэтому:
>Раз уж мы "грузим" DOS, то стоит воспользоваться и пресловутым nc (или - vc для патриотично настроенных)
Какой, нахрен, нортон! При чем тут патриотизм? Места Петя жрет на просто много, а очень много (напоминаю, мы тут это... о дискетах;), да еще и глючный. Волков сверхкомпактен - 64 кБ - и ни разу за 23 года практики не подвел. Просто ни разу. Петя подводил, особенно пятый - уебище то еще. До сих пор VC 4.01 юзаю - ни единого глюка. Хотя про фат32 с ее гигантскими для 90-х годов размерами дисков и файлов волк ни сном ни духом. Работает от дос3.2 (кто помнит такую, а?) до хрени.

И еще.
Дося, при все ее убогости, есть стандарт покруче ворда с ехелем. Работает на любом железе, хоть как-то совместимом с х86. Помню разве что первые сказевые винты (вернее кривые контроллеры на ISA), над которыми приходилось поплясать с бубном. И это все.

Поэтому дос с набором утилит для работы с дисками держал, держу и держать буду на всех своих загрузочных сидюках/флешках. Вплоть до mhdd (для начинающих) и лабы РС3000 (для знающих железячников). Чего и вам желаю.

ЗЫ насчет загрузчиков.
Есть хороший загрузчик для CD:
BCDW http://bootcd.narod.ru
Давно пользуюсь. Умеет грузить все. Конфигурируется легко. Проблем с записью из под винды ноль (читай мануал).
Нету, конечно, умения грузить с фтп, нету встроенной консоли (пипец какая нужная каждую загрузку фича), зато, когда приходится перезагружаться по двадцать раз подряд (как! вы не плясали с бубном до одурения? тогда эта реплика не для вас), ассюсяесъ разницу с (очень хорошим, могучим и навороченым, кто ж спорит) но, мля, таким тормознутым грубом!

ЗЗЫ.
На домашнем компутере, вот этом самом, стоит груб. На своем-то плясок с бубном делать не надо.

ЗЗЗЫ. Есть еще довольно известный Hiren's CD. Рекомендую пощупать начинающим шаманам.

ЗЗЗЗЫ. Нортон коммандер писал сам Нортон до третьей версии. Четвертую писал некто Соча, написал вполне прилично. Правда, известный глючок с копированиеи ниасилил. Зато глюк с локализацией (знаменитая русская "р") асилил. Пятую же захерачили "праграммысты" из семантика.
Владимир, Tue Sep 25 18:19:33 2007:
Хорошая статья (для начала), но она действительно устарела. На сегодняшний день наиболее продвинутый вариант - grub4dos. Используя этот прекрасный и, действительно, "лучший в мире загрузчик", можно загрузить компьютер из любого положения (если только он вообще способен загружаться). С ним можно: загрузиться из ISO-образа на жестком диске (естественно, если в ядро включена соответствующая поддержка); загрузить "недоделанный" 98-й (который не грузится, если на компьютере >~ 1 ГБ ОЗУ); в последние версии включен модуль загрузки cdrom, и т.д. Вообщем, эта статья требует ОЧЕНЬ существенных дополнений...
ник, Thu Aug 16 16:13:14 2007:
Аноним, для начала неплохо бы грамматику в школе повторить.:) Хотя я тоже в ней не силен!
Celarent, Wed Aug 15 11:45:29 2007:
Спасибо за статью. Просто и понятно.

Страницы комментариев: 1 :: 2 :: следующая

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

Новости:

Все новости на 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