2012. március 24., szombat

SystemRescueCd bootlása PXE használatával

Az elmúlt napokban az Ubuntu 12.04 bétámon összeraktam egy olyan környezetet, amely alkalmas PXE-bootlásra. A menü már meg is érkezik, de egyelőre csak a helyi merevlemezről tudunk vele bootolni, ami - lássuk be - nem épp az, amiért az ember PXE-boot szervert készít.

Ma még mindig nem telepítünk operációs rendszert a gépre, de legalább futtatunk rajta egy SystemRescueCd live rendszert - amit természetesen a hálózatról töltünk be.

Az első dolgunk, hogy letöltsük magát a SystemRescueCd-t tartalmazó lemezképet (én a 2.5.1 x86 változatot használtam), és csatoljuk fel.
(Kis kitérő: én persze virtuális környezetben dolgozom, így a lemezképet a fizikai gépre töltöttem. A Virtualbox-nak megmondtam, hogy kérem az .iso fájl CD-ként való csatolását, de hogyan kell ezt mountolni? Nos, nálam a /dev/sr0 eszköz lett a CD.)
Ha ezzel megvagyunk, akkor szerkesszük át a pxelinux.0 menüjét, azaz a /var/lib/tftpboot/pxelinux.cfg/default fájlt. A lényeget vastaggal szedve:
DEFAULT menu.c32
TIMEOUT 50
TOTALTIMEOUT 9000
ALLOWOPTIONS 0
ONTIMEOUT hdd

MENU TITLE Mondd csak: Mit inditsak?
LABEL hdd
        MENU LABEL Bootolas a helyi merevlemezrol
        LOCALBOOT 0

LABEL sysrescd
        MENU LABEL SystemRescueCd      
        KERNEL sysrescd/rescuecd
        APPEND initrd=sysrescd/initram.igz netboot=tftp://192.168.56.101/sysrescd/sysrcd.dat

Akkor most már jószerivel csak annyi van, hogy a helyére tesszük a fájlokat:
sudo mkdir /var/lib/tftpboot/sysrescd
sudo cp /mnt/isolinux/initram.igz /mnt/isolinux/rescuecd /mnt/sysrcd.* /var/lib/tftpboot/sysrescd

És lényegében kész is vagyunk: a bootolás működik. Én azért még javallanék három kis módosítást.

Az egyik az, hogy a /var/lib/tftpboot/pxelinux.cfg/default fájlban, a SystemRescueCd APPEND sorát egészítsük ki egy setkmap=hu bejegyzéssel - így induláskor nem kérdi meg folyton, hogy melyik keymap kell nekünk.

A második arra jó, hogy a drága felhasználó ne indítson mást, mint amit neki szabad. A menüpontot a PASSWD kulcsszót használva jelszóval védjük.

A harmadik pedig azzal kapcsolatos, hogy a sysrcd.dat fájl szép nagy, és a TFTP nem szereti az ilyen nagy fájlokat, és nagyon-nagyon lassú a fájl letöltése. Ha elolvassuk a /usr/share/doc/tftpd-hpa/README.security fájlt, akkor kapunk javaslatot arra nézvést, hogy mi a teendő a sebesség fokozása végett. No, azt én nem. Helyette inkább átállunk HTTP használatára.

Először módosítjuk a menüfájlt (az újdonságok vastagítva):
DEFAULT menu.c32
TIMEOUT 50
TOTALTIMEOUT 9000
ALLOWOPTIONS 0
ONTIMEOUT hdd

MENU TITLE Mondd csak: Mit inditsak?
LABEL hdd
        MENU LABEL Bootolas a helyi merevlemezrol
        LOCALBOOT 0

LABEL sysrescd
        MENU LABEL SystemRescueCd
        MENU PASSWD titok
        KERNEL sysrescd/rescuecd
        APPEND initrd=sysrescd/initram.igz netboot=http://192.168.56.101/sysrescd/sysrcd.dat setkmap=hu

Aztán telepítünk magunknak webszervert:
sudo apt-get install apache2

Aztán a helyére tesszük a fájlokat:
sudo mkdir /var/www/sysrescd
sudo mv /var/lib/tftpboot/sysrescd/sysrcd.* /var/www/sysrescd/

És kész. A SystemRescueCd bootol, mint a kisangyal, és nem kérdez keymapot.

2 megjegyzés:

Ambrus Sándor Oláh írta...

Szervusz!

Egy iso file - t szeretnék bootolni memdisk segítségével. Jelenleg a pxelinux.cfg/default releváns része:

LABEL WinPEx86
MENU LABEL WinPE x86
LINUX /memdisk
INITRD /WinPE-x86/WinPE-x86.iso smbmount=//192.168.1.1/tftp:tftp:tftp
APPEND iso

A 192.168.1.1 - en van egy tftp nevű megosztásom, a felhasználónév illetve a jelszó is legyen X ill. Y. Megoldható a fenti konfiguráció módosítása, hogy az iso file - t ne tftp - n keresztül, hanem a samba megosztásról töltse le? Köszönöm!

raerek írta...

Szia!
Elvileg igen: https://www.plop.at/en/ploplinux/live/networkboot-linux.html#pxel12
De sosem próbáltam.