PXE boot + dd

Dzavy

PXE boot + dd
« kdy: 12. 12. 2015, 01:52:01 »
Potřebuju úplně jednoduchou věc - nabootovat ze sítě a pokud možno automaticky naimigovat lokální disk obrazem ze sítě. To je to taková exotika? Našel jsem jenom řešení s Clonezillou a zatím s ní mám problémy (zbytečně velká, zoufalá dokumentace, plno chyb)...tak jsem se chtěl zeptat jestli to někdo neřešil. Psát si pro to vlastní "distribuci" mi přijde zbytečný a komplikovaný.

Stačí aby to umělo základní typy ATA/SATA a síťovek, konfigurace ideálně v DHCP nebo TFTP, image z NFS, nic víc.


mhepp

Re:PXE boot + dd
« Odpověď #1 kdy: 12. 12. 2015, 08:51:14 »
Pro jake mnozsrvi pocitacu to resis? Je to jednorazova akce? Pokud pro vice nez se Ti oplati obihat s instalacnim mediem a pravidelne, pak se podivej po OPSI. Jinak TFTP, PXE, nfsroot nastavit rucne. Na to je navodu dost.

Re:PXE boot + dd
« Odpověď #2 kdy: 12. 12. 2015, 09:27:39 »
Klonovat pomocí dd je při současných velikostech disků dost hloupost. Navíc takový image nemůžeš nahrát na libovolný disk, musel bys dodržet velikost disku. Určitě chceš použít ntfsclone (Windows) nebo tar/dump (unixoidní systémy).

Nejpohodovější PXE bootování, který jsem zatím viděl, má FreeBSD. Potřebuješ:

1. přidat 3 řádky do konfigurace DHCP serveru
2. na TFTP server umístit jeden soubor (pxeboot)
3. přes NFS vyexportovat root (nemusíš FreeBSD instalovat, stačí rozbalit distribuční soubory base a kernel z ftp://ftp.cz.freebsd.org/pub/FreeBSD/releases/amd64/amd64/10.2-RELEASE/)
4. při prvním bootu mít ten NFS share rw a doinstalovat potřebné balíky (viz freshports.org - ve tvém případě to asi bude jeden příkaz "pkg install fusefs-ntfs")
5. nastavit spuštění ntfsclone po startu (nejspíš budeš chtít upravit /etc/ttys nebo /etc/rc.local)
6. pokud chceš i vytvářet partitiony, FreeBSĎácký gpart je příjemný, dobře skriptovatelný a nejspíš umí všechno, co bys mohl potřbovat (GPT i MBR, zapisování bootsektorů)

Pokud bys FreeBSD chtěl použít, rád poradím s detaily. Pokud bys chtěl Linux, celkem bych se přimlouval za TinyCore, ten je rozumně velký, celkem čistý a pochopitelný a dá se docela slušně upravit.

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:PXE boot + dd
« Odpověď #3 kdy: 12. 12. 2015, 12:37:57 »
Tak me napada, ze kdyz v tech strojich je lokalni disk, jestlipak umi umet bootovat ze site? Ze by tam jako vyrobce prihodil bootrom, protoze mel dobrou naladu?

Re:PXE boot + dd
« Odpověď #4 kdy: 12. 12. 2015, 12:41:39 »
Tak me napada, ze kdyz v tech strojich je lokalni disk, jestlipak umi umet bootovat ze site? Ze by tam jako vyrobce prihodil bootrom, protoze mel dobrou naladu?
Bootování ze sítě přes PXE umí úplně každý současný počítač a úplně každá současná síťovka má PXE rom.


Dzavy

Re:PXE boot + dd
« Odpověď #5 kdy: 12. 12. 2015, 15:58:56 »
Image bude mit cca 40MB (je to OpenWRT) a po prvnim startu si sam zvetsi root partition podle velikosti disku :) takze dd by melo stacit, ale urcite se podivam i na jiny moznosti. Mam to ted primarne na jednodussi vyvoj - nez muset porad kopirovat novej build na flashku atd.

OPSI jsem neznal, dik, i kdyz to fakt vypada trochu jako overkill.

Mirek Prymek: dik moc za tip, cekal jsem ze to budu muset udelat takhle, ale nevypada to zas tak hrozne. Asi nejdriv zkusim AlpineLinux (ten trochu znam), ale tomu BSD se urcite branit nebudu.

