Изготовление мультизагрузочного CD-диска |
Исследуя в очередной раз просторы Интернета, я обратил внимание на то, что вопросы создания "многоОСных" 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/ содержит (кое-что я удалил)...
Есть ещё несколько неплохих сайтов, откуда вы можете скачать образы загрузочных дискет: 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] ----------------------------------------------------------------------------- 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] Последняя возможность заинтересует
тех, кто хочет разместить отинсталлированную операционную систему
на компакт-диске. Copyright (C) 2002, Juraj Sipos. Copying license http://www.linuxgazette.com/copying.html
Published in Issue 85 of Linux Gazette, December 2002 |
Вернуться на главную страницу |