ФЭНДОМ


Введение

Использование образа компакт-диска при разработке ОС гораздо более удобно, нежели ставший классическим способ с дискетой.

Удобство заключается в том, что написаны превосходные утилиты, позволяющие за считанные секунды (1-3 секунды) создать новый (без остатков старых данных, неизбежно остающихся, при перезаписи файлов на дискете) готовый образ с установленной системой, и сразу же загрузить систему с этого образа в эмуляторе (я сам в качестве эмулятора использую QEmu).

Практика

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

Сперва, создаю каталог с будущим содержимым компакт-диска. Назову каталог cdrom. В этом каталоге первым делом размещу загрузчик (в подкаталоге boot/grub/).

Сам GRUB в данном случае состоит из одного файла stage2_eltorito и конфигурационного файла menu.lst

Конфиг в может включать в себя следующее:

# задержка перед загрузкой ОС
timeout 3
# выбранная по умолчанию ОС
default 0
title FOS - FOS is Operating System (VERSION 0.0.29.1, BUILD 12887)
    root(cd0)
    kernel /root/kernel
title DOS/Windows
    root(hd0)
    chainloader +1

Путь к ядру в данном случае указан так - /root/kernel. Создаю каталог root, кладу в него ядро - файл kernel.

Теперь можно приступать к созданию образа. Для этого надо воспользоваться утилитой mkisofs. Версия под Windows есть на этой странице.

Создание образа производится в одно движение:

В Windows:

mkisofs -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table \
   -iso-level 3 -r -J \
   -publisher "Legos (http://osdev.ru/)" \
   -o image.iso  C:\projects\os\cdrom\


В Linux/*BSD:

genisoimage -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table \
   -iso-level 3 -r -J \
   -publisher "Legos (http://osdev.ru/)" \
   -o image.iso  ~/projects/os/cdrom/


Где:

  • projects\os\cdrom\ - путь к нашему каталогу с содержимым компакт-диска;
  • boot/grub/stage2_eltorito - расположение загрузчика в этом каталоге (GRUB надо размещать именно в этом каталоге!)
  • -publisher "Legos (http://osdev.ru/)" - копирайты.

Нажимаем "ввод", и, если всё правильно сделано, видим примерно следующее:

mkisofs -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table \
             -iso-level 3 -r -J \
             -publisher "Oleg Fedorov (o.s.fedorov@gmail.com)" \
             -o image.iso /home/oleg/fos/tmp/iso.image
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
Total translation table size: 2048
Total rockridge attributes bytes: 20088
Total directory bytes: 88064
Path table size(bytes): 564
Max brk space used 20000
591 extents written (1 MB)


Всё! Готовый образ имеет имя image.iso. Образ прекрасно сжимается архиватором, и в сжатом виде для простых ОС имеет размер менее двух сотен килобайт!

Ссылки