Создание загрузочных CD-ROM

Замечание: Эта секция была предоставлена Rizwan Mohammed Darwe (rizwan AT clovertechnologies dot com)

Эта секция предполагает, что вы знакомы с процессом записи CD под linux. Рассматривайте ее как быструю справку на добавление возможности загрузки с создаваемого Вами CD. Для более глубокого ознакомления используйте CD-Writing-HOWTO.

Что такое El Torito?

На платформе x86, многие BIOS стали поддерживать загрузочные CD диски. Заплатки для mkisofs основаны на стандарте, называемом "El Torito". Проще выражаясь, El Torito - спецификация, в которой определяется формат загрузочного cdrom диска.

В спецификации "El Torito" говорится, что если BIOS поддерживает El Torito, то должно работать любое (SCSI или EIDE) устройство cdrom. До сих пор были протестированы только EDIDE устройства, так как ни один из протестированных SCSI контролеров до сих пор не поддерживает El Torito. Материнская плата должна явно поддерживать El Torito. Как же узнать поддерживает ли ваша материнская плата "El Torito"? Она должна поддерживать выбор загрузочного устройства HD, Floppy, Network или CDROM.

Как это работает

По стандарту El Torito, посредством BIOS, CDROM выглядит как обычный дисковод. Таким образом, вам достаточно где-либо в вашей файловой системе ISO поместить образ дискеты (а именно 1440k для 1.44 дисковода). В заголовках ISO вы помещаете указатель на этот образ. Тогда BIOS считывает этот образ с CD и создает видимость загрузки с дискеты. Например, это позволяет использовать загрузочную дискету с LILO без изменений.

Грубо говоря, первые 1.44 (или 2.88, если поддерживаются) мегабайт CD-ROM содержат образ поставляемой Вами дискеты. BIOS обходится с ним как с дискетой и загружается с него. (Вследствие этого, при загрузке с этого виртуального дисковода, Ваше настоящее устройство A: (/dev/fd0) не может быть доступно, но Вы можете попробовать /dev/fd1).

Как его заставить работать

Сначала создайте файл, скажем "boot.img", который является правильным образом дискеты, с которой Вы хотите загружаться с CD-ROM. Это должна быть 1.44 MB загрузочная дискета. Это делается следующей командой
	dd if=/dev/fd0 of=boot.img bs=10k count=144
предполагается, что дисковод - устройство A:

Поместите образ где-то в дереве каталогов, из которого будет создаваться файловая система iso9660. Хорошо поместить все файлы, имеющие отношение к загрузке в отдельный каталог (например, подкаталог "boot/" в корне файловой системы iso9660).

Предостережение - Ваша дискета обязана загружать любой initial ramdisk через LILO, а не через драйвер ramdisk ядра! Так как после запуска ядра, эмуляция BIOS-ом CD как дисковода будет обойдена и не будет выполнена. LILO загружает initial ramdisk, используя дисковые процедуры BIOS, посему эмуляция будет работать как нужно.

Спецификация El Torito также требует создания "boot catalog". Это должен быть файл размером 2048 байт, который, кроме того, что должен существовать, больше ничем не интересен. Автор mkisofs сделал автоматическое создание файла boot catalog, но для этого Вам следует указать, где он должен быть помещен на файловой системе iso9660. Желательно поместить его в то же место что и загрузочный образ, и подходяще назвать, скажем, boot.catalog.

Итак, у нас есть файл с загрузочным образом boot.img, и мы собираемся поместить его в каталог boot/ на корневой файловой системе iso9660. Мы укажем размещение файла boot catalog с именем boot.catalog в том же каталоге. Команда создания образа файловой системы iso9660 в файл bootcd.iso такова:
mkisofs -r -b boot/boot.img -c boot/boot.catalog -o bootcd.iso .
Опция -b указывает используемый загрузочный образ (заметьте, что путь указывается относительно корня файловой системы iso9660), а опция -c для файла boot catalog. Опция -r создаст соответствующие права и владельцев файлов (смотрите man-страницу mkisofs). Замыкающая "." указывает брать файлы для CD из текущего каталога.

Теперь создаем уже способный загружаться CD обычным способом - командой cdrecord.

Создание Win9x загрузочных CD-дисков

Первый шаг - получить с CD используемый загрузочный образ. Но Вы не можете просто смонтировать CD под linux и командой dd скопировать первые 1440k на дискету или в файл, такой как boot.img. Вместо этого просто загрузитесь с исходного CD-ROM.

После загрузки с Win98 CD вы попадаете в DOS приглашение на A:, который фактически - электронный диск. Установочные файлы находятся на D: или Z:. Используя dos команду diskcopy скопируйте образ A: на физические устройство, которое теперь B: Это делает следующая команда.
diskcopy A: B: 
Она работает подобно dd. Вы можете попробовать загрузиться с созданной дискеты и убедиться, что процесс загрузки такой же, как и с исходного CD. Затем с помощью dd скопируйте дискету в файл boot.img, а остальное - как обычно.