Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Изготовление мультизагрузочного CD-диска.

Автор : Juraj Sipos
Перевод : Александр Куприн

Исследуя в очередной раз просторы Интернета, я обратил внимание на то, что вопросы создания "многоОСных" CD почти не освещены. Немногие производители специализированного коммерческого софта под Windows включают в свои продукты возможность создания загрузочных компакт-дисков. Но мне ещё не приходилось встречать программу, позволяющую создавать мултизагрузочные диски. На мой взгляд, создание таких дисков в среде Linux задача более простая, чем в Windows. Существует множество доступных утилит, которые помогут вам создать загрузочный CD с Linux'ом. Но вот мултизагрузочный CD -- это уже деликатес. И какой! Имея такой диск, вы становитесь счастливым обладателем нескольких операционных систем в одной упаковке. На этом диске можно разместить несколько версий Linux -- с поддержкой журналируемых файловых систем и без них, с дополнительными утилитами для восстановления данных и пр. Кроме этого, на диске могут быть размещены и другие ОС -- BSD, QNX, Plan9 и т.д. Общим числом до 10 (десяти)! Впечатляет? Читайте дальше.

Почему это может быть полезно (и интересно) для вас? Представьте себе -- вы используете в своей работе Linux и FreeBSD. Или, к примеру, вы установили на свой компьютер несколько дистрибутивов Linux и вдруг с системой что-то случилось и нет никакой возможности получить доступ к данным обычным путём. Либо вам придётся воспользоваться загрузочной дискетой (но тут могут возникнуть проблемы -- например, вы используете журналируемую файловую систему типа XFS или шифруемую файловую систему и вам нужно 5 загрузочных дискет, чтобы получить к ним доступ), либо создать мултизагрузочный CD с несколькими версиями ядра и набором утилит на все случаи жизни. Думаю, небольшой CD с 10-ю операционными системами избавит вас от заблуждений, что в этом мире всегда что-то идёт неправильно и с этим ничего невозможно поделать.

Работая над этой статьёй, я пытался сделать её как можно более простой для понимания. Особенно для новичков. Я, по возможности, избегал технического языка, который может быть не всем понятен. Надеюсь, мне это удалось, и тем самым я смог привлечь к статье внимание большего числа читателей.

Загрузочный CD использует так называемый стандарт El Torrito. Более подробно с ним можно ознакомится на http://www.cdpage.com/Compact_Disc_Variations/danaboot.html

Для нас важной информацией будет то, что мы можем записать на компакт-диск до 10-и операционных систем и использовать в дальнейшем этот диск на любой машине, чей BIOS поддерживает функции загрузки с CD. Загрузочный ISO-образ может быть создан с возможностью эмуляции дискет объёмом 1.44MB или 2.88MB, либо жёсткого диска.[1]

От слов к делу -- практическое руководство по подготовке мултизагрузочного CD

Во-первых, в вашем распоряжении должен быть образ загрузочной дискеты под DOS или Linux. Образ (или загрузочный образ) -- это файл, представляющий из себя копию загрузочной дискеты[2]. Существует несколько типов образов. Для создания одного из них вы можете воспользоваться командой dd (disk dump) и создать образ одного из разделов файловой системы (в качестве примера здесь показано создание образа первого раздела файловой системы [hda1][3]):

dd if=/dev/hda1 of=/my_image.file

Что-то у меня сомнения по поводу размера получившегося файла... Прим. ред.

Файл my_image.file будет создан и размещён в корне вашей файловой системы. Не каждый образ является загрузочным -- это зависит от содержания, поэтому хорошей идеей будет запастись "энным" количеством образов (под Linux или BSD). Проще всего это сделать загрузив такие образы из Интернета:

http://www.ibiblio.org/pub/Linux/system/recovery/

