A Netboot.xyz lehetővé teszi számunkra, hogy a Preboot Execution Environment (röviden PXE) segítségével hálózatról boot-olhassunk be különféle operációs rendszereket. Annak érdekében, hogy ez megtörténhessen, állítanunk kell a router-ünkön, hogy a PXE megtalálhassa az FTP szervert, amiről boot-olni fogunk, valamint a gépünk BIOS/UEFI beállításaiban be kell kapcsolnunk a network boot lehetőségét.
Elöljáróban annyit szeretnék kiemelni, hogy a Netboot.xyz nem lett a kedvencem a tesztek során. Linux kapcsán a distro hopping nagyon egyszerűen megoldható vele, de valahogy mégsem az igazi szerintem. Tapasztalatom alapján sok az elavult image. Windows-t pedig külön tortúra vele telepíteni. Emiatt erre nem is fogok kitérni. Elvileg lehet saját asset-et is létrehozni benne, de ez nekem nem sikerült, így erről nem tudok nyilatkozni. Legjobb tudomásom szerint ISO-t nem képes kezelni.
Számomra a Netboot.xyz inkább egy fajta próbálkozás volt, mint sem tényleges használatba vételi célpont. Arra nagyon jó volt, hogy rájöjjek a Mikrotik-en, mit kell beállítani a netboot-hoz. De igazából ez csak egy alapabb leírás lesz, hogy hogyan kell telepíteni és használatba venni.
Ne értsetek félre, a Netboot.xyz nem egy rossz tool. Sok mindent meg lehet vele tenni. Csak számomra, nem az amit én kerestem.
Annak érdekében, hogy a Netboot.xyz-t használhassuk rendelkeznünk kell egy alap Linux-os géppel. A számítógépnek fix IP-t kell állítanunk mindenképpen, hogy a PXE megtalálhassa őt. Ezt elvégezhetjük DHCP szerverünkön vagy magán a Linux-os rendszeren belül. Én kiindulásképpen egy Debian 12-vel telepített gépet fogok használni.
Személy szerint a docker-es változatot találtam a legegyszerűbbnek. Ehhez viszont telepítenünk kell a követkevező csomagot.
apt install docker.io
Illetve ezen kívül pár előkészítő lépést is el kell végeznünk. A következő parancsokkal létrehozzuk a megfelelő mappákat a konténernek, a megfelelő jogosultságokkal.
mkdir netbootxyz
mkdir netbootxyz/config
mkdir netbootxyz/assets
chmod 777 netbootxyz
chmod 777 netbootxyz/config
chmod 777 netbootxyz/assets
Ezt követően érdemes csak, lehúzni az image-t.
docker pull ghcr.io/netbootxyz/netbootxyz
Ha ezzel is megvagyunk, akkor pedig következő kóddal létrehozzuk a konténerünket:
docker run -d \
--name=netbootxyz \
-e NGINX_PORT=80 `# optional` \
-e WEB_APP_PORT=3000 `# optional` \
-p 3000:3000 `# sets web configuration interface port, destination should match ${WEB_APP_PORT} variable above.` \
-p 69:69/udp `# sets tftp port` \
-p 8080:80 `# optional, destination should match ${NGINX_PORT} variable above.` \
-v /root/netbootxyz/config:/config `# optional` \
-v /root/netbootxyz/assets:/assets `# optional` \
--restart unless-stopped \
ghcr.io/netbootxyz/netbootxyz
Az említett asset-eket, az assets mappába tudjuk elhelyezni, illetve, ha lokál asset-ek mellett döntünk, úgy azok, ide fognak letöltődni.
Ellenőrzésként pár parancsot érdemes lehet lefuttatni.
root@MGMT:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65df23e1b4c3 ghcr.io/netbootxyz/netbootxyz "sh /start.sh" 5 seconds ago Up 5 seconds 0.0.0.0:69->69/udp, :::69->69/udp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp netbootxyz
root@MGMT:~# docker logs netbootxyz
[netbootxyz-init] Downloading netboot.xyz at 2.0.82
2024-11-02 15:50:46,845 INFO Set uid to user 0 succeeded
2024-11-02 15:50:46,847 INFO supervisord started with pid 32
2024-11-02 15:50:47,849 INFO spawned: 'syslog-ng' with pid 33
2024-11-02 15:50:47,850 INFO spawned: 'nginx' with pid 34
2024-11-02 15:50:47,852 INFO spawned: 'webapp' with pid 35
2024-11-02 15:50:47,853 INFO spawned: 'dnsmasq' with pid 36
2024-11-02 15:50:47,859 INFO spawned: 'messages-log' with pid 37
2024-11-02 15:50:47,870 WARN exited: messages-log (exit status 1; not expected)
2024-11-02 15:50:49,113 INFO success: syslog-ng entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: webapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: dnsmasq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,114 INFO spawned: 'messages-log' with pid 50
2024-11-02 15:50:47 notice syslog-ng[33]: syslog-ng starting up; version='4.7.1'
2024-11-02 15:50:50,118 INFO success: messages-log entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Ha mindent jól csináltunk, akkor a fenti két parancsban nem szabad hibát látnunk. A tool a TCP 3000-es, TCP 8080-as és UDP 69-es portokat használja. Ezeket akár "ss -lpn" paranccsal ellenőrizhetjük is.
A következő parancsok segítségünkre lehetnek, akkor, ha nem vagyunk annyira jártassak a docker-ban.
Letöltjük a legfrissebb image-t:
docker pull ghcr.io/netbootxyz/netbootxyz
Megállíthatjuk vele a netbootxyz létező konténerét:
docker stop netbootxyz
Törölhetjük vele a netbootxyz létező konténerét (előfeltétele, hogy leállítjuk a konténert):
docker rm netbootxyz
Elindíthatjuk vele a konténert:
docker run -d netbootxyz
A dashboard a http://FIX-IP:3000/ érhető el. Ez az én esetemben a http://192.168.2.54:3000/ lesz.
Itt láthatunk alapvető információkat a rendszerünkkel és a Netboot.xyz-val kapcsolatban.
A "Menus" fül igazából egy config fájl miatt nagyon fontos nekünk. Ez lesz a boot.cfg. Itt tudjuk ugyanis megmondani, hogy a netről húzza-e le az image-t, amit boot-olni szeretnénk, vagy a lokálisan tárolt asset-eket használja-e. Azt tudni kell, hogy egyszerre mindkettőnek a használata nem lehetséges. Az előnye az internetnek az, hogy mindet használhatjuk, a hátránya viszont a deploy idő. A lokálisnak a gyorsaság az előnye viszont, a hátránya a korlátozottság.
A következő sort kell módosítani, erről:
set live_endpoint https://github.com/netbootxyz
Erre:
set live_endpoint http://192.168.2.54:8080
A zöld "Save config" gombbal tudunk menteni.
Itt találjuk a boot-olásra alkalmas image-eket. Ahhoz, hogy a boot sikeresen megtörténhessen, három fájl fog kelleni: az initrd, a vmlinuz és a squashfs. Ha lokálisan szeretnénk tárolni egy image-t, akkor ez a három fájl elengedhetetlen, hogy a rendszer boot-olni tudjon.
A kereső segítségével megtalálhatjuk a kedvenc distro-nkat és, ha kiválasztjuk a három megfelelő fájlt a kis checkbox-ok bepipálásval, akkor utána azokat le is tudjuk tölteni a zöld "Pull Selected" gombbal. Ezek letöltése minimális időt vesznek igénybe. A fájlok meglétét egyrészt ellenőrizhetjük az említett assets mappába, illetve másrészt a http://192.168.2.54:8080 alatt is.
Történhet GUI, illetve parancssorosan is.
/ip dhcp-server option add code=67 name=pxe-bios-netboot.xyz value="'netboot.xyz.kpxe'"
/ip dhcp-server/option/sets add name="pxe-bios" options=pxe-bios-netboot.xyz
/ip dhcp-server option add code=67 name=pxe-uefi-netboot.xyz value="'netboot.xyz.efi'"
/ip dhcp-server/option/sets add name="pxe-uefi" options=pxe-uefi-netboot.xyz
/ip dhcp-server/matcher/add name="pxe-uefi-matcher" server=dhcp1 address-pool=dhcp option-set=pxe-uefi code=93 value="0x0007"
Igazából ezzel továbbra is csak az előkészítés van meg. WinBox alól még mindig kell egy kicsit matatni. Mivel ezeket az értékeket, illetve a nex server-t fel kell venni a DHCP beállításunkhoz. Ezt is meg lehetne csinálni CLI alól, de ehhez már kicsit lusta voltam, hogy megnézzen hogyan kell. Ezt az oldalt az IP -> DHCP Server, majd a Networks fül alatt találjuk.
Amire figyeljünk itt az a Next server érték: Netboot.xyz szerver IP-címe és a DHCP Options. Ezt a hármat kell csak beállítani és már jók is vagyunk.
Technikailag ugyanazokat kell felvenni, mint a CLI parancsoknál is. Minden módosítást az IP -> DHCP Server részben történik.
1. Options
UEFI:
BIOS:
2. Option Sets
UEFI:
BIOS:
3. Option Matcher
UEFI:
4. Networks
Az alapok igazából ugyanazok, mint bármilyen más VM létrehozásánál. Az első változás, hogy nem kell boot media-t választani.
Választhatjuk a default SeaBIOS-t, itt ugye alapból nincs is secure boot.
A SeaBIOS boot képernyőnk így néz ki:
Illetve választhatjuk az UEFI-t is. Az EFI storage-t ki kell választani, de a Pre-Enroll keys-nél ki kell szedni a pipát.
Az UEFI boot képernyőnk így néz ki:
Mi van, akkor ha elrontottuk és bent maradt a pipa. Akkor a Hardware résznél törölni kell az EFI stroage-t és újra hozzá tudjuk azt adni az Add gombbal. A TPM-t nem kell bántani. Ez ettől független. Telepítést követően, ha szeretnénk secure boot-ot, akkor pedig töröljük az EFI-t és hozzuk létre úgy, hogy a Pre-Enroll keys-nél ott legyen a pipa.
Ha minden megfelelő a boot-nál, akkor pedig meg fog jelenni a Netboot.xyz boot menüje.
Sikeresen boot-olt Debian 12 xfce.
Felhasznált linkek:
https://netboot.xyz/
https://technotim.live/posts/netbootxyz-tutorial/
https://linkarzu.com/posts/docker-practical/windows11-netbootxyz/
!Figyelem!
Mindenki a saját maga meglátása és megítélése szerint cselekedjen az itt olvasottakkal és látottakkal kapcsolatban. Felelőléssget NEM válalok semmi iránt amit leírok, ez szimplán csak annak a dokumentálása, ami számomra működött.
Senkit nem buzdítok arra, hogy illegális forrásból szerezzen be bármit is. A lehetséges adatvesztésért felelősséget nem vállalok. A SAJÁT CSELEKEDETEIDÉRT, SAJÁT MAGAD FELELSZ!