1. Ядро, минимум опций которые я использовал:
тип процессора 386
Networking support
шина PCI
тип бинарников ELF
RAM диск
initrd
Сетевые опции
- packet socket
- socket filtering
- unix domain sockets
- tcp networking
- ip kernel level autoconfiguration
- ip dhcp support
Драйвера сетевых адаптеров
Virtual terminal
Support for console on virtual terminal
Standart generic serial port
Mouse support
PS/2 mouse
/proc file system support
second extended fs support
vga text console
2. В сети настроены и работают сервисы dhcp и dns.
Так же необходимы работающие сервер шрифтов xfs и tftp для загрузки образа ядра по сети.
Дополнительная настройка dhcpd.conf, добавляем параметры:
allow booting;
allow bootp;
filename "pxelinux.0";
Файл pxelinux.0 берется из пакета syslinux.
Настройка xfs сводится к закоментированию параметра no-listen = tcp в файле /etc/X11/fs/config и перезапуска сервиса.
Этапы процесса загрузки:
инициализация PXE
подключение к DHCP
загрузка загрузка pxelinux.0 чтение конфига и загрузка ядра и образа initrd
инициализация сетевого интерфейса
монтирование root фс
запуск /sbin/init
запуск скрипта инициализации rc.sysinit
- монтирование /proc
- установка hostname (term-ip address)
- определение системных параметров через /proc/cmdline
- генерация /etc/resolv.conf
- определение видеокарты через /proc/pci
- генерация /etc/X11/XF86Config
- запуск X + rdesktop
3. Образ корневой фс собран на базе RedHat72, glibc-2.2.4.
Стандартный набор XFree86 был слишком раздут. Пришлось собирать, в исходниках был только XFree86-4.4.0.
Использовался host.def
#define LinuxDistribution LinuxRedHat
#define XF86CardDrivers nv sis s3 s3virge trident via vesa
#define DefaultCCOptions -O2 -mcpu=i386 -march=i386
#define BuildFontServer no
#define BuildFonts no
#define BuildXKB no
#define BuildDPMS no
#define BuildServersOnly yes
При компиляции, пару раз вылетало с ошибками, но достаточно
заккоментировать строки с номерами ошибок, там в основном определения
которые мы запретили.
Cобрано со следующими драйверами (nv, riva128, s3, s3virge, sis, trident, via, vesa)
Так же присутствует поддержка мыши и PS/2 и COM1.
Поддержка сетевых адаптеров, выбирается при сборке ядра исходя из потребностей.
Загрузить образ можно здесь (4 Mb).
Посмотреть список всех файлов.
Следующие опции определены:
NSERVER - ip адрес DNS сервера в сети, по умолчанию 192.168.1.100
DOMAIN - домен, по умолчанию domain
XFSERVER - сервер шрифтов, по умолчанию xfs.$DOMAIN
TSERVER - сервер терминалов, по умолчанию tserver.$DOMAIN
VIDEODRIVER - принудительное выставление драйвера
HSYN - параметр HorizSync, по умолчанию "31-55"
VREF - параметр VertRefresh, по умолчанию "50-160"
MODES - разрешение экрана, по умолчанию "800x600"
Настройка PXE загрузчика сводится к определению файла для каждого сетевого адреса либо default.
Пример 1.
файл tftpboot/pxelinux.cfg/default
label linux
kernel bzImage
append ramdisk_size=11000 initrd=initrd.gz root=/dev/ram0 NSERVER=192.168.1.1 DOMAIN=runet.ru
ipappend 1
Пример 2.
файл tftpboot/pxelinux.cfg/С0A801B4 для клиента с адресом 192.168.1.180
label linux
kernel bzImage
append ramdisk_size=11000 initrd=initrd.gz root=/dev/ram0 NSERVER=192.168.1.1 DOMAIN=runet.ru MODES=1024x768 HSYN=31-57 VREF=55-190
ipappend 1
С успехом загружался и работал на клиенте с 24Мб оперативной памяти.
В собственном варианте добавил загрузку smbd и доступ по сети к дисководу.
Его можно загрузить здесь,
для него требуется ядро с патчем supermount, и опция загрузки
ramdisk_size=12000. Так же в нем добавлен параметр DEPTH, отвечающий за
количество бит цветности, по умолчанию равен 8.
Вопросы и рекомендации можно отправлять на icq 62270603.
Иркутск. 2004г.