Ibiblio является одним из лучших архивов в Сети. Образы загрузочных дискет вы можете найти по указанной выше ссылке. При этом вам не нужно беспокоится о том, чтобы делать их загрузочными -- всё уже сделано за вас[4]. Однако, если вы хотите создать образ загрузочной дискеты своими руками, то можете воспользоваться утилитами Bootkit, CatRescue, SAR, disc-recovery-utils и им подобными, которые помогут вам создать загрузочные дискеты (или их образы).

Файлами, которые нам понадобятся для того, чтобы создать мултизагрузочный компакт-диск, будут fbsd-flp-1.0.3.bin (загрузочный образ дискеты FreeBSD размером 2.88MB), tomsrtbt или создайте собственные образы, сняв копии с загрузочных дискет, которые находятся в вашем распоряжении. Вставьте дискету (DOS или Linux) в дисковод и введите следующую команду:

dd if=/dev/fd0 of=boot.img bs=512 count=2880[5]

Неплохой идеей будет посетить http://freshmeat.net и провести поиск по ключевому слову "mini" -- возможно вы обнаружите несколько мини-дистрибутивов Linux, о которых даже и не подозревали.

Сайт http://www.ibiblio.org/pub/Linux/system/recovery/ содержит (кое-что я удалил)...

  • Bootkit-1.01.tar.gz
  • CatRescue101E.tgz
  • SAR-2.25.tar.gz
  • banshee-linux.0.61.tar.bz2
  • brd-2.0.tar.gz
  • disc-recovery-utils-1.0.tgz
  • fbsd-iso-1.0.3.bin.gz
  • fspace.tgz
  • genromfs-0.5.1.tar.gz
  • mulinux-5r0.lsm
  • mulinux-5r0.tgz
  • picoboot-0.95.tar.gz
  • rescue02.zip
  • resque_disk-2.3.99-pre9-A.tgz
  • rip-10.exe
  • rip-51.iso.bin
  • sash.tar.z
  • tomsrtbt-2.0.103.ElTorito.288.img.bz2
  • tomsrtbt-2.0.103.dos.zip
  • trccs-0.8.1r2.iso.bz2
  • trccs-0.8.1r2.tar.bz2
  • trccs-0.8.1r2_boot_disk.img.bz2
  • yard-2.1.tar.gz
  • yard-prefabs-2.tgz
  • zdisk-2.14.tar.gz

Есть ещё несколько неплохих сайтов, откуда вы можете скачать образы загрузочных дискет:

LIAP (http://www.liap.eu.org/): LIAP -- это "Linux в пилюлях" -- сайт содержит множество образов 1.44MB'ых дискет с различными утилитами и разными версиями ядра для борьбы со всякого рода неприятностями.

LEKA RESCUE FLOPPY (http://leka.muumilaakso.org/): Leka Rescue Floppy -- миниатюрный дистрибутив, помещающийся на 1.44MB'ой дискете.

TOMSRTBT (http://www.toms.net/rb/): Tomsrtbt (Tom's Root Boot) мини-дистрибутив, содержащий утилиты по восстановлению данных (очень хорошие). Вы можете загрузить образ на 2.88MB с вышеуказанного сайта.

Кроме этого вы можете скачать образы загрузочных дискет для DOS. Посетите, например, http://www.bootdisk.com и скачайте их, если вам это необходимо. Сайт содержит образы загрузочных дискет для DOS с версии 5.00 по 6.22, Win 95/98/ME, наборы для NT4/NT5, DrDOS 7.х и пр. Здесь же вы найдёте загрузочную дискету для FreeDOS.

Немного терминологии. Существует разница между загрузочным образом дискеты и ISO-образом, который записывается на CD. Что нам нужно, так это загрузочные образы дискет, из которых мы создадим ISO-образ.

1) Вы можете подготовить образы загрузочных дискет при помощи команды:

dd if=/dev/fd0 of=/my_image.img

или вы можете скачать эти образы из Интернета (см. ссылки, указанные ранее). Теперь вернёмся "домой", в Linux. :) Создайте каталог /CD и скопируйте в него загрузочные образы (помните, их не должно быть больше 10). Проверьте, чтобы имена файлов соответствовали формату 8.3 (до 8 символов для имени и до 3 для расширения). Это необходимо для совместимости с DOS-программой makebt.exe, которой мы воспользуемся чуть позже.

2) Если вы хотите использовать оставшееся свободное место на CD (10 образов загрузочных дискет займут около 14MB, максимум -- 28MB), скопируйте утилиты в поддиректорию /CD/Soft. Информацию о том, как получить доступ к компакт-диску (в среде Linux и DOS) дана ниже.

