вторник, 3 августа 2010 г.

Syslinux: создание меню загрузчика

Мне захотелось сделать свой "спасательный" LiveCD что бы там было все что мне нужно и ничего лишнего.В качестве основы я решил взять консольную версию SlavankaOS в которой уже почти все было, осталось только добавить пару программ и "прикрутить" меню. Вот на меню надо остановиться поподробнее. Я три года года использовал RIPLinux в качестве "спасательного" диска и точно знаю что мне нужно от меню:
 - чтобы можно было загрузиться с ядер 32-бит и 64-бит,
 - чтобы был memtest86+,
 - детектор оборудования,
 - чтобы можно было пропустить загрузку с cdrom и загрузиться с жесткого диска,
кроме того познакомившись с функционалом syslinux я решил добавить возможность перезагрузки и выключения питания компьютера. и еще мне нужно было чтобы система по таймауту сама загружалась, т.к. часто приходится проверять "голые" системники без мониторов и клавиатур через ssh.

В качестве руководства я использовал официальное вики syslinux:
http://syslinux.zytor.com/wiki/index.php/SYSLINUX

Syslinux, кроме того что он простой и эффективный загрузчик, обеспечивает дополнительный функционал средствами небольших программ не требующих для работы операционной системы. В Slackware-13.1 они находятся в
/usr/share/syslinux

Необходимо понимать, что если isolinux предназначен для работы в файловой системе iso9660, где длина имени файла может быть довольно длинной, то syslinux работает в файловых системах fat16/fat32 и здесь имя файла ограничено dos-форматом 8.3, следовательно файлы используемые загрузчиком должны соответствовать этому формату.

сперва скопируем необходимые модули в рабочий каталог livecd
cp -v /usr/share/syslinux/menu.c32 /tmp/livecd
cp -v /usr/share/syslinux/chain.c32 /tmp/livecd
cp -v /usr/share/syslinux/hdt.c32 /tmp/livecd
cp -v /usr/share/syslinux/reboot.c32 /tmp/livecd
cp -v /usr/share/syslinux/poweroff.com /tmp/livecd

Memtest86+ можно скачать из исходников и собрать, а можно скачать готовый с оффициального сайта
wget http://www.memtest.org/download/4.10/memtest86+-4.10.bin.gz -O -|gzip -d  - > /tmp/livecd/memtest

для определителя оборудования нужны будут файлы со списком модулей ядра
cp -v /lib/modules/`uname -r`/modules.pcimap /tmp/livecd

и списком PCI плат
wget http://pciids.sourceforge.net/v2.2/pci.ids -O /tmp/livecd/pci.ids

Меня терзали смутные сомненья по поводу русского языка в меню. Его можно реализовать в графическом меню, когда устанавливается видео режим и применяется растровый шрифт. Проблема в том, что видео режим не совместим со всеми видеокартами , я например до сих пор использую ISA-видеокарты, а ноутбушные видеоадаптеры - это вообще беда. В итоге решил отложить пока эту тему. Еще была мысль в качестве варианта загрузки добавить FreeDOS с установленными бесплатными программами mdd и victoria, но непонятные условия их распространения и то что они работают только с PATA-накопителями вынуждают держаться подальше от подобных затей. В заключение, текст полученного конфига isolinux.cfg
DEFAULT menu.c32
PROMPT 0
TIMEOUT 300
MENU TITLE ---------------- SlavankaOS v.1 Recovery -------------------

LABEL linux32
MENU LABEL kernel 2.6.33.4 32-bit
MENU DEFAULT
KERNEL linux32
APPEND vga=normal initrd=rootfs.cgz root=/dev/ram0 rw vt.default_utf8=1 acpi_enforce_resources=lax

LABEL linux64
MENU LABEL kernel 2.6.33.4 64-bit
KERNEL linux64
APPEND vga=normal initrd=rootfs.cgz root=/dev/ram0 rw vt.default_utf=1

LABEL memtest
MENU LABEL Memtest86+
KERNEL memtest
APPEND -

LABEL hardware
MENU LABEL Hardware Detection Tool
KERNEL hdt.c32
APPEND modules_pcimap=modules.pci pciids=pci.ids memtest=memtest

LABEL mbr
MENU LABEL Skip CD-ROM Boot
KERNEL chain.c32
APPEND hd0 0

LABEL reboot
MENU LABEL Reboot
KERNEL reboot.c32

LABEL poweroff
MENU LABEL Power off
KERNEL poweroff.com

скриншот

Комментариев нет:

Отправить комментарий