[[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)