3) Теперь можно создать ISO-образ:

mkisofs -b image.img -c boot.cat -J -l -R -r -o /cd.iso /CD

Файл "boot.cat" или "boot.catalog" будет автоматически создан, поэтому нет необходимости создавать его в директории /CD. Просто выполните команду -- всё остальное она сделает за вас. В качестве загружаемого образа вы можете указать имя любого образа из тех, что скопированы в /CD. Он и будет тем образом, который будет выполняться при загрузке с CD. Размер образа должен быть 1.44MB или 2.88MB.

4) Файл cd.iso будет создан в корневом каталоге / (/cd.iso). Проверить этот файл можно смонтировав его (mount /cd.iso /mnt -o loop). Если всё в порядке, то вы сможете просмотреть содержимое ISO-файла в директории, к которой его подмонтировали (в нашем случае это /mnt). Если этот ISO-образ записать на CD, то мы получим "одно-загрузочный" CD.

5) Теперь нам необходимо отредактировать ISO-образ таким образом, чтобы получить возможность мултизагрузки оставшихся образов. Тем самым мы включим их в загрузочное меню, которое будет отображаться при загрузке с CD. Меню будет представлено пунктами, пронумерованными от 1 до 10 (если вы создадите все 10 образов). Выбор будет осуществляться указанием номера необходимой операционной системы.[12]

6) После того как мы закончим редактирование -- можно будет записывать CD.

Поскольку у меня нет времени, чтобы написать скрипт на Perl, который бы редактировал ISO-образ и т.к. редактирование ISO-образа может оказаться делом сложным и для некоторых запутанным (а я хотел сделать статью как можно более простой в восприятии), то лучшим выходом из создавшегося положения будет использование программ, свободно доступных в Интернете. Одной из них является makebt.exe. Когда-то я нашёл эту программу в каком-то из закоулков Сети, но, к сожалению, первоисточник найти уже не могу, поэтому я выложил её на своём сайте http://www.tankred.sk/~juro/freebsd/makebt.zip. Где вы и сможете её скачать.

Вы можете запустить makebt.exe под DOSEMU или BOCHS (http://bochs.sourceforge.net) или загрузить DOS с системной дискеты, образы которых доступны на http://www.bootdisk.com или создать загрузочную дискету с FreeDOS и, загрузившись с дискеты, запустить утилиту makebt.exe. Если у вас нет раздела под DOS, тогда выходом из сложившейся ситуации будет использование эмулятора DOSEMU -- он может получать доступ к разделам Linux, где и будет лежать cd.iso и ждать ваших "очУмелых ручек".

Когда вы запустите makebt.exe, он попросит ввести полный путь[6] и имя файла ISO-образа, который нужно отредактировать и вы увидите экранную форму, в которую затем нужно ввести имена образов загрузочных дискет:[7]

-----------------------------------------------------------------------------
Make Multiple Boot CD-ISO Image Modifier ver 1.02
ISO File path and name: e:\temp\cd.iso
Bootable Disk Image Boot media type Default LBA
------------------- --------------- ------- --------
BC ) BOOT.CAT
1 ) FBSD.IMG 1.44M Floppy Y
2 ) LINUX.IMG 2.88M Floppy -
3 ) PLAN9.IMG 1.44M Floppy -
4 ) QNX.IMG 1.44M Floppy -
5 ) OPENBSD.IMG 2.88M Floppy -
6 )
7 )
8 )
9 )
10 )




TAB = move between fields, up/down arrows = move between rows, F1 = Confirm
Use left and right arrow to choose emulation type
-----------------------------------------------------------------------------

