Hlavní navigace

Bootujte ze sítě plnohodnotný systém

Adam Štrauch

Minulý týden jsme se věnovali bootování ze sítě pomocí PXE. Naučili jsme se nainstalovat potřebné prostředí sítě a zkusili si nabootovat live distribuci Parted Magic. Dnes si návod vylepšíme o rozjetí systému ze souborového systému NFS a jako bonus přidáme bootování z obrazů disku a optických médií.

tftpd-hpa

V minulém článku jsem doporučoval TFTP daemona atftpd. Funguje spolehlivě a na malé soubory ho lze bez problémů použít. Navíc k němu patří i velmi kvalitní klient atftp, kterým lze funkčnost serveru ověřit. V článku jsem zmínil další alternativu a to tftpd-hpa. I když jsem byl několik let zvyklý na atftpd, nakonec jsem přešel na tftpd-hpa, protože do balíčku v Debianu/Ubuntu neplete inetd a poradí si i s velkými soubory. Daemon tftpd-hpa je upravené klasické BSD tftpd, které máte v repositářích své distribuce určitě taky, ale je upraven právě pro použití s PXE.

Instalaci provedete z balíčku vaší oblíbené distribuce. Pro mě to je Debian, takže:

# apt-get install tftpd-hpa 

Konfigurační soubor se pak nachází v /etc/default/tftpd-hpa a může vypadat třeba takto:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp/"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure" 

Po změně konfigurace stačí provést restart daemona:

# /etc/init.d/tftpd-hpa restart 

iso obrazy a obrazy disků

Iso obrazy optických médií nebo obrazy pevných disků mohou být také použity pro bootování ze sítě. Systém na nich ale musí počítat s tím, že bude bootován touto cestou, což ve většině případů neplatí. My bychom o této možnosti měli vědět a nějaký ten obraz si zkusit přidat. Stačí ho nahrát někam na TFTP server a upravit konfiguraci syslinuxu.

LABEL iso-obraz
    MENU label ISO obraz nejakeho media
    LINUX memdisk
    INITRD obraz.iso
    APPEND iso 

Všimněte si třetího řádku, kde je uvedena utilitka memdisk. Ta se postará o to, aby bych obraz načten ze sítě. uložen do paměti a „spuštěn“. Musí se také nacházet na TFTP serveru, takže ji tam nakopírujeme.

# cp /usr/lib/syslinux/memdisk /srv/tftp/ 

debootstrap

Po malé předehře se dostáváme k tomu nejzajímavějšímu z dnešního článku. Připravíme si plnohodnotný systém pomocí utility debootstrap, nasdílíme ho pomocí souborového systému NFS a ukážeme si, jak nastavit syslinux, aby ho zavedl.

Utilitka debootstrap je relativně známá a to hlavně pro administrátory distribucí založených na deb balíčcích. Její funkcí je do zadaného adresáře nainstalovat základní systém z určitého repositáře. Pokud si někdy chcete užít instalaci opravdu od píky, je debootstrap perfektním nástrojem a uděláte si s ním systém přesně takový, jaký chcete. Největší výhodou je, že nejste omezení instalátorem. To je taky přesně to co potřebujeme. Naším cílem je připravit systém na bootování z NFS, což znamená upravit jeho initrd, postarat se aby se během bootování nesnažil chovat chytře k nastavení sitě a doinstalovat libovolné balíčky.

Jelikož je debootstrap určen pro distribuce založené na balíčcích deb, použijeme jako příklad Debian Squeeze.

# cd /mnt/
# debootstrap --arch=i386 squeeze debian6 

Teď si dejte kafe nebo čaj, protože chvilku potrvá, než se stáhnou balíčky základního systému a nainstalují se. Debootstrap ještě můžete doplnit skriptem, který se postará třeba o rozdělení disku, nastavení některých parametrů systému a podobně. Když se vám podaří dokončit tento návod a trochu debootstrap prostudujete, můžete chrlit předinstalované servery jak na běžícím páse.

Je-li hotovo, tak musíme nový systém trochu poupravit. Začneme tím, že do něj připojíme adresáře /proc, /sys a /dev.

# mount -o bind /dev debian6/dev/
# mount -t proc none debian6/proc
# mount -t sysfs none debian6/sys 

Pak použijeme chroot a přepneme se do něj.

# chroot debian6 

Pamatujte si, že jste v chrootu. Pokud máte otevřeno víc terminálů a nemáte je moc dobře označeny, můžete si zadělat na nezáviděníhodné chvilky.

Nejdříve vytvoříme uživatele a změníme heslo uživateli root.

# adduser uzivatel
# passwd 

Pak se mrkneme do souboru /etc/fstab a vložíme tam několik důležitých bodů k připojení.

proc            /proc           proc    defaults        0       0
/dev/nfs        /               nfs     _netdev,rsize=32768,wsize=32768,hard,async,noatime,udp,nolock,nfsvers=4        1       1
none            /tmp            tmpfs   defaults        0       0
none            /var/run        tmpfs   defaults        0       0
none            /var/lock       tmpfs   defaults        0       0
none            /var/tmp        tmpfs   defaults        0       0 