Re:PXE boot + dd
« Odpověď #6 kdy: 12. 12. 2015, 17:25:07 »
Image bude mit cca 40MB (je to OpenWRT) a po prvnim startu si sam zvetsi root partition podle velikosti disku :) takze dd by melo stacit,
Aha, tak to je jiná, v tom případě je určitě dd správná volba. Pak to teda asi chceš hrnout na nějaký kdovíjaký zařízení s kdovíjakou platformou, tak to by BSD nemusela být dobrá volba.

Pokud bys z nějakýho důvodu cestou FreeBSD nakonec chtěl jít, tak se mi určitě ozvi - už jsem to používal, takže vím, jak na to, a potřebuju to tak jako tak kvůli čemusi oživit, takže přesnej návod můžu sepsat, případně i dát ke stažení všechny potřebný soubory. Akorát to teď pro mě není úplně priorita číslo jedna, takže nemůžu slíbit, že by to bylo zítra ;)

nobody

Re:PXE boot + dd
« Odpověď #7 kdy: 12. 12. 2015, 18:08:49 »
na GNU/Linux server isc-dhcpd-server + tftpd-hpa + pxelinux (nebo ipxe)
pro stanice pak priprav kernel + initramfs s moduly pro nfs a sitovku co nems v jadre, das si tam busybox s dd appletem a pridas skript co pripoji nfs share a pusti dd...

Re:PXE boot + dd
« Odpověď #8 kdy: 12. 12. 2015, 20:08:28 »
Klonovat pomocí dd je při současných velikostech disků dost hloupost. Navíc takový image nemůžeš nahrát na libovolný disk, musel bys dodržet velikost disku.

To neni tak uplne pravda, on se ten image da namountit a pak si s tim delat cokoli treba na urovni FS ;)
Kód: [Vybrat]
sudo fdisk -l ddImage.img
sudo mount -o loop,offset=partitionOffset ddImage.img ~/temp/tmpmnt/

Jenda

Re:PXE boot + dd
« Odpověď #9 kdy: 12. 12. 2015, 20:35:29 »
Tazatel: libovolná distribuce, u které rozchodíš bootování ze sítě, a do init skriptů si dáš příkaz, který ti systém zkopíruje (dd, bmaptool, tar, rsync…).
Kód: [Vybrat]
sudo fdisk -l ddImage.img
sudo mount -o loop,offset=partitionOffset ddImage.img ~/temp/tmpmnt/
kpartx

Re:PXE boot + dd
« Odpověď #10 kdy: 12. 12. 2015, 21:28:32 »
To neni tak uplne pravda, on se ten image da namountit a pak si s tim delat cokoli treba na urovni FS ;)
Jo, můžeš třeba pak na úrovni FS použít ten ntfsclone, co's mohl použít rovnou :)

mhepp

Re:PXE boot + dd
« Odpověď #11 kdy: 12. 12. 2015, 23:27:07 »
OPSI jsem nastřelil protože jsi nenapsal přesné potřeby. Pokud se jedná o jednotky počítačů, tak to rozhodně nemá cenu. Zajímavé zacíná být od okamžiku kdy máš učebnu, nejlépe však více. V práci nám obhospodařuje cca 1000 stanic na spoustě lokalit a je to zlatá věc.

Jinak to, co psal Mirek Prýmek ohledně *BSD, tak platí víceméně s mírnýma obměnama i pro Linux. V podstatě na to můžeš použít i to OpenWRT. Nestavený DHCP server, TFTPD (obojí umí zastat Dnsmasq) plus NFS export root-u toto OpenWRT. A můžeš zkoušet. Až odladíš OpenWRT přes NFS export, tak vyzkoušíš image na disku a je to...

Image bude mit cca 40MB (je to OpenWRT) a po prvnim startu si sam zvetsi root partition podle velikosti disku :) takze dd by melo stacit, ale urcite se podivam i na jiny moznosti. Mam to ted primarne na jednodussi vyvoj - nez muset porad kopirovat novej build na flashku atd.

OPSI jsem neznal, dik, i kdyz to fakt vypada trochu jako overkill.

Mirek Prymek: dik moc za tip, cekal jsem ze to budu muset udelat takhle, ale nevypada to zas tak hrozne. Asi nejdriv zkusim AlpineLinux (ten trochu znam), ale tomu BSD se urcite branit nebudu.

