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:
dhcpDomá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;
tftpTrivial 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
syslinuxSyslinux 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
/tftpbootcd /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 :-)