Hlavní navigace

Bootovani ze site pres PXE/GRUB

21. 3. 2007 15:00 (aktualizováno) Jan Krcmar

Pro bootovani ze site existuje spoustu zajimavych metod a zavadecu a podobnych vylomenin. V tomto clanku se budeme zabyvat bootovanim pres PXE spolu s PXEGRUBem.

Prvni faze je nastaveni PXE serveru, coz je vec celkem jednoducha. Staci prolezt nejake ty stranky a googlit. Pro zacatek si staci precist dokumentaci SYSLINUXu, kde je i sekce o PXELINUXu.

Pro PXE bohuzel plati to, ze umi nacist jadro Linuxu pouze ze serveru. Pro instalaci stanic napriklad pres FAI je to vec normalni a lze pouzit univerzalni jadro. Pro bootovani stanic je casto treba menit jaderne konfigurace, takze bude potreba nejakym zpusobem donutit stroj, aby nabootoval jadro z lokalniho disku. V teto chvili nastupujde GRUB resp. PXEGRUB.
Nikde jsem nenasel, jak GRUB spravne zkompilovat pro pouziti s PXE, proto napisi presny postup. Prvnim krokem bude nekde sehnat zdrojove kody od GRUBu a nekam si je pekne rozbalit. Ja jsem zkousel verzi 0.97

     $ > wget ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz
$ > tar xvzpf grub-0.97.tar.gz

PXEGRUB umoznuje zakompilovat primo do sebe i implicitni konfiguraci menu.lst. Format souboru se nijak nelisi od standartniho konfiguracniho souboru GRUBu. Navic lze pouzit i dalsi nastaveni pro praci se siti.
Dalsi krok je konfigurace kompilace.

    $ > ./configure --help

vam vypise moznosti nastaveni. Pro bootovani ze site je potreba minimalne jeden ovladac sitove karty a parametr –enable-diskless. Moje konfigurace vypadala nasledovne:

     $ > cat params.ok
--enable-3c509
--enable-3c529
--enable-3c595
--enable-3c90x
--enable-cs89x0
--enable-davicom
--enable-depca
--enable-eepro
--enable-eepro100
--enable-epic100
--enable-3c507
--enable-exos205
--enable-ni5210
--enable-lance
--enable-ne2100
--enable-ni6510
--enable-natsemi
--enable-ni5010
--enable-3c503
--enable-ne
--enable-ns8390
--enable-wd
--enable-otulip
--enable-rtl8139
--enable-sis900
--enable-sk-g16
--enable-smc9000
--enable-tiara
--enable-tulip
--enable-via-rhine
--enable-w89c840
--enable-3c503-shmem
--enable-3c503-aui
--enable-diskless
--enable-preset-menu=menu.lst

tim jsem povolil podporu vsem sitovym kartam a posledni parametr udava, ze GRUB bude pouzivat implicitni menu.lst
nyni zkompilujeme

     $ > ./configure `cat params.ok` && make

objevi se nam soubor stage2/pxegrub, ktery presuneme na PXE server a PXELINUX nastavime tak, aby ho pouzil pri bootovani. Pokud chceme bootovat pxegrub z PXELINUXu je nutne, aby se soubor jmenoval *.0 (viz stranky syslinuxu oddil pxelinux). Pro ilustraci prikladam nastaveni PXE pro bootovani widli a linuxu

     22-#Zavedeni OS z hd0,0 (prvni disk v BIOSu a prvni partition):
23-label w
24:kernel boot_pxegrub_hd0-0_win.0
25-#
26-#Zavedeni Linuxu z hd0,2/vmlinuz root=/dev/hda3 (prvni disk v BIOSu a
27-#treti partition):
28-label l
29:kernel boot_pxegrub_hd0-2_linux.0

nutno poznamenat, ze v tomto pripade byl GRUB kompilovan dvakrat, jednou pro linux a jednou pro windows. Nastaveni menu.lst

     $ > cat menu.lst
# Boot automatically after X secs.
timeout 1
# By default, boot the first entry
default 1 #zde se meni 0 nebo 1 pro bootovani linuxu nebo windows
# hide menu
hiddenmenu
# BOOT: instaled linux
title spusteni Debian GNU/Linux
root (hd0,2)
kernel /vmlinuz root=/dev/hda3
dhcp
boot

title spusteni Windows
rootnoverify (hd0,0)
makeactive
dhcp
chainloader +1

urcite jste si vsimli prikazu dhcp, ktery je zdanlive bezvyznamny. Pouzil jsem ho, protoze u starsich storoju je potreba urcity timeout, ktery si timto zajisti. (je taky moznost, ze si chce pxegrub sahnout na sit… to nikdo nevi :) pravda je takova, ze tato konfigurace funguje :))

Sdílet