OpenWRT jako server pro boot ze sítě

OpenWRT jako server pro boot ze sítě
« kdy: 14. 06. 2022, 19:03:12 »
Zdravím, potřeboval bych nějakého znalce konfigurace možností OpenWRT jako boot serveru pro start čehokoli ze sítě. Aktuálně používám nějakou konfiguraci, která při „legacy“ startu ze síťovkyvypíše menu, bootuju obvykle takové ty menší věci jako memtest, netinstall ISO a tak, ale třeba i některé live distra jako ISO, co se vejdou třeba na CD (tj. do 700 MB). Bohužel umím použít jen TFTP (to mi na OpenWRT běží), což je pro start takového systému dost pomalé, to CD se načítá minuty neodpovídající gigabitové síťovce, dokonce ani 100Mbitu, spíš tak 10Mbitu.
Klasicky používám třeba:
Kód: [Vybrat]
LABEL 3
      LINUX memdisk
      INITRD soubor.iso
      APPEND iso
Ono to chodí, ale jak říkám: děsně pomalu. Mně by se líbilo, kdyby to umělo load třeba z NFS, nebo i http a klidně i z jiného serveru než z toho OpenWRT, pokud to jde (ať už z lokálního, nebo i z webu - takový boot netinstall.iso přímo ze sítě by se mi líbil moc ;)).

A kdyby mi někdo vysvětlil, jak použít OpenWRT zároveň jako boot server pro bootování přes UEFI, byl bych rád. Pokud by to OpenWRT neuměl a byl by k tomu nutný extra server, pak bych uvítal, kdyby ho na něj OpenWRT uměl aspoň nějak poslat (nebo by třeba OpenWRT byl nastavený jen jako DHCP server, ale to bootování by řešil jiný server). Nevím, jen teoretizuju, možná plácám blbosti, ale určitě bych byl nerad, kdybych se musel na OpenWRT zříci DHCP, protože klasické DHCP mám docela vyladěné, různé stroje dostávají různé adresy a různé brány, některé jsou i bez bran, nechtěl bych to nastavovat na jiném serveru, když router je prakticky pořád online a tahle úloha je primárně svěřena jemu.

Díky moc předem.
« Poslední změna: 14. 06. 2022, 20:15:36 od Petr Krčmář »


RDa

  • *****
  • 1 842
    • Zobrazit profil
    • E-mail
Re:OpenWRT jako server pro boot ze sítě
« Odpověď #1 kdy: 14. 06. 2022, 20:53:50 »
Ja nemam OpenWRT, ale x86 router, na kterem bezi TFTP odkud se taha bootloader s menu na vyber, dalsi stage je uz z NFS hostovanem na jinem serveru. Je to udelany pro BIOS (32bit x86 + 64bit x86) a UEFI (64bit x86), pro nektere stroje mam pak zvlast config bez menu na primy boot. Do budoucna jsem uvazoval i o armech.. takze mam na tftp rozhozeny loadery podle platforem do adresaru.

Bootuji nejcasteji do Gentoo LiveCD pres NFS, kde je castecne rozbalene, tj. netaha se cely image, ale po siti pristupuje k tomu komprimovanemu RO FS + myslim ze jsem upravil jejich init skript, protoze to neco blbe detekovalo pro netboot (myslim ze jsem tam vynucoval urcitou verzi nfs protokolu.. je v tom celkem bordel).

Takze jo - jde to udelat, ale nekdy je treba ty ISO obrazy upravit (gentoo live v tomto smeru melo jakousi pripravu na ten netboot, ale out of box to nejelo).

Re:OpenWRT jako server pro boot ze sítě
« Odpověď #2 kdy: 14. 06. 2022, 21:10:14 »
jj, taky bych ocekaval, ze zacatek je co nejmensi a zbytek loadovani uz jede z lepsiho uloziste nez tftp.

k3dAR

  • *****
  • 2 353
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:OpenWRT jako server pro boot ze sítě
« Odpověď #3 kdy: 14. 06. 2022, 21:59:29 »
na OpenWRT sem to jeste nezprovoznoval, ale ten zaklad zda se mas, takze obecne:
- pouzivas pxelinux a z menu iso resis pres memdisk, ten sem davno zavrhl, jednak kopiruje cele iso nejdriv do ram klienta, coz zaroven jede pres tftp pomalej protokol, druhak pak v klientu to iso se silenejma hackama simuluje jako disk a pak se z neho jakoze bootne

- ja pouzivam pxelinux (pro legacy) a iPXE (pro UEFI), v obou resim primarne *buntu a Windows

- *buntu principem ze natahne jadro a initramfs (u pxelinux pres tftp pripadne subverze lpxelinux umi i po http, u iPXE pres http) a system bere pres nfs kde mam nasdilene ta isa pripojene s vyuzitim voleb pro boot ze site (na ktere je initramfs pripraven (jine nez *buntu to maji take ale jinak)), pro automatickou instalaci pak pripravenej preseed.seed

- windows resim pres wimboot (spada pod project iPXE, ale lze pouzit i s pxelinux) kterej natahne WinPE + skript v kterem mam pripojeni sitoveho (samba) disku a z neho pustenej setup z prislusneho (opet pripojeneho) windows iso, pro automatickou instalaci pak jeste pouzit unatented.xml