Za pozornost stojí řádek s /dev/nfs. Jsou na něm uvedeny parametry, které doporučovali čtenáři v diskusi v minulém článku.

  • _netdev – pro připojení je potřeba funkční síť
  • rsize, wsize – velikost datových rámců v komunikaci se serverem
  • hard – když se stane něco se spojením se serverem, nedojde k vyvolání chyby
  • async – asynchronní zápis do souborového systému
  • noatime – neměnit u souborů čas přístupu
  • udp – používat UDP
  • nolock – nepoužívat NFS zámky
  • nfsvers=4 – používat NFS verze 4

Detaily k jednotlivým volbám najdete v manuálové stránce programu mount a také na tldp.org.

Nyní můžeme pokračovat instalací jádra a úpravou initrd. Tomu je potřeba přidat podporu pro boot z NFS.

# apt-get install linux-image-2.6.32-5-686 

Balíček s jádrem obsahuje závislosti jak na initrd, tak na nástroje pro práci s ním. Po instalaci otevřeme soubor /etc/initramfs-tools/initram­fs.conf a upravíme hodnoty MODULES a BOOT následovně.

MODULES=netboot
BOOT=nfs 

Když máme hotovo, upravíme existující nové initrd.

# update-initramfs -u 

Než v tomto systému ukončíte činnost a zkusíte, jestli se do něj dá nabootovat, je potřeba zajistit, aby se nezměnilo nastavení sítě. jádro se o síť postará a pak už by na ní žádná aplikace neměla sahat, jinak se systém bez jediného slova zasekne. Problém by mohl nastat, kdybyste třeba nainstalovali NetworkManager, který si bere síťová rozhraní ochotně do vlastní režie. Ujistěte se, že žádná taková aplikace neběží, nebude potřeba.

NFS

Konfigurace NFS je rychlá, protože nepotřebujeme nic speciálního. V Debianu/Ubuntu stačí nainstalovat balíček nfs-kernel-server a do souboru /etc/exports doplnit cestu k adresáři s vytvořeným systémem:

/mnt/debian6 x.x.x.x/24(rw,no_root_squash,async) 

Kde rw zajistí, že bude souborový systém zapisovatelný, no_root_squash vypne ochranu, kdy soubory vlastnící uživateli root má uživatel nobody a async se postará o asynchronní přenos. Nezapomeňte změnit rozsah IP adres, které budou mít k tomuto disku přístup. Nastavení zpečetíme restartem NFS:

# /etc/init.d/nfs-kernel-server restart 

Úprava syslinuxu

Nyní překopírujeme připravené jádro a initrd na TFTP server.

# cp debian6/boot/vmlinuz-2.6.32-5-686 /srv/tftp/debian6-2.6.32.5-686
# cp debian6/boot/initrd.img-2.6.32-5-686 /srv/tftp/debian6-initrd-2.6.32.5-686 

A do konfiguračního souboru /srv/tftp/pxe­linux.cfg/defau­lt syslinuxu přidáme novou položku:

LABEL linux
    MENU label Debian 6 NFS
    MENU default
    KERNEL debian6-2.6.32.5-686
    APPEND root=/dev/nfs initrd=debian6-initrd-2.6.32.5-686 nfsroot=x.x.x.x:/mnt/debian6 ip=dhcp rw selinux=0 

Místo x.x.x.x vyplňte adresu serveru se syslinuxem a máte hotovo. Pokud jste během konfigurace neudělali chybu, libovolný počítač v síti s podporou PXE nabootuje do tohoto nového Debianu.

Závěr

Takto vytvořený systém jede téměř nerozeznatelně od lokální instalace včetně desktopového prostředí KDE. Když si dáte práci s parametry pro připojení souborového systému NFS, které sedne k vaší síti, určitě budete při běžné práci spokojení.

Našli jste v článku chybu?

27. 5. 2011 2:20

Pavel Píša (neregistrovaný)

Důležité upozornění, pokud po debootsrap plánujete vstup do prostoru vytvořeného systému přes chroot a upgrade/instalaci balíků nástroji Debianu, zajistěte blokování spouštění RC scriptů na stroji distribujícím FS do sítě.

Viz popis

<chroot>/usr/sbin/po­licy-rc.d

v mojí přednášce uvedené v diskuzi pod minulým článkem. Jinak první instalace/upgrade balíku, který obsahuje rc.scripty ovlivňující stav jádra/síťových služeb nebo spouštějící démony povede k rozložení runtime stavu stroje, nak…

21. 7. 2011 12:16

Michal (neregistrovaný)

Zdravim vsechny

Muzete sem nekdo dat parametry pro NFS mount /home adresaru tak, aby plnohodnotne jelo i KDE? Zatim jsem vypozoroval, ze KDE4 si (pri pouziti parametru nolock) stezuj, ze lock potrebuje a odmita ulozi nastaveni plochy.

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Změny v cestovních náhradách 2017

Změny v cestovních náhradách 2017

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

120na80.cz: Na ucho teplý, nebo studený obklad?

Na ucho teplý, nebo studený obklad?

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky