[[oktatas:linux:hogyanok|< Hogyanok]] ====== Netboot ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2012, 2017, 2018 * [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: http://szit.hu ===== Bevezetés ===== Mi az a netboot? Olyan operációs rendszer, amely a hálózaton keresztül töltődik be, a helyi merevlemezen vagy egyéb tárolón nem is létezik. A netboot kialakításához szüksége van egy TFTP és egy DHCP szerverre. A kettő lehet külön gépen is. Opcionális egy NFS szerver használata, ha távoli adattárolót szeretnénk használni. Szükségünk van egy syslinux nevű csomagra, amelyben rendelkezésre áll néhány szükséges eszköz. A hálózatról való rendszerindítást a számítógép BIOS rendszerének is támogatni kell. Ma már minden BIOS támogatja. Régebbi alaplapoknál előfordulhat ennek hiánya. Egyik felhasználási terület lehet, ha a hálózatról induló rendszerről particionáljuk a számítógép tárolóit. Linuxon például a partimage program áll rendelkezésre, amelyet a lentebb említett RIPLinux alapból tartalmaz. ===== Telepítés ===== ==== TFTP szerver telepítése ==== # apt install tftpd-hpa Ellenőrizzük fut-e a démon: # ps ax Nézzük meg a megfelelő socketen figyel-e a démon: # ss -apu | grep tftp Lehetséges kimenet: UNCONN 0 0 *:tftp *:* users:(("in.tftpd",pid=811,fd=4)) Telepítés után a /etc/default/tftpd-hpa fájlban szabályozhatók a beállítások. TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure" Például hol legyenek a bootolandó rendszerek: TFTP_DIRECTORY="/srv/tftp" A Debian9 létrehozza a /srv/tftp könyvtárat, ha még sem létezne, hozzuk létre: mkdir /srv/tftp ==== DHCP szerver telepítése ==== # apt install isc-dhcp-server Szerkesszük a DHCP szerver beállításait: # mcedit /etc/dhcp/dhcpd.conf Vegyük fel a hálózatunknak megfelelően, például a következőket: subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; filename "pxelinux.0"; next-server 192.168.1.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.1; } A fenti konfiguráció részletben két új sor van, ami előtt valószínűleg nem szerepelt: filename "pxelinux.0"; next-server 192.168.1.1; A "filename" egy a /srv/tftp könyvtárban rendszerindításhoz szükséges fájl neve. Ezt a fájlt majd később a helyére másoljuk. A második sor a szerverünk IP címe. # systemctl start isc-dhcp-server ==== A SYSLINUX telepítése ==== apt install syslinux pxelinux Telepítés után kapunk néhány hasznos állományt. Ezeket másoljuk a tftp könyvtárunkba: cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/ Hogy vesamenüt kapjunk szükség van a következőre is: cp /usr/lib/syslinux/modules/bios/vesamenu.c32 /srv/tftp/ cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /srv/tftp/ ===== Beállítások ===== Telepítés után létre kell hoznunk egy /srv/tftp könyvtárban egy //pxelinux.cfg// könyvtárat. A TFTP szerver ezen könyvtár állományait beállítófájloknak tekinti. Hozzunk létre egy "default" nevű állományt, amelyben elhelyezzük az alapértelmezett beállításainkat. mkdir /srv/tftp/pxelinux.cfg nano /etc/tftp/pxelinux.cfg/default Az állomány tartalma lentebb. ==== Parancssoros vezérlés ==== PROMPT 1 DISPLAY menu.txt TIMEOUT 300 LABEL debinstall kernel debian/squeeze/i386/linux append vga=normal initrd=debian/squeeze/i386/initrd.gz -- LABEL deb kernel deb/vmlinuz append vga=normal initrd=deb/initrd.img A "kernel" kulcsszóval kezdődő sorok után kell megadnunk a melyik kernelt szeretnénk indítani. A példában a kernel útvonalát relatívan adtuk meg, az /srv/tftp/ könyvtárhoz képest. Az "append" kulcsszó után írjuk a kernel paramétereit. Az initrd.img állomány útvonalát szintén relatívan adtuk meg. A "DISPLAY" kezdetű sor mutatja melyik állomány tartalmazza a megjelenítendő sorokat. Ami meg fog jelenni az a menu.txt fájlban van: debinstall deb A menu.txt fájlban lévő soroknak persze meg kell felelniük a default nevű állományban az egyes LABEL után írt címkékkel. Ekkor a boot folyamat során megjelenik a menu.txt tartalma, a várakozási jelhez beírjuk a debinstall vagy a deb szót attól függően melyik rendszert szeretnénk indítani. ==== Indítható rendszerek beszerzése ==== Az /srv/tftp könyvtáron belül létre kell hozni a deb és a debian könyvtárat, amit fentebb megadtunk a menüben. mkdir /srv/tftp/deb mkdir /srv/tftp/debian A deb könyvtárba másoljuk be az indítható Debian vmlinuz és initrd.img állományát. Ezt például egy Debian 9 esetén a boot menüben található. Igaz ezeket át kell nevezni, mert a nevükben van verzió szám is. Így kapunk egy Debian 9 kernel, ami elindul. A telepítőhöz, amit a "debian" könyvtárba teszünk, szükség van a Debian netboot csomagra: apt install debian-installer-9-netboot-amd64 Telepíthető a debian-installer-9-netboot-i386 csomag is: apt install debian-installer-9-netboot-i386 Ezek után másoljuk a helyére a telepítő két állommányát: mdkir -p /srv/tftp/debian/stretch/amd64 cd /usr/lib/debian-installer/images/9/amd64/text/debian-installer/amd64/ cp initrd.gz /srv/tfpt/debian/amd64/initrd.gz cp linux /srv/tfpt/debian/amd64/linux ===== Menüvezérlés karakteres felületen ===== A menüvezérelt felülethez ki kell kapcsolnunk a várakozási jelet: PROMPT 0 Szükségünk lesz még két állományra: cp /usr/lib/syslinux/modules/bios/menu.c32 /srv/tftp/ cp /usr/lib/syslinux/modules/bios/libutil.c32 /srv/tftp/ Ezt meg kell adni a "DEFAULT" kulcsszó után: DEFAULT menu.c32 Ki kell alakítanunk menüt: MENU TITLE Udv a rendszerben MENU AUTOBOOT Automatikus indulas # masodperc mulva... MENU ROWS 2 MENU TIMEOUTROW 20 Az egyes menüpontok, csak ez után jönnek: LABEL debinstall MENU LABEL Telepites KERNEL debian/squeeze/i386/linux APPEND vga=normal initrd=debian/squeeze/i386/initrd.gz -- LABEL deb MENU LABEL Rendszer KERNEL deb/vmlinuz APPEND vga=normal initrd=deb/initrd.img Mindez, természetesen a "/srv/tfpt/pxelinux.cfg/default állományba kerül. A beállítások komplett listája: PROMPT 0 DEFAULT menu.c32 MENU TITLE Udv a rendszerben MENU AUTOBOOT Automatikus indulas # masodperc mulva... MENU ROWS 2 MENU TIMEOUTROW 20 LABEL debinstall MENU LABEL Telepites KERNEL debian/squeeze/i386/linux APPEND vga=normal initrd=debian/squeeze/i386/initrd.gz -- LABEL deb MENU LABEL Rendszer KERNEL deb/vmlinuz APPEND vga=normal initrd=deb/initrd.img ===== Menüvezérlés grafikus felületen ===== A grafikus felületű menüvezérlés csak annyiban különbözik az előző menüvezérléstől, hogy a menu.c32 állomány helyett a vesamenu.c32 szükséges. Ehhez kell még egy állomány, a libcom32.c32: cp /usr/lib/syslinux/modules/bios/vesamenu.c32 /srv/tftp/ cp /usr/lib/syslinux/modules/bios/libcom32.c32 /srv/tftp/ Ekkor a "DEFAULT" kulcsszó után: DEFAULT vesamenu.c32 Lássunk egy komplett "default" nevű állományt: PROMPT 0 TIMEOUT 300 DEFAULT vesamenu.c32 MENU TITLE Udv a teszt rendszerben MENU AUTOBOOT Automatikus indulas # masodperc mulva... MENU ROWS 12 MENU TIMEOUTROW 20 LABEL debinstall MENU LABEL Telepito MENU PASSWD titok KERNEL debian/squeeze/i386/linux APPEND vga=normal initrd=debian/squeeze/i386/initrd.gz -- LABEL deb MENU LABEL Rendszer kernel deb/vmlinuz-2.6.32-5-686 append rw root=/srv/tftp/deb nfsroot=/srv/tftp/deb/ vga=normal initrd=deb/initrd.img-2.6.32-5-686 -- ===== Jelszó ===== Egy-egy címkézett rész jelszóval védhető: LABEL debinstall MENU LABEL Telepito MENU PASSWD titok KERNEL debian/squeeze/i386/linux APPEND vga=normal initrd=debian/squeeze/i386/initrd.gz -- ===== Egyéb beállítási lehetőségek ===== MENU WIDTH 80 MENU MARGIN 10 MENU PASSWORDMARGIN 3 MENU TABMSGROW 18 MENU CMDLINEROW 18 MENU ENDROW 24 MENU PASSWORDROW 11 De nézzük meg a következő linket is: * http://www.syslinux.org/wiki/index.php/Comboot/menu.c32 ===== Indítható Linuxos rendszer ===== Olyan kernel és initrd.gz fájl, amely telepítésre használható általában közé tesznek a Linux terjesztők. Ilyen letölthető például itt: * http://ftp.uk.debian.org/debian/dists/stretch/main/installer-amd64/ (2017) Komplett linuxos rendszer kevesebb van, de legyen egy itt: * http://ftp.cvut.cz/rip/RIPLinuX-13.7.PXE.zip A harmadik lehetőség, hogy magunk készítünk egy indítható rendszert. Ennek leírása egyszer... ===== Core Linux netboot ===== Ebben a részben egy Core Linux netboot beállításait vesszük végig. ==== Core Linux beszerzése ==== Elsőként be kell szereznünk egy Core Linuxot képfájlt. Ehhez a következő oldalt használhatjuk: * http://distro.ibiblio.org/tinycorelinux/ (2017) A Core Linuxból háromféle változat szerezhető be: | Core \\ (11 MB) | Ez egy szimpla parancssoros változat | | TinyCore \\ (16 MB) | Wifi kapcsolattal és GUI felülettel rendelkező változat | | CorePlus \\ (106 MB) | Telepítő képfájl, de nem terjesztés | A letöltésre kattintva a következő oldalra jutunk: * http://distro.ibiblio.org/tinycorelinux/8.x/x86/release/ (2017) Itt csak 32 bites képfájlok vannak, de ha két könyvtárral feljebb kattintunk 64 bites képfájlokat is találunk: * http://distro.ibiblio.org/tinycorelinux/8.x/x86_64/release/ (2017) Töltsük le a választott .iso kiterjesztésű állományunkat. Például: * http://distro.ibiblio.org/tinycorelinux/8.x/x86/release/TinyCore-current.iso(2017) wget http://distro.ibiblio.org/tinycorelinux/8.x/x86/release/TinyCore-current.iso A képfájlnak egy tetszőleges helyet választhatunk. Esetleg létrehozhatunk egy /iso nevű könyvtárat és odamásolhatjuk. ==== Az .iso fájl csatolása ==== Ezek után fel kell csatolnunk a letöltött képfájlt. Ehhez hozzunk létre a az /srv/tfpt könyvtárban egy újabb könyvtárat például tinycore néven: mkdir /srv/tfpt/tinycore Ide fel is csatolhatjuk: mount -o loop /iso/TinyCore-current.iso /srv/tftp/tinycore A csatolás után ellenőrizzük a tartalmát: /srv/tfpt/tinycore ==== A PXE boot menü konfigurálása ==== Ezek után csak fel kell vennünk a PXE boot menübe. Szerkesszük a default állományt: nano /srv/tftp/pxelinux.cfg/default Vegyük fel a következő sort: LABEL tinycore MENU LABEL Tiny Core 8.2 kernel tinycore/boot/vmlinuz append initrd=tinycore/boot/core.gz ===== Helyi rendszer indítása ===== Az /srv/tftp/pxelinux.cfg/default állományba a következő menüt hozzuk létre: LABEL hdd MENU LABEL Rendszerinditas a helyi merevlemezrol LOCALBOOT 0 ===== Források és egyéb linkek ===== Leírások: * https://wiki.debian.org/PXEBootInstall (2017) * http://www.syslinux.org/wiki/index.php/PXELINUX (2012) * https://help.ubuntu.com/community/PXEInstallMultiDistro (2012) * http://www.debian-administration.org/articles/478 (2012) * http://s3hh.wordpress.com/2011/12/15/simple-netboot-setup/ (2012) * http://www.finnix.org/Netboot (2012) * http://aput.net/~jheiss/netboot_linux/ (2012) * http://www.linuxfordevices.com/files/misc/pxe_boot_stb-howto.html (2012) * http://www.kegel.com/linux/pxe.html (2012) * http://pcplus.techradar.com/2009/05/18/tutorial-boot-linux-over-a-network/ (2012) * http://sirlagz.net/2011/05/16/how-to-pxe-boot-tiny-core-linux/ (2017) Menükészítés * http://www.syslinux.org/wiki/index.php/Comboot/menu.c32 (Menü készítés) (2012) initrd készítés: * http://wiki.openvz.org/Modifying_initrd_image (2012) * http://www.ibm.com/developerworks/linux/library/l-initrd/index.html (2012) * http://www.faqs.org/docs/evms/x3834.html (2012) * http://en.wikipedia.org/wiki/Enterprise_Volume_Management_System (EVMS-ről) (2012) Kész bootolható Linux: * http://www.tux.org/pub/people/kent-robotti/looplinux/rip/ (2012) * https://www.slax.org/ Bootolható Debian telepítő: * http://ftp.uk.debian.org/debian/dists/squeeze/main/installer-i386/ (2012) Kapcsolódó linkek: * http://www.partimage.org/Screenshots (2012) * http://mondorescue.org (2012) * http://clonezilla.org/livepxe.php (2012) * http://sourceforge.net/projects/g4l/ (2012) Bootolható Windows: * http://www.ccboot.com/pxe-boot-windows.htm (2012) Fórum: * http://hup.hu/node/118530 (2012)