BC означает Boot Catalog (загрузочный каталог). Просто укажите boot.cat и и не волнуйтесь ни о чём, т.к. вы уже использовали эту строку в опциях при вызове команды mkisofs (главное, что ISO-образ уже содержит строку "boot.cat"). Теперь введите имена загрузочных образов. Вы должны вводить их имена в формате 8.3.

Кроме имени образа вы должны указать вид эмуляции -- эмуляция 1.44MB дискеты или 2.88MB. Мы будем использовать только эмуляцию на 1.44MB и 2.88MB, но если хотите поэкспериментировать с эмуляцией жёсткого диска, то создайте раздел Linux на 650MB и скопируйте туда файловую систему с вашей машины[8]. Для выбора типа эмуляции используйте клавишу управления курсором (стрелка вправо). Кроме того, в колонке "Default" вы должны указать, который из образов должен быть загружаемым по-умолчанию. Для этого нужно нажать "Y". И последнее (хотя оно должно быть первым) -- переход между горизонтальными полями ввода -- клавиша "TAB". Перемещение вверх-вниз осуществляется как обычно -- соответствующими клавишами управления курсором.

Когда закончите вводить данные, нажмите клавишу F1 (возможно придётся нажать её несколько раз -- программа может среагировать на ваше нажатие не сразу). makebt.exe обладает зачатками интеллекта (точнее вежливости) -- если вы ввели неверное имя файла, то она сообщит об этом (после нажатия клавиши F1). Не включайте никаких описаний для загрузочных образов в меню, которое появится после нажатия F1, поскольку эта особенность используется главным образом в SCSI CD-ROM'ах и я не изучил её досконально.

Ну, вот и всё. Теперь можно записывать CD.

cdrecord -v speed=8 dev=0,0,0 /cd.iso[9]

Когда вы загрузитесь с CD, то не увидите описания для операционных систем -- только двузначные номера (в конце строки в скобках)[10]. У меня не было достаточно времени для экспериментов, чтобы разобраться с этим, поэтому хорошей идеей будет записать порядковые номера пунктов меню и описание к ним, чтобы быть в курсе какая система и откуда грузится.

Здесь мы имели дело с образами дискет, являющимися системными, поэтому если вы загрузились с CD, который только, что создали, то вы можете получить доступ к вашему CD-ROM'у выполнив команду "mount /dev/hdc /mnt". Тем самым вы получите возможность воспользоваться утилитами, которые сохранили в каталоге /Soft. В случае с системой DOS вам необходимо добавить в config.sys драйвер для доступа к CD, а в autoexec.bat прописать загрузку программы mscdex.exe.

Если вы хотите создать под Linux программу, которая будет модифицировать ISO-образ, то попробуйте сравнить оригинальный ISO-образ с тем, который получится после внесения в него изменений утилитой makebt.exe. Для этого подойдёт утилита сравнения двоичных файлов bdiff, автор Giuliano Pochini. Bdiff небольшая программка, делающая с двоичными файлами тоже, что и известные утилиты diff и patch с текстовыми файлами. Найти её можно здесь: http://space.virgilio.it/[email protected]/. Учтите, что оба ISO-образа должны быть одинакового размера. Утилита сравнения двух файлов выдаст вам смещение, где записан флаг, устанавливающий режим мултизагрузки. Это сектор 17 (Boot Volume Descriptor) и Boot Catalog Sector[11].

Я создал множество мултизагрузочных CD, используя всё вышеизложенное и проблем с их созданием не было никаких. Однако, учитывая то, что первый блин всегда может выйти комом, советую вам использовать для ваших экспериментов CD-RW диски. Удачи!

Примечания переводчика

