Bootujte ze sítě plnohodnotný systém

Adam Štrauch 27. 5. 2011

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?
Vitalia.cz: Signál roztroušené sklerózy: brnění končetin

Signál roztroušené sklerózy: brnění končetin

120na80.cz: I tuto vodu můžete pít

I tuto vodu můžete pít

Podnikatel.cz: Selhala pokladna k EET. Kdo zaplatí pokutu?

Selhala pokladna k EET. Kdo zaplatí pokutu?

Lupa.cz: Tomáš Prouza: Stát bude „digital first“

Tomáš Prouza: Stát bude „digital first“

Vitalia.cz: Pepsi Cola mění sirup za cukr

Pepsi Cola mění sirup za cukr

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Měšec.cz: Banky umí platby na kartu, jen to neříkají

Banky umí platby na kartu, jen to neříkají

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Podnikatel.cz: Účtenky v rámci EET? Klidně emailem

Účtenky v rámci EET? Klidně emailem

Vitalia.cz: Nejdůležitější změny v potravinářské novele

Nejdůležitější změny v potravinářské novele

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

DigiZone.cz: Oživení ekonomiky by mělo navýšit reklamu

Oživení ekonomiky by mělo navýšit reklamu

Měšec.cz: Investice do drahých kovů - znáte základní chyby?

Investice do drahých kovů - znáte základní chyby?

Podnikatel.cz: 3 velké průšvihy obchodních řetězců

3 velké průšvihy obchodních řetězců

Lupa.cz: IT scéna po brexitu: přijde exodus vývojářů?

IT scéna po brexitu: přijde exodus vývojářů?

Lupa.cz: Největší torrentový web KickassTorrents padl

Největší torrentový web KickassTorrents padl

Vitalia.cz: Klíšťata letos řádí, skvrna se udělá jen někomu

Klíšťata letos řádí, skvrna se udělá jen někomu

Vitalia.cz: Bio vejce nepoznají ani veterináři

Bio vejce nepoznají ani veterináři

Lupa.cz: Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Vodafone umí volání přes Wi-Fi. Z ciziny jako v ČR

Podnikatel.cz: Polská vejce na českém pultu Albertu

Polská vejce na českém pultu Albertu