icon

Fekete BT

Netboot.xyz

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.

A Netboot.xyz telepítése

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 Netboot.xyz konfigurálási lehetőségei

A dashboard a http://FIX-IP:3000/ érhető el. Ez az én esetemben a http://192.168.2.54:3000/ lesz.

Dashboard

netbootxyz

Itt láthatunk alapvető információkat a rendszerünkkel és a Netboot.xyz-val kapcsolatban.

Menus

netbootxyz_menus

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.

Local Assets

netbootxyz_local_assets

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.

netbootxyz_8080

Szükséges konfigurációk elvégzése Mikrotik router-en

Történhet GUI, illetve parancssorosan is.

CLI alól:

/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.

DHCP_network

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.

WinBox/GUI

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:

DHCP_options

2. Option Sets

UEFI:

BIOS:

Proxmox VM létrehozása és boot-olás

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.

proxmox_OS

Választhatjuk a default SeaBIOS-t, itt ugye alapból nincs is secure boot.

proxmox_system

A SeaBIOS boot képernyőnk így néz ki:

pxe_seabios

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.

proxmox_system_uefi

Az UEFI boot képernyőnk így néz ki:

pxe_uefi

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.

proxmox_efi

Ha minden megfelelő a boot-nál, akkor pedig meg fog jelenni a Netboot.xyz boot menüje.

netbootxyz_live_cds

Sikeresen boot-olt Debian 12 xfce.

live_boot_debian

!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!