pátek 3. prosince 2010

syslinux - pxeboot

Nedávno mi kolega ukazova, jak zprovoznil bootování po firemní sítí realizované na Windows serveru s bootováním do WinPE a do instalace driverů. Danou problematiku ladil i v testovacím prostředí ve VMware Workstation s linuxovým bootováním pomocí syslinux a pxeboot.

Bootování ze sítě jsem chtěl mít doma už dávno. A tak jsem pátral, zda syslinux je i pro muj sklepní kartón PC. Port existuje a tím se odstartovala realizace v domácí síti.

Potřebné nástroje:
dhcp
Domácí DHCP server provozuji na FreeBSD s tím, že jeho konfiguraci mám uloženou v LDAP. Využívám experimentální podpory. Na dané téma jsem si již něco poznamenával. Nyní jsem jen daný port povýšil na novější verzi.

isc-dhcp41-server-4.1.2,1 The ISC Dynamic Host Configuration Protocol server

cat /var/db/ports/isc-dhcp41-server/options
# This file is auto-generated by 'make config'.
# No user-servicable parts inside!
# Options for isc-dhcp41-server-4.1.2,1
_OPTIONS_READ=isc-dhcp41-server-4.1.2,1
WITH_DHCP_PARANOIA=true
WITH_DHCP_LDAP=true
WITH_DHCP_LDAP_SSL=true

Pro bootování ze sítě jsem přidal jen v dokumentaci popisované volby. Vše editováno v phpLDAPadmin :-)

filename "pxelinux.0";
next-server 192.168.0.1;

tftp
Trivial FTP server je součástí systému FreeBSD 8.x, pouštím pomocí inetd.

rc.conf
inetd_enable="YES" # Run the network daemon dispatcher (YES/NO).
inetd_program="/usr/sbin/inetd" # path to inetd, if you want a different one.
inetd_flags="-wW -C 60" # Optional flags to inetd

inetd.conf
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

syslinux
Syslinux je instalován z portů. Soubory potřebné pro fungování je nutné ručně vykopírovat do kořene tftp serveru a tím je /tftpboot

cd /usr/ports/sysutils/syslinux/
make install clean

syslinux-4.03 Syslinux for FreeBSD

Konfigurace syslinux a pxeboot je vcelku jednoduchá a je velmi dobře zdokumentována na stránkách projektu. Vyladit svou konfiguraci pro jednotlivé boot volby chvilku dá, ale není to nic složitého. Zajimavé jsou volby s podmínkami, kdy se nám dle architektury CPU zavede buť i386 nebo i64 systém. Bohužel nevyzkoušeno.

[root@sklep ~]# cat /tftpboot/pxelinux.cfg/default
#
# Default
#
DEFAULT menu.c32
PROMPT 0
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE Main Menu
LABEL local
MENU LABEL Local ^Boot
localboot 0
LABEL memtest86+
MENU LABEL ^Memtest86+
kernel memtest86+.bin.foo
LABEL systemrescuecd
MENU LABEL ^SystemRescueCD x86 1.6.3
kernel rescuecd
append initrd=initram.igz dodhcp netboot=http://192.168.0.1:80/sysrcd.dat
LABEL freebsd
MENU LABEL ^FreeBSD 8.1 RELEASE
kernel memdisk
append initrd=FreeBSD-8.1-RELEASE-i386-bootonly.img harddisk
LABEL hdt
MENU LABEL ^Hardware Detect Tool
LINUX memdisk
INITRD hdt.img
# EOF

U SystemRescueCD je popis zavádění systému popsán zde. Velké soubory není vhodné servírovat pomocí tftp, proto se používá buť http, což je zrovna můj případ nebo nfs. Pro FreeBSD se musí vytvořit *.img soubor z malého boot.iso obrazu, návod pro starší systém je zde. Je třeba vytvořit větší soubor, protože od verze FreeBSD-6.2 se iso sobor pro FreeBSD-8.1 poněkud zvětšil. Návod je jasný a plně funkční. Snad jen na domácím ntb mi boot po nahrání kernelu vytuhne :-(. Ale na obouch stolních PC to funguje vše jak ma.

Dále si budu zprovozňovat dalši systémy, které chci bootovat ze sítě. Např. u Ubuntu je mechanismus verze od verze jiny. Vodítkem je tato nebo tato dokumentace, která není úplně aktuální.

Pro testování HW je vhodné použít např. Memtest86+ nebo Hardware Detection Tool (HDT).

Je mi jasné, že bootování ze sítě má vhodné nasazení a použití hlavně ve velkých sítích, ale našlo si cestu i ke mě domu :-)

Žádné komentáře: