Загрузочный CD/DVD с GRUB : boot CD/DVD disk, GRUB
Здесь я расскажу только как сделать диск загрузочным. Мы не будем размещать на диске никакую ОС — это не LiveCD, но используя этот диск можно загрузить любую ОС, если загрузчик этой ОС утрачен. Например Windows, при установке, всегда переписывает MBR под себя.
Создаём дерево из которого будем делать файловую систему:
mkdir iso
mkdir iso/boot
mkdir iso/boot/grub
cp stage2_eltorito iso/boot/grub/stage2_eltorito
chmod 644 iso/boot/grub/stage2_eltorito
Файл stage2_eltorito можно взять из бинарного дистрибутива GRUB; никаких других файлов не надо.
Файл с меню можно положить в iso/boot. Я предпочитаю вкомпилировать меню статически в GRUB. Удачными мне представляются следующие опции компиляции:
./configure —prefix=$HOME/grubable/bin \
—disable-minix \
—disable-xfs \
—disable-gunzip \
—disable-md5-password \
—disable-hercules \
—disable-serial \
—enable-preset-menu=$HOME/grubable/menu.lst
После конфигурирования собираем GRUB (make). Можно протестировать результат (make test). Устанавливать GRUB для наших целей не обязательно. Нам нужен только один файл — stage2_eltorito.
Обратите внимание: файл stage2_eltorito должен быть доступен для записи.
Теперь делаем образ:
mkisofs -R \
-b boot/grub/stage2_eltorito \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o boot.iso \
iso
Полезными так же являются опции -c и -f, они могут вам пригодиться.
И пишем образ:
burncd -v -f /dev/acd0 data boot.iso fixate
Загрузочный CD готов.
Для тех, кому не хочется самостоятельно составлять конфигурационный файл GRUB, приведу пример:
default 0
timeout 300
color light-green/black black/green
###############
### FreeBSD ###
###############
title FreeBSD /dev/ad0s1a
root (hd0,0,a)
kernel /boot/loader
title FreeBSD /dev/ad0s2a
root (hd0,1,a)
kernel /boot/loader
title FreeBSD /dev/ad0s3a
root (hd0,2,a)
kernel /boot/loader
title FreeBSD /dev/ad0s4a
root (hd0,3,a)
kernel /boot/loader
#############
### Linux ###
#############
title Linux (/boot/vmlinuz) /dev/hda1
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1
title Linux (/boot/vmlinuz) /dev/hda2
root (hd0,1)
kernel /boot/vmlinuz root=/dev/hda2
title Linux (/boot/vmlinuz) /dev/hda3
root (hd0,2)
kernel /boot/vmlinuz root=/dev/hda3
title Linux (/boot/vmlinuz) /dev/hda4
root (hd0,3)
kernel /boot/vmlinuz root=/dev/hda4
###############
### Windows ###
###############
title Windows
rootnoverify (hd0,0)
chainloader +1
makeactive
###################
### halt/reboot ###
###################
title REBOOT
reboot
title HALT
halt