Bootolás hálózatról lpxelinux.0 bootloader segítségével, nfs helyett inkább http - ről

Fórumok

Halihóóó Emberek!

Kubuntu 15.10 live DVD iso - t próbálok indítani hálózaton keresztül. Tftp szerverként a dnsmasq - ot használom. A boot loader az lpxelinux.0 (a syslinux része). A /pxelinux.cfg/default idevágó része így néz ki:

LABEL Kubuntu
MENU LABEL Kubuntu 15.10 x86
KERNEL /Kubuntu-15.10/x86/casper/vmlinuz
APPEND boot=casper netboot=http httproot=http://192.168.1.1:8080/Kubuntu-15.10/x86 initrd=/Kubuntu-15.10/x86/casper/initrd.lz quiet splash

Web szerverként nginx - et használok. Ez egy másodlagos web szerver, az elsődleges lighttpd. Ő a 80 - as porton megy és a https - t részesíti előnyben. Biztos megoldható egyetlen web szerverrel is, de ez volt a legegyszerűbb. Az nginx működik, böngészőből próbálva a fenti httproot elérési útvonalon levő anyag letölthető (az iso oda van kitömörítve). Az alábbi nfs - t használó változat hibátlanul működik:

LABEL Kubuntu
MENU LABEL Kubuntu 15.10 x86
KERNEL /Kubuntu-15.10/x86/casper/vmlinuz
APPEND boot=casper netboot=nfs nfsroot=192.168.1.1:/srv/tftp/Kubuntu-15.10/x86 initrd=/Kubuntu-15.10/x86/casper/initrd.lz quiet splash

Nfs - t kimondottan csak a Kubuntu kedvéért telepítettem, a másodlagos web szervert nagyobb iso állományok elindításához használom memdisk - el. Szeretném az nfs megoldást kiváltani web szerverrel. Megoldható ez, támogatja egyáltalán a linux kernel, vagy ehhez újra kellene fordítani a telepítőanyagban levő kernelt?

Hozzászólások

A http protokoll szerintem nem alkalmas a feladatra, ezért nem gondolnám, hogy lenne hozzá támogatás a kernelben és az initrdben.
A hálózatos indításhoz egyébként úgy emlékszem, hogy nem elegendő pusztán a kernel támogatás, elég sok dolgot az initrd csinál meg.
Ha nagyon ragaszkodsz valami http szerű dologhoz, webdavot lehet linux alatt mountolni, azzal biztosan össze lehet valahogyan hozni, de valószínűleg ahhoz is az initrd scripteket kell megpiszkálni.

Szvsz ez a trükk is csak akkor működik, ha az ISO-ban lakó rendszer biztosít hozzá támogatást (vagy annyira buta, hogy bios megszakításokkal kezeli a háttértárat, így ki tudja őt szolgálni a memdisk).
A http-vel egyébként ebben az esetben az a baj, hogy nagyon nyögvenyelős vele egy fájlt nem az elejétől, vagy nem "lineárisan" olvasni :)

Szervusz,

azóta azt derítettem ki, hogy a httpfs kernelparaméter az, ami nekem kell. Elméletben iso-t és squasfs-t lehet neki megadni. Így próbáltam használni:

LABEL Kubuntu
MENU LABEL Kubuntu 15.10 x86
KERNEL /Kubuntu-15.10/x86/casper/vmlinuz
APPEND boot=casper httpfs=http://192.168.1.1:8080/Kubuntu-15.10/x86/casper/filesystem.squashfs initrd=/Kubuntu-15.10/x86/casper/initrd.lz quiet splash

Nem működik, de úgy tűnik, hogy az initrd-nek támogatnia kellene ezta funkciót. Kitömörítettem az initrd.lz-t és belenéztem. Letöltöttem a httpfs deb csomagját az Ubuntu-tól és ezek függőségeit:

httpfs2_0.1.4-1ubuntu2_i386.deb
libfuse2_2.9.4-1ubuntu1_i386.deb
libc6_2.21-0ubuntu4.1_i386.deb
gcc-5-base_5.2.1-22ubuntu2_i386.deb
libgcc1_5.2.1-22ubuntu2_i386.deb

A csomagokon belüli binárisokat Midnight Commander-rel bemásoltam a kitömörített initrd könyvtáraiba (a .deb csomagokban benne volt, hogy hova kell kerüljenek), a man-t meg doc-t kihagytam. Az eredeti initrd-ben tehát úgy tűnik hogy nem volt benne a httpfs támogatás gyárilag. Ezután újratömörítettem a módosított initrd-t, de ezzel se működik a dolog. Valószinűleg az init scriptben is meg kellene adni, hogy a szükséges httpfs2 kernel modult töltse be. Tud valaki ebben segíteni, hogy ezt pontosan hogy kell csinálni?

Csak kíváncsiságból belenéztem az initrd-be, hogy mit művel, és nekem úgy tűnik, hogy a httpfs támogatást nem két perc lenne megcsinálni. Szvsz nem éri meg a fáradságot. "Gyári" állapotban még csak nem is hallott httpfs paraméterről.
De ha mindenképp ehhez ragaszkodsz, akkor a /init scriptbe bele kellene tákolni a httpfs paraméter lekezelését, illetve az egész Kubuntu iso (nem csak a filesystem.squashfs) csatolását httpfs-el. Ehhez jó minta lehet a /scripts/nfs. Onnan már elvileg a /scripts/casper intézkedik.

Egyébként ha megcsinálod, majd számolj be róla, mennyire használható. Mert én arra tippelek, hogy a végeredmény borzasztó lassú lesz.

Netinstall nem lenne jó?

LABEL UBUNTU NET install (beta)
kernel ubi_net/netinstall/linux
append vga=normal initrd=ubi_net/netinstall/initrd.gz ramdisk_size=16417 root=/dev/ram rw

üdv: pomm

A 852-es kídlap telepötúsa sikeresen befejezádétt

Szervusz!

Azért választottam az lpxelinux.0 bootloader-t, mert bele van gyúrva a gpxe, tehát annak képességeivel (a számomra fontos http protokoll támogatása), de megérti a pxelinux.0 menükonfigurációját. Néhány száz Mbyte iso méretik hatékony a tftp-vel szemben, de a több mint 1 Gbyte méretű iso és esetleg 100Mbit-es hálózati kapcsolat esetén már nem.
A Kubuntu telepítő elindításához nyilvánvalóan nincs szükség a teljes, több mint 1 Gbyte méretű anyagra. Ezért szokták tipikusan nfs-en keresztül megoldani. Így gyorsan betöltődik a telepítő, a többi, amit majd a telepítés során kiválaszt a felhasználó, azt meg majd utána.
Találtam viszont egy leírást a kernel paraméterekről: https://craftedflash.com/info/live-distro-boot-parameters Itt azt írják, hogy a netboot paraméter lehetséges értékei: nfs, cifs, iscsi, tehát http itt nem szerepel. Ez tehát az indító hozzászólásom szerinti módon nem működhet. A fenti kernel paraméterek között szerepel a httpfs paraméter, aminek meg lehet adni url-t az iso-val. Ezt mindenképp ki fogom próbálni.

Fentebb írtam az ipxe-t. Tud http-ről (is) bootolni, szinte bármit.
Csak gondoltam ide is "szólok" :)
<-------
You can't grep on dead trees.