priklad xubuntu, iso primontovane do /data/pxe/${neco}, z nej vykopirovane vmlinuz a initrd do korene pro tftp(boot):
Kód: [Vybrat]
label xubuntu-200420-amd64-live
  menu label ^Xubuntu 20.04.2.0 64bit (Vyzkouset)
  kernel vmlinuz.x200420-amd64
  append root=/dev/nfs netboot=nfs nfsroot=10.10.10.254:/data/pxe/xubuntu-200420-amd64 file=/cdrom/preseed/xubuntu.seed boot=casper initrd=initrd.x200420-amd64 quiet splash interface=auto ip=dhcp net.ifnames=0 ---
  IPAPPEND 2

priklad Clonezilla (verze zalozena na Debianu), iso primontovane do /var/lib/tftpboot/iso/clonezilla-live, jadro a initrd nekopirovane, bere se z primo z cesty pripojeneho iso, pro ukladani/nacitani image pouzte samba sdileni CloneZilla:
Kód: [Vybrat]
label CZ-RUCNE
  menu label CloneZilla LOAD/SAVE Rucne
  kernel iso/clonezilla-live/live/vmlinuz
  append ocs_daemonon="ssh" ocs_live_run="ocs-live-general" ocs_prerun="mount -t cifs -o guest //10.10.10.254/CloneZilla /home/partimag" quiet silent union=overlay username=user components nodmraid net.ifnames=0 silent boot=live config noswap nolocales edd=on nomodeset noprompt keyboard-layouts=NONE ocs_live_batch="no" locales="en_US.UTF-8" vga=788 mei.blacklist=yes mei_me.blacklist=yes i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.blacklist=yes fetch=tftp://10.10.10.254/iso/clonezilla-live/live/filesystem.squashfs initrd=iso/clonezilla-live/live/initrd.img

RDa

  • *****
  • 1 842
    • Zobrazit profil
    • E-mail
Re:OpenWRT jako server pro boot ze sítě
« Odpověď #4 kdy: 14. 06. 2022, 22:36:51 »
Pro legacy mam pxelinux a pro uefi pak syslinux, ale v konfiguraci DHCP je treba dulezite toto pro BIOS+UEFI, viz zdroj informaci v odkazu v komentari:

Kód: [Vybrat]
  # Provide PXE clients with appropriate information
  class "pxeclient" {
    match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
#    vendor-option-space PXE;

    # At least one of the vendor-specific PXE options must be set in
    # order for the client boot ROMs to realize that we are a PXE-compliant
    # server.  We set the MCAST IP address to 0.0.0.0 to tell the boot ROM
    # that we can't provide multicast TFTP.

#    option PXE.mtftp-ip 0.0.0.0;

    # This is the name of the file the boot ROMs should download.
    # filename "/pxe/pxelinux.0";
    next-server 192.168.68.5;
  }

###  # Provide Etherboot clients with appropriate information
###  class "etherboot" {
###    match if substring(option vendor-class-identifier, 0, 9) = "Etherboot";
###    filename "vmlinuz_arch";
###  }

    # 2/2 of https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#UEFI
    class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

        # About "architecture-type":
        # 06 (EFI IA32) is sometimes (mis)used for legacy (CSM) boot of x64 machines by some vendors.
        # 07 (EFI BC) is sometimes (mis)used for EFI x64 boot by some vendors.
        if option architecture-type = 00:00 {
            filename "pxe-bios/pxelinux.0";
        } elsif option architecture-type = 00:09 {
            filename "pxe-uefi-x64/syslinux.efi";
        } elsif option architecture-type = 00:07 {
            filename "pxe-uefi-x64/syslinux.efi";
        } elsif option architecture-type = 00:06 {
            # should be 32bit version
            filename "pxe-uefi-ia32/syslinux.efi";
        }
    }


k3dAR

  • *****
  • 2 353
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:OpenWRT jako server pro boot ze sítě
« Odpověď #5 kdy: 15. 06. 2022, 02:04:44 »
Pro legacy mam pxelinux a pro uefi pak syslinux [...]
kdyz sem pred lety resil PXE s UEFI, tak s pxelinux/syslinux sem mel nejake problemy, potom co se ponoril do do te doby "odmitaneho" iPXE bych uz nechtel jinak, ty moznosti iPXE jsou o svetelne roky dale ;-) promene, podminky, zmena menu za chodu, vstup uzivatele kterej se vlozi do promene, atd, atd..

Re:OpenWRT jako server pro boot ze sítě
« Odpověď #6 kdy: 15. 06. 2022, 10:38:39 »
Pridavam +1 hlas pro ipxe :)


Pouzivam undionly.kpxe pro legacy/pcbios a ipxe.efi pro uefi spolu s embedded skriptem, ktery mi jenom natahne menu pres http (takze pro upravu menu nemusim delat novou kompilaci ipxe, ale jenom si upravim to menu samotne).
Soucasne se z toho legacy/pcbios da udelat chainload na klasicky pxelinux.0, ktery muze mit menu jeste svoje, zcela nezavisle, kdyby to nekdo k necemu potreboval.


ipxe podporuje kde co, klicove je hlavne http, nfs a tftp, na coz si clovek muze nasmerovat jednotlive polozky v menu.
Podporu dodatecnych funkci a protokolu si tam clovek muze zapnout v src/config/general.h podle potreby, defaultne jsou aktivni jen ty nejcasteji pouzivane.


Jen obcas zapolim s tim zjistit, jake maji byt spravne parametry pro kernel, pokud chce clovek treba instalovat Linux ze site, kazda verze to ma trosku jinak, v mezicase je nejakej parametr pozmenenej z legacy na deprecated, neco chce zmeny na strane nfs serveru a kde ceho a pak se clovek divi, ale to uz neni problem ipxe samotneho.