Re:PXE boot + dd
« Odpověď #12 kdy: 13. 12. 2015, 07:20:51 »
Jinak to, co psal Mirek Prýmek ohledně *BSD, tak platí víceméně s mírnýma obměnama i pro Linux. V podstatě na to můžeš použít i to OpenWRT. Nestavený DHCP server, TFTPD (obojí umí zastat Dnsmasq) plus NFS export root-u toto OpenWRT. A můžeš zkoušet. Až odladíš OpenWRT přes NFS export, tak vyzkoušíš image na disku a je to...
Velký rozdíl je v tom, že:
1. FreeBSD ani pro pxe boot nepoužívá initrd, který způsobuje problémy, zvlášť pokud chci nějak zasahovat do bootovacích skriptů
2. má přímo v initscriptech zabudovanou podporu pro bezdiskové fungování - pokud root mountnu rw, můžu normálně věci měnit na NFS serveru, pokud mountnu ro, automaticky se mi vytvoří ramdiskové /tmp, /var apod.
3. (tohle se v tomhle případě nevyužije) má bezvadně vyřešenou možnost customizace konfgurace při diskless fungování - stačí adresář /conf, v něm adresář default a pak adresáře podle mac adres pro různé speciální stroje. Cokoli je v nich, se automaticky sloučí s default konfigurací, vytvoří stejnojmenný ramdisk a namountuje na stejné místo v rootu. Takže tímhle způsobem můžeš třeba u některých strojů překrýt klidně /bin, kdybys to potřeboval :)

Nevýhodou je pomalejší boot (zvlášť oproti systemd) a menší podpora hw.

jose_d

Re:PXE boot + dd
« Odpověď #13 kdy: 29. 12. 2015, 14:21:35 »
Potřebuju úplně jednoduchou věc - nabootovat ze sítě a pokud možno automaticky naimigovat lokální disk obrazem ze sítě. To je to taková exotika? Našel jsem jenom řešení s Clonezillou a zatím s ní mám problémy (zbytečně velká, zoufalá dokumentace, plno chyb)...tak jsem se chtěl zeptat jestli to někdo neřešil. Psát si pro to vlastní "distribuci" mi přijde zbytečný a komplikovaný.

Stačí aby to umělo základní typy ATA/SATA a síťovek, konfigurace ideálně v DHCP nebo TFTP, image z NFS, nic víc.

mozna se chces kouknout na: http://kadeploy3.gforge.inria.fr/, ale mozna to je to take kladivo na vrabce.

Kdybych to resil ja, tak si nastavim diskless boot z RO partisny me oblibene distribuce (je to celkem jedno jake, jen u centosu a spol. musis mit spesl kernel image ktera v sobe ma moznost sitoveho bootu, ale je na vsech mirrorech), a do rc.local diskless FS nebo tak nekam naskriptuju vytvoreni partisen,  data prenesu rsyncem - rsync over ssh ma i jakousi kompresi, tak to neni takovy sitovy load jako raw dd.

Jediny nad cim se budes muset zamyslet je jak menit preferenci bootu po naliti image - aby se preimagovani disku nedelalo dokola. Da se resit pomoci ipmitool-u, zmenou konfiguraku dhcp  zasahem do souboru v tftp a urcite x dalsimi zpusoby.


Re:PXE boot + dd
« Odpověď #14 kdy: 29. 12. 2015, 15:05:40 »
Jediny nad cim se budes muset zamyslet je jak menit preferenci bootu po naliti image - aby se preimagovani disku nedelalo dokola. Da se resit pomoci ipmitool-u, zmenou konfiguraku dhcp  zasahem do souboru v tftp a urcite x dalsimi zpusoby.
Imho nejlíp automatizovatelný řešení jsou dvě:

1. konfigurace DHCP v LDAPu - pro nabootování klonovacího image je potřeba změnit v LDAPu jenom jeden záznam, potom smazat

2. bootovat vždycky přes PXE, přičemž defaultní konfigurace pxelinuxu je nabootovat z disku. Pokud chci nabootovat něco jiného, vytvořím v pxelinux.cfg symlink konfigurace bootující daný image na MAC daného stroje. Po nabootování ho smažu.

BTW, u PXE je docela oříšek bezpečnost. DHCP server se dá snadno podvrhnout a bránit se tomu dá jenom DHCP snoopingem, který mají jenom dražší switche.