[1] Последняя возможность заинтересует тех, кто хочет разместить отинсталлированную операционную систему на компакт-диске.
[2] Для тех, кто не в курсе, что это такое -- речь идёт о точной посекторной (или, если хотите побайтовой) копии дискеты. Т.е. первые 512 байт образа -- это boot-сектор, далее -- всё зависит от типа файловой системы, размещённой на дискете.
[3] Автором статьи делается упор на то, что это должен быть Linux-раздел. Хотя, на самом деле, это не обязательно -- с таким же успехом на его месте может быть и DOS-раздел. Главное, чтобы он был primary, а не extended.
[4] Прошу учесть, что не все файлы по указанной ссылке являются загрузочными образами. Ищите те, что содержат в имени файла "iso" или "img". Да, и к размеру присматривайтесь -- образы дискет будут двух размеров -- 1.44MB или 2.88MB, с учётом компрессии.
[5] Учтите, если вы планируете создать копию с дискеты, чей размер отличается от 1.44MB, вы должны указать для ключа count другое значение. Для 2.88MB -- это будет в два раза больше -- 5670. Вообще-то ключи bs и count нужны только в том случае, если размер дискеты отличается от стандартной -- 1.44MB (хотя где-то же должны жить и здравствовать дисководы на 2.88MB).
[6] Обращаю ваше внимание на то, что обязательно нужно указать полный путь к ISO-образу. Даже если makebt.exe и ISO-образ и находятся в одном и том же каталоге. Проверено -- на эти грабли я уже наступил. :)
[7] Вот, что мне удалось обнаружить, создавая свой собственный мултизагрузочный CD: оказывается первым пунктом меню при загрузке с CD идёт тот образ загрузочной дискеты, что был указан в опциях программы mkisofs. Поэтому в программе makebt.exe нужно указывать только "недостающие" образы.
[8] Увы, но в этом месте автор, что-то очень "мутно" изъясняется, что дальше делать с таким разделом -- в оригинале статьи стоит фраза оканчивающаяся словом "experiment" и многоточие. Скорее всего автор забыл дописать предложение, планируя к нему вернуться позже. Писать свои домыслы на эту тему, не проверенные практикой, не буду, чтобы не загружать вам мозги.
[9] Если будете писать на CD-RW, не забудьте указать "4-ю скорость", а не 8-ю как это указано в примере.
[10] Очень странная ситуация: для первого пункта меню -- это образ указанный при вызове программы mkisofs -- сигнатура отлична от нулевой -- (19). Первым я поставил образ загрузочной дискеты для Windows'98. Для всех остальных пунктов, которые были добавлены при помощи makebt.exe -- (00).
[11] К сожалению, утилита bdiff хороша, как инструмент для "латания" двоичных файлов. Этого у неё не отнимешь. Но вот для получения информации о том, где находятся "разночтения" в файлах, лучше подойдёт утилита cmp из пакета diffutils.
[12] Не уверен, что это ошибка автора, но создавая свой собственный "десятиОСный" загрузочный CD, я обнаружил следующую странность. Первые девять пунктов меню нумеруются от 1 до 9. Далее для 10-го и 11-го (!) пунктов меню используются в качестве "горячих" клавиш символы ":" и ";", соответственно. Методом "научного втыка" я выяснил, что первый пункт соответствует тому образу, что был указан в опциях команды mkisofs. А второй -- тому образу, что указан первым в списке образов в программе makebt.exe (в нашем примере это fbsd.img). При этом оба этих образа не обязательно должны совпадать. Таким образом у нас получается 11 вариантов загрузки! Но если бы всё было так хорошо, то это было бы очень странно. Законы Мерфи никто не отменял. О чём это я? А проблема в следующем -- я не смог найти горячие клавиши для пунктов 10 и 11. Хотя там и указаны символы ":" и ";", но их нажатие ни к чему не приводит. Попытка "потоптать" всю клавиатуру не дала никаких результатов. Возможно кому-то из читателей удастся решить эту проблему. В таком случае не забудьте поделиться как. И последнее. Идеи, изложенные в статье проверялись в среде Junior 2.0, обновлённом из Сизифуса. Пишущий CD-привод -- SONY.


Обсудить данную тему на нашем форуме "Все о Linux"