Kategória: Linux a sieť

Zmenené: 15. august 2012

Údržba po sieti

Ak máte na starosti viac ako len pár počítačov, iste viete, že ich údržba nie je celkom jednoduchá a často vyžaduje zásahy. Aj preto vám môže prísť vhod popis využitia možností sieťového zavádzania systému pri správe počítačov a operačných systémov.

Znalosť väčšiny počítačových odborníkov začína i končí na tom, že aby počítač naštartoval, potrebuje na disku nainštalovaný Windows. Lenže, ako to už s takýmito odborníkmi býva, ani zďaleka to nie je pravda. Počítač k svojmu štartu nepotrebuje ani Windows a ani na disku (dokonca ani pevný disk vôbec). Samozrejme, s Windows veľa iných možností nemáte, ale ak na spustenie počítača použijete niečo iné (a nemusí to byť práve Linux), možnosti sa rozšíria. Rozšíria, pretože ho môžete mať nainštalovaný na USB kľúči, či CD/DVD disku.

Samozrejme, na bežnú prácu je najvhodnejší spôsob, keď je systém nainštalovaný na disku, ale práve pri správe veľkého počtu strojov sa skôr alebo neskôr pri behaní s CD v ruke stretnete so zákonom schválnosti, ktorý vraví, že budete potrebovať práve to CD, ktoré ste si nevzali. V takých situáciách iste začnete rozmýšľať, či by to nešlo aj inak. Ide!

Princíp činnosti

Spôsob zavádzania systému po sieti, ktorému sa budem venovať, je označovaný skratkou PXE (Preboot eXecution Environment). Tento spôsob sa od ostatných líši najmä v tom, že je kompletne realizovaný na sieťovej úrovni a okrem RAM nevyužíva žiadne médium (disk, disketa a pod) lokálneho počítača. Aby však mohol bez týchto lokálnych médií, musí túto metu štartovania podporovať sieťová karta musí obsahovať tzv. PXE boot ROM, čo spĺňajú asi všetky dnešné karty.

PXEboot01.png

Komunikácia PXE

Aby však mohol počítač naštartovať bez toho, aby potreboval lokálne úložisko, je potrebné mu v sieti zaistiť služby (na iných staniciach), ktoré mu poskytne všetko potrebné, na čom taký sieťový štart závisí. Na základné štartovanie musí byť v sieti nastavený DHCP server a TFTP server. PXE klient po štarte inicializuje PXE boot ROM, ktorý si vyžiada informácie prostredníctvom DHCP (Dynamic Host Configuration Protocol). Odpoveď DHCP servera musí, okrem iných informácií, obsahovať meno štartovacieho súboru, ktorý sa následne PXE klient pokúsi stiahnuť prostredníctvom protokolu TFTP (Trival File Transfer Protocol). Ak PXE klient úspešne stiahne tento súbor, spustí ho a zvyšok už závisí na tom, čo tento súbor dokáže urobiť. V prípade, že tento proces zlyhá (napríklad lebo nikto neposkytuje meno zavádzacieho súboru), proces štartovania systému pokračuje iným médiom.

Implementácii potrebných služieb (DHCP + TFTP + zavádzací súbor), ktorá poskytuje klientom sieťový štart, sa hovorí PXE server. Taký PXE server môže byť zrealizovaný ako celok na jednom stroji, ale pokojne to môžu byť samostatné služby na jednom alebo i na rôznych strojoch. Zúfať nemusíte ani v prípade, že vaša sieťová karta nepodporuje PXE, existuje projekt Etherboot, ktorý už ale nie je vyvíjaný a nahradil ho projekt gPXE, sídliaci na rovnakej adrese.

Nenapadá vás využitie takéhoto sieťového štartu pri správe počítačov? Podľa mňa záleží len na fantázii (a technických možnostiach), ale ako príklad môžu poslúžiť:

  • inštalačný systém
  • záchranný systém
  • zálohovací systém
  • testovací systém

V článku vás postupne prevediem vytvorením posledných troch.

Príprava prostredia

Aby ste si mohli vytvoriť vlastné prostredie sieťového zavádzania, potrebujete (okrem klientov, ktorí to podporujú, ale tomu sa venovať nebudem) pripraviť PXE server, ktorý sa skladá zo služby DHCP, TFTP a zavádzacieho súboru. Vo väčšine distribúcií Linuxu môžete tieto služby vytvoriť pomocou viacerých programov, stačí si vybrať. Aby som vám výber uľahčil, ja používam tieto nástroje:

  • DHCP server dnsmasq;
  • TFTP server dnsmasq a
  • zavádzací súbor PXELinux.

Ako ste si iste všimli, využijem vlastne len dva programy:

  • dnsmasq (kešovací) DNS server, ale má zabudovanú aj podporu DHCP a TFTP.
  • pxelinux je časť projektu SysLinux, ktorý ponúka zavádzanie systému z rôznych médií, vrátane PXE.

Ak vás môj výber neuspokojil, môžete skúsiť kombináciu programov ISC DHCP a TFTP HPA. Častou otázkou býva, či je možné použiť DHCP server smerovača. Odpoveď nie je jednoduchá, pretože to závisí na tom, či služba DHCP vášho smerovača dokáže klientom poslať potrebné informácie (pri malých domácich smerovačoch skôr nie ako áno). V Debiane nainštalujete spomínané programy z balíkov dnsmasq a syslinux:

aptitude install dnsmasq syslinux

Po inštalácii nie sú tieto programy pripravené na okamžité použitie, pretože východzie nastavenie dnsmasq má podporu DHCP a TFTP vypnutú a balík syslinux zase žiadnu službu neposkytuje, len obsahuje súbory potrebné na zavedenie.

Upozornenie

Pokiaľ to túžite vyskúšať vo Windows, existuje nástroj Tftp32/64, ktorý tiež poskytuje služby DHCP a TFTP, a to ako pre 32, tak i pre 64b prostredie.

Príprava TFTP

Ešte pred tým, ako v dnsmasq spustíte podporu TFTP je dobré si najprv pripraviť umiestnenie, ktoré bude slúžiť ako koreň TFTP. Je to v podstate adresár, z ktorého bude TFTP server posielať klientom vyžiadané súbory. V dobe nedávno minulej bol používaný adresár /var/lib/tftpboot/, ja však odporučím použiť adresár v /srv, ktorý je na to odporúčaný štandardom FHS (Filesystem hierarchy Standard). Takže ako prvý krok si vytvorte podadresár nazvaný tftp/boot (aby bolo jasné na čo slúži:

mkdir -p /srv/tftp/boot
cd /srv/tftp/boot

Právami vytvoreného adresára sa veľmi trápiť nemusíte, ale zaistite aby z neho mal právo čítať používateľ, pod ktorým bude spustený dnsmasq (predvolene dnsmasq), najjednoduchšie to zaistíte pomocou:

chmod a+r /srv/tftp/boot

Tým je príprava koreňa TFTP pre túto chvíľu dokončená, jeho obsah si postupne vytvoríte neskôr.

Trochu o DHCP

Začnem trochu zoširoka. Obe tieto služby v sieti poskytne démon dnsmasq, ktorý ich však má po novej inštalácii vypnuté, zato ihneď po inštalácii poskytuje službu DNS (Domain Name Service). So službami DNS a TFTP problém v sieti nie je, ale ak v sieti beží viac služieb DHCP, problém môže nastať, preto sa tu zastavím.

DHCP dokáže poskytovať klientom rôznorodé informácie, počnúc IP adresou a maskou siete, pokračujúc našim PXE a končiac menom klienta a jeho doménou. Z hľadiska možných problémov sú dôležité najmä prvé dve informácie, teda IP adresa a maska siete, pretože pred ich pridelením od DHCP klient nemá žiadnu IP adresu. Ako potom dokáže v sieti komunikovať? Jednoducho, požiadavky na pridelenie IP adresy vysiela všesmerovým vysielaním (broadcast), čo je adresa 255.255.255.255. Keďže je to adresa všesmerová, je táto požiadavka doručená všetkým strojom lokálnej siete. Ak na stroji služba DHCP nebeží, stroj tento požiadavok jednoducho ignoruje, ak však na ňom služba beží (a sú splnené ďalšie podmienky), DHCP server ponúkne klientovi IP adresu.

Ak v sieti existuje takýchto DHCP služieb viac (na viacerých strojoch), dostane klient požiadaviek viacero a vyberie si z nich tú, ktorá mu vyhovuje, často z prevej ponuky, ktorú dostal. A práve toto je kameňom úrazu a ak máte v sieti aj iný DHCP server, musíte zaistiť, aby nedošlo ku konfliktu IP adries, ktoré poskytujú. Nemusíte sa ale báť, že by klient nedostal informáciu o tom, kde je zavádzací súbor. PXE klient si správne vyhodnotí ponuky DHCP serverov a použije len tie, ktoré ponúkajú aj zavádzací obraz, ak ho ale ponúka viac DHCP serverov (a ešte rôzne súbory), nikdy vopred neviete, ktorý z nich bude použitý na zavedenie systému. Dbajte teda na to, aby ste si použitím viacerých DHCP serverov neurobili viac škody ako úžitku.

Nastavenie DHCP a TFTP

Ale naspäť k nastaveniu dnsmasq. Jeho konfigurácia je v súbore /etc/dnsmasq.conf, ktorý je nie len zdrojom konfigurácie, ale obsahuje aj dosť podrobný popis jednotlivých volieb a bola by škoda o neho prísť, preto si urobte jeho kópiu:

cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

Po vytvorení kópie sa netrápte prepisovaním konfigurácie, ale vytvorte si konfiguráciu novú, pretože pre potreby PXE servera vôbec nie je zložitá (aj vďaka tomu, že sú obe služby v jednom programe):

# Konfiguračný súbor pre dnsmasq /etc/dnsmasq.conf.
#
# podrobnosti: "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq"

#****************************************************************
# Globálne
#****************************************************************
# Počúvať len na eth1 (lo pridané automaticky)
interface=eth1

#****************************************************************
# DNS
#****************************************************************
# Vypnúť DNS server
port=0

#****************************************************************
# DHCP
#****************************************************************
# Rozsah DHCP IP adries, maska, broadcast, čas zápožičky
dhcp-range=10.1.92.101,10.1.92.200,255.255.255.0,10.1.92.255,2h
# Nevystupovať ako Autoritatívny server
#dhcp-authoritative

#****************************************************************
# TFTP
#****************************************************************
# Zapnúť TFTP
enable-tftp
# Meno bootovacieho súboru
dhcp-boot=pxelinux.0
# Koreňový adresár pre TFTP server
tftp-root=/srv/tftp/boot

#****************************************************************
# Zaznamenávanie
#****************************************************************
# Zaznamenávať komunikáciu DHCP do syslog
#log-dhcp

Formát konfiguračného súboru je štandardný, teda znak mriežky (#) označuje komentár a každá voľba musí byť na samostatnom riadku, pričom niektoré voľby majú aj argumenty, a iné zase nie. V uvedenom konfiguračnom súbore je každá voľba okomentovaná, tak si myslím, že jej význam je pochopiteľný. Detailný popis konfigurácie je v manuálovej stránke (man dnsmasq) alebo využite spomínaný originálny konfiguračný súbor.

V konfiguračnom súbore si všimnite, že nastavujem rozhranie, na ktorom má démon prijímať požiadavky (eth1), ak máte iba jedno rozhranie, alebo chcete aby načúval na všetkých, jednoducho túto voľbu zakomentujte (pridajte na začiatok mriežku). Rovnako tak si všimnite, že som vypol službu DNS, ak ju chcete alebo potrebujete, tak toto vypnutie tiež zakomentujte.

Nezabudnite si upraviť hodnoty vo voľbe dhcp-range, ktorá udáva IP informácie, poskytované klientom a zároveň zapína podporu DHCP. Do tejto voľby je treba zadať prvú a poslednú IP adresu z rozsahu, ktorý môže démon na prideľovanie adries použiť, nasledované maskou a všesmerovou adresou siete. Na konci je číslo, ktoré udáva na ako dlho je IP adresa zapožičaná v príklade sú to 2 hodiny.

Aj nastavenie TFTP je jednoduché a priamočiare, a to aj vďaka tomu, že je to v jednom programe, všetko, čo v konfigurácii nastavujem je koreňový adresár pre TFTP a meno súboru pre PXE (čo je síce nastavenie DHCP, ale takto to mám pekne pokope). Samozrejme, najprv je voľba, ktorá podporu TFTP zapína. Celkom na konci je užitočná voľba, ktorá (ak ju povolíte) zapne podrobný výpis DHCP komunikácie do systémového záznamu (/var/log/syslog).

Uložte si túto konfiguráciu do súboru /etc/dnsmasq.conf, potom reštartujte démona, aby sa zmeny v nastavení prejavili:

invoke-rc.d dnsmasq restart
Restarting DNS forwarder and DHCP server: dnsmasq.

Dobré je aj skontrolovať, či sú naozaj potrebné služby zapnuté, na čo poslúži príkaz netstat:

netstat -tul
Aktivní Internetová spojení (pouze servery)
Proto Přích-F Odch-F Místní Adresa Vzdálená Adresa Stav
udp        0     0   *:bootps      *:*
udp        0     0   *:tftp        *:*

Dôležité je mať vo výpise práve riadky s bootps a tftp, ostatné nie sú v tomto okamžiku dôležité a závisia od toho, aké ďalšie služby máte v systéme spustené.

Príprava PXELinux

Posledná vec, ktorá v tejto chvíli chýba je, že v koreni TFTP servera nie je zavádzací súbor, ktorý bude DHCP server ponúkať klientom. V nastavení dnsmasq je uvedené, že to bude súbor pxelinux.0. Tento súbor je súčasťou balíka syslinux a môžete ho do koreňa TFTP prekopírovať, alebo mu urobiť symbolický odkaz. Ak si urobíte symbolický odkaz, napríklad pomocou:

ln -s /usr/lib/syslinux/pxelinux.0 /srv/tftp/boot/pxelinux.0

Zaistíte si, že aj po aktualizácii balíka syslinux bude TFTP server posielať najnovšiu verziu súboru. Na prvý pohľad to vyzerá lákavo, ale týmto spôsobom môžete ľahko zabudnúť, že klientom je automaticky ponúkaná aktuálna verzia a pri problémoch po aktualizácii (napríklad zmena formátu konfigurácie) môžete dlho pátrať v čom je chyba. Ak si vytvoríte kópiu, napríklad pomocou:

cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/boot/pxelinux.0

Síce budete musieť nové verzie manuálne kopírovať, ale o to menej prekvapenia prinesie nefunkčnosť…

Varovanie

Každopádne sa rozhodnite a buď súbory (bude ich viac) kopírujte alebo používajte symbolické odkazy. V žiadnom prípade tieto spôsoby na programy SYSLinux nemiešajte!

Nastavenie PXE

Už v tomto okamžiku môžete overiť, či PXE server funguje a skúsiť naštartovať nejakého klienta. Avšak v tomto okamžiku overíte len to, či dostane IP adresu a či stiahne a spustí súbor pxelinux.0. Žiadny systém nenaštartuje, pretože ešte nie je žiadny nastavený. Ak teda všetko funguje ako má, očakávaný výsledok je správa, že nemohol nájsť konfiguračný súbor aký paradox, keď je chybová správa dôkazom úspešnosti.

PXEboot02.png

Svoju konfiguráciu PXELinux očakáva v koreni TFTP, konkrétne hľadá konfiguračné súbory v adresári pxelinux.cfg, tak takýto adresár vytvorte:

mkdir /srv/tftp/boot/pxelinux.cfg

PXELinux teda bude hľadať svoju konfiguráciu v tomto adresári, pričom môže byť vo viacerých súboroch. Predvolený konfiguračný súbor musí mať meno default. Okrem neho môžete ešte vytvoriť konfiguračné súbory, ktoré budú načítané na základe MAC alebo IP adresy klienta, pričom pre klienta s MAC adresou 08:00:27:78:B2:B1 a IP adresou 10.1.92.154 bude hľadať konfiguračné súbory v tomto poradí:

pxelinux.cfg/01-08-00-27-78-b2-b1
pxelinux.cfg/0A015C9A
pxelinux.cfg/0A015C9
pxelinux.cfg/0A015C
pxelinux.cfg/0A015
pxelinux.cfg/0A01
pxelinux.cfg/0A0
pxelinux.cfg/0A
pxelinux.cfg/0
pxelinux.cfg/default

Prvé meno súboru je asi jasné, je to MAC adresa s predponou 01. Nasledujú mená súborov s IP adresou, ale v šestnástkovom tvare, pričom je postupne zväčšovaný rozsah odoberaním vždy jednej šestnástkovej cifry. Použitý je ten konfiguračný súbor, ktorý je nájdený ako prvý! Pomocou tohto spôsobu môžete urobiť špeciálnu konfiguráciu pre konkrétneho klienta alebo skupinu klientov. Prípadne môžete urobiť konfiguráciu len pre vymenovaných klientov a východzí konfiguračný súbor nerobiť vôbec, ale tento spôsob popisovať nebudem a v ďalšom budem používať len súbor default.

Zavádzanie systému

Postupne vás prevediem možnosťami nastavenia zavádzacieho systému PXELinux tak, aby som ukázal najprv prostý manuálny výber, potom jednoduché textové menu, ktoré nakoniec doplním grafickým vylepšením. Aby som nepísal len tak do vetra, budem do konfigurácie postupne pridávať ďalšie štartovacie obrazy, ktoré môžu byť užitočné pri riešení problémov, či bežných úloh údržby počítača. Takto si vyskúšate ako zavádzať po sieti (bez poradia):

Verím, že uvedené postupy vám poslúžia ako solídny základ na vytvorenie si sady nástrojov podľa vlastných požiadaviek.

Memtest86+

Ako prvý nástroj som si zvolil Memtest86+, pretože vyžaduje najmenej práce. Najprv treba stiahnuť predkompilovaný binárny obraz, ktorý je dostupný na domovskej stránke projektu, potom ho rozbaliť a presunúť do koreňa TFTP:

gunzip memtest86+-4.20.bin.gz
mv memtest86+-4.20.bin /srv/tftp/boot/memtest86+-4.20

Varovanie

Všimnite si, že som ho nie len rozbalil, ale aj premenoval tak, aby nemal príponu .bin, pretože táto prípona je v PXELinux rezervovaná a ak by ste ju ponechali, dostanete pri štarte len nekončiaci výpis čísel 8000!

Po rozbalení vytvorte prvú položku konfigurácie (pripomínam, že v súbore pxelinux.cfg/default):

DEFAULT memtest

LABEL memtest
    KERNEL memtest86+-4.20

Definícia položky obsahuje dve konfiguračné voľby. Voľba LABEL dáva položke meno a voľba KERNEL udáva súbor, ktorý bude zavedený a nemá to nič s Linuxovým jadrom, ale očakáva binárny zavádzač, teda presne to, čo súbor s Memtest86+ poskytuje. No a nakoniec voľba DEFAULT vraví, ktorá položka má byť použitá. Ako vidíte, je použité meno, ktoré som použil pri voľbe LABEL.

Meno položky, definované pomocou LABEL, musí byť jedinečné a teba dať pozor na to, že bude interne prevedené do formátu 8.3 (formát mien MS DOS), preto nie je dobré ak je dlhšie ako osem znakov a obsahuje bodky, pretože sa ľahko dostanete do problémov (veď kto si už dnes pamätá ako sa takými menami robí).

Upozornenie

Odsadenie položky KERNEL je len kvôli lepšej orientácii a nemá žiadny vplyv, rovnako ako použite veľkých písmen v názve konfiguračnej voľby. Veľké písmená používam len na jednoznačné odlíšenie voľby od jej parametrov.

Keď v tomto okamžiku vyskúšate spustiť PXE klienta, po chvíľke (naozaj krátkej, pretože súbory sú malé) výpisov sa automaticky zavedie a spustí nástroj Memtest86+ už nikdy zabudnutá disketa, či CD!

Clonezilla Live

Využitie takéhoto zavedenia, pri ktorom sa automaticky zavedie jediná položka síce poteší, ale iste neuspokojí, najmä ak vám prezradím, že je možné jednoducho pridať zavádzacie menu, ktoré umožní zvoliť, čo bude zavedené. Aby však bolo z čoho vyberať, treba pridať ďalšiu položku. Tentokrát ukážem ako po sieti naštartovať Live distribúciu Clonezilla užitočný to nástroj na zálohovanie i klonovanie celých diskov i jednotlivých partícií. Bude to trochu zložitejšie ako v prípade Memtest86+, ale nie o veľa…

Začnite tým, že si stiahnete si z domovskej stránky projektu verziu ZIP na testovanie asi najlepšie pre architektúru i486. Zo stiahnutého archívu je treba vybrať tri súbory:

  • live/vmlinuz – Linuxové jadro distribúcie;
  • live/initrd.img – inicializačný obraz;
  • live/filesystem.squashfs – súborový systém (obsah) distribúcie.

Ich rozbalenie do koreňa TFTP zaistí príkaz:

unzip -j clonezilla-live-*.zip live/vmlinuz live/initrd.img live/filesystem.squashfs \
      -d /srv/tftp/boot/clonezilla/

Rada

Všimnite si, že súbory rozbaľujem do podadresára koreňa TFTP (unzip ho vytvorí), je to kvôli tomu, aby som sa v budúcnosti vyhol problémom s konfliktnými menami súborov, pretože nie všetky Live distribúcie umožňujú určiť umiestnenie súborov a očakávajú ich priamo v koreni…

Po rozbalení súborov do koreňa TFTP sa stanú cez TFTP dostupné, a tak možno v súbore pxelinux.cfg/default vytvoriť novú položku:

LABEL clonlive
    KERNEL clonezilla/vmlinuz
    INITRD clonezilla/initrd.img
    APPEND boot=live live-config noswap nolocales edd=on nomodeset quiet noprompt ocs_numlk="on" ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="NONE" ocs_live_batch="no" ocs_lang=en_US.UTF-8 vga=788 nosplash fetch=tftp://10.1.92.1/clonezilla/filesystem.squashfs

Ako vidno, nová položka zase začína pomenovaním položky pomocou LABEL, ale tentokrát nasledujú ďalšie tri voľby. Voľbu KERNEL som už spomínal, druhé dve voľby sa postarajú o pridanie vhodných parametrov jadra. Voľby zavedenia jadra som prevzal z dokumentácie Clonezilla, pridal som len výslovnú definíciu klávesnice a jazyka, aby som pri štarte nemusel potvrdzovať dialógy ich výberu.

Ak by ste skúsili naštartovať klienta teraz, asi by ste boli sklamaný, pretože by sa znova spustil Memtest86+ (pamätáte na voľbu DEFAULT?). Aby bolo možné vyberať, je treba do konfigurácie pridať zapnutie výzvy, takže hneď za voľbu DEFAULT pridajte riadky:

PROMPT   1
TIMEOUT 50
PXEboot03.png

Dopĺňanie vo výzve

Dosiahnete to, že sa na 5 sekúnd (áno, čas je v desatinách sekundy) zobrazí výzva nápis boot. Po uplynutí tohoto limitu sa spustí zavedenie položky udanej vo voľbe DEFAULT. Ak však stlačíte ľubovoľný kláves (okrem Enter), počítanie časového limitu skončí, takže môžete zadať iné meno položky. Môžete nastaviť aj oveľa dlhší časový limit a v prípade, že nechcete čakať, stačí na zvolenie predvolenej položky stlačiť Enter (teda netreba nič písať). Ak vás napadá otázka: Kto si má tie mená položiek pamätať, tak rozmýšľate správne, i ja s tým mám problém a zjavne nie som jediný, pretože existuje spôsob na vypísanie všetkých dostupných - kláves Tab. Okrem toho funguje Tabulátor ako dopĺňanie, teda stačí napísať niekoľko prvých písmen a vypísané budú len vyhovujúce možnosti. Na obrázku som to trochu zafarbil.

Výpis textu a pomocník

PXEboot04.png

Uvítací text

Okrem vypisovania možností je k dispozícii aj možnosť zobrazenia formátovaného textu, ale toto spomínam naozaj len pre úplnosť. Môžete pridať voľbu DISPLAY, nasledovanú menom súboru. Táto voľba sa postará o vypísanie zadaného textu, ktorý možno mimochodom formátovať, pred riadok s výzvou. Ak by vám bol jeden takýto súbor málo, môžete pridať ešte ďalších (max) dvanásť, a to pomocou volieb F1F12, rovnako nasledovaných cestou k súboru. A hoci je formátovanie popísané v dokumentácii, vyskúšal som odporúčaný grafický nástroj IsoLinux Mate. IsoLinux Mate je síce nástroj pre Windows, ale Wine si s ním bez problémov poradil, no a výsledok vidno na obrázku. Popis formátu je dostupný na stránke SYSLinux. Pohrať sa s formátom sa oplatí, pretože potom môže štartovacia výzva vyzerať napríklad ako na obrázku vpravo, ktorý som tentokrát neupravoval farbami. Zobrazenie zobrazeného textu, uloženého v koreni TFTP v podadresári help, mi zaistila voľba:

DISPLAY help/help.txt

Tip

Len upozorním, a platí to všeobecne, že PXELinux sa nemá veľmi rád s diakritikou, pretože je stavaný na zobrazovanie iba prvých 128 znakov. Existujú síce voľby na nastavenie klávesovej mapy i fontu, ale ani som ich neskúšal.

FreeDOS

Po krátkom odbočení pokračujem ďalším spôsobom zavádzania, tentokrát zavedenie obrazu diskety, teda obrazu klasickej zavádzacej diskety, tak si ju pamätajú starší. Na zavádzanie takých obrazov poskytuje projekt SYSLinux nástroj nazvaný Memdisk a jeho možnosti sú také rozsiahle, že si zaslúžil samostatnú položku v menu Wiki stránky projektu, i preto len spomeniem, že dokáže po sieti naštartovať bežné veľkosti diskiet (720, 1440, 2880, …), obrazy ElTorrito optických diskov a dokonca i obrazy pevných diskov.

Použitie Memdisk je jednoduché, najprv ho treba prekopírovať (alebo vytvoriť symbolický odkaz) do koreňa TFTP:

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

A keď je dostupný v TFTP, možno ho použiť ako parameter voľby KERNEL, potrebuje však aj cestu k súboru s obrazom (v tomto prípade) diskety a tú treba zadať ako parameter voľby INITRD:

LABEL freedos
    KERNEL memdisk
    INITRD obrazy/fdboot.img

Zabudol som spomenúť, že aj obraz diskety musí byť umiestnený v koreni TFTP, v mojom prípade v podadresári obrazy. Štartovaciu disketu FreeDOS môžete stiahnuť napríklad z`www.ibiblio.org`_. Nebuďte však prekvapený, že sa nejedná o klasickú štartovaciu disketu, ale o inštalačnú, takže ju asi budete chcieť upraviť.

HDT

V predošlej kapitolke osm spomenul nástroj Memdisk, ako súčasť SYSLinux. Je to nástroj pokročilý a užitočný, ale nie je jediný, ktorý spolu so SYSLinux získate. Týmto nástrojom vravia moduly a ako prvému z nich sa budem podrobnejšie venovať nástroju HDT, ktorý sa v SYSLinux skrýva v súbore hdt.c32 a aby ho bolo možné použiť v PXE, treba ho prekopírovať do koreňa TFTP:

cp /usr/lib/syslinux/hdt.c32 /srv/tftp/boot/

Jeho načítanie (rovnako ako ostatných modulov s príponou c32) zabezpečí voľba COM32, nasledovaná cestou k modulu:

LABEL hdt
    COM32 hdt.c32

Aby ste však dostali plnú funkčnosť, je potrebné zadať (a prekopírovať) ešte niekoľko vecí, a to súbory:

  • pci.ids – zoznam ID zariadení PCI;
  • modules.pcimap – priradenie modulov jadra zariadeniam PCI;
  • memtest – testovanie pamäte.

Memtest už v TFTP mám. Bez problémov je aj súbor pci.ids, pretože je súčasťou balíka pciutils, tak ho stačí prekopírovať (tento balík obsahuje aj skript na jeho aktualizáciu) do koreňa TFTP:

cp /usr/share/misc/pci.ids /srv/tftp/boot/

Súbor modules.pcimap ale v systéme nemám, mal by byť v adresári /lib/modules/verzia_jadra, ak ho tam máte, tak si ho prekopírujte, ak nie, možno ho vygenerovať:

depmod -a -m -F /boot/System.map

Po príprave potrebných súborov možno nastavenie položky HDT rozšíriť o cesty k modulom a pridať riadok:

APPEND modules=modules.pcimap pciids=pci.ids memtest=memtest86+-4.20
PXEboot05.png

Detekcia hardvéru

Teraz môžete pohodlne prechádzať a pátrať po hardvéri, stačí aby bolo možné stroj naštartovať zo siete a ľahko zistíte:

  • typ CPU
  • zariadenia PCI
  • informácie z DMI (pamäť, BIOS, základnú doska, IPMI skrine, baterka, CPU)
  • disky (pracuje sa na tom)
  • informácie o Syslinux a PXE
  • potrebné moduly Linuxového jadra
  • informácie VESA
  • a ďalšie…

Offline NT Password Editor

Celým menom to je Offline NT Password & Registry Editor a iste ho oceníte v prípade, že si používateľ zmení heslo k účtu vo Windows. Tento šikovný nástroj možno stiahnuť v podobe komprimované ISO súboru a práve na ňom ukážem, ako obsah takéhoto obrazu CD integrovať do svojho systému PXE. začnite teda stiahnutím spomenutého ISO (aktuálne cd100627.zip) a jeho následným rozbalením:

unzip cd100627.zip

Ďalším krokom je vybratie potrebných súborov z ISO, ale na to je potrebné obraz CD pripojiť do nejakého adresára a keďže je to naozaj len dočasné pripojenie, vytvorím si na to podadresár v /tmp:

cd /tmp
mkdir isocd
mount -o loop cd100627.iso isocd/
cp isocd/vmlinuz isocd/initrd.cgz isocd/scsi.cgz /srv/tftp/boot/ntpasswd/
umount isocd
rm -rf isocd

Znalejší vedia, že som z ISO prekopíroval súbory vmlinuz, initrd.cgz a scsi.cgz, všetky do podadresára ntpasswd v koreni TFTP. Ostáva vytvoriť novú štartovaciu položku:

LABEL ntpasswd
    KERNEL ntpasswd/vmlinuz
    INITRD ntpasswd/initrd.cgz,ntpasswd/scsi.cgz
    APPEND rw vga=1

Všimnite si spôsob, akým je jadru pridelených viacero inicializačných obrazov sú oddelené čiarkami.

Rada

Väčšina slobodného softvéru, ktoré poskytujú zavádzacie CD/DVD, používa na zavedenie ISOLinux, čo nástroj z rovnakého projektu ako PXELinux, ale hlavne používa rovnakú syntax (väčšiny) príkazov konfigurácie a preto je výborným zdrojom na tvorbu vlastnej štartovacej položky. Konkrétne nástroj Offline NT má v obraze konfiguračné súbory ako pre ISOLinux, tak i pre SYSLinux.

System Rescue CD

Ako posledný nástroj ukážem použite tohoto záchranného CD a na koniec som si nechal, pretože v návode postúpim na vyššiu úroveň súborový systém Live CD nebudem načítať cez TFTP, ale ukážem jeho pripojenie pomocou NBD (Network Block Device). K tomuto riešeniu ma viedli najmä dva dôvody, prvým je, že podľa dokumentácie by použite rovnakého spôsobu ako pri Clonezilla potreboval klient aspoň 512 MB RAM, čo považujem za dosť veľký nárok. Druhým dôvodom je, že použitie NBD je relatívne nový spôsob (a nie každé Live CD ho podporuje).

I v tomto prípade treba začať stiahnutím obrazu CD z domovskej stránky, jeho pripojením a prekopírovaním príslušných súborov, ktoré sú potrebné na štart CD. Postup prekopírovania z ISO je obdobný ako vyššie, tak ho nebudem opakovať, len spomeniem, že prekopírovať treba súbory:

  • initram.igz – inicializačný obraz;
  • rescuecd – 32b jadro;
  • rescue64 – 64b jadro
  • sysrcd.dat – súborový systém.

Na umiestnenie súborov v koreni TFTP som si aj v tomto prípade urobil podadresár a nazval som ho sysresc, do ktorého treba umiestniť prvé tri súbory (initrd a jadrá). Posledný súbor umiestnim inde, pretože tento bude sprístupňovaný pomocou NBD, čo si vyžaduje dodatočnú prácu.

Inštalácia a nastavenie NBD

Myslím, že celé je to priamočiare, archív úložiska Debianu obsahuje balík nbd-server, takže inštalácia prebehne hladko:

aptitude install nbd-server

Nasleduje vytvorenie úložiska pre súbory, ktoré bude obsahovať súbory, poskytované pomocou NBD, vhodné miesto je adresár /srv:

mkdir /srv/nbd

Do tohoto adresára treba umiestniť súborový systém distribúcie, teda súbor sysrc.dat:

cp sysrcd.dat /srv/nbd

A nakoniec vytvoriť konfiguračný súbor servera NBD (po inštalácii nie je žiadny) v súbore /etc/nbd-server/config s obsahom:

[generic]

[partimage]
    exportname = /srv/nbd/sysrcd.dat
    listenaddr = 10.1.92.1
    port = 2000

Voľba exportname udáva cestu k poskytovanému súboru, listenaddr zase adresu, na ktorej bude prijímať spojenia (ak je vynechaná, prijíma na všetkých adresách) a na konci je definovaný port. Po vytvorení konfiguračného súboru možno NBD server spustiť:

invoke-rc.d nbd-server start

Vytvorenie štartovacej položky

Keď je NBD server pripravený, možno pristúpiť k pridaniu štartovacej položky, teda vlastne dvoch, nášho PXE servera:

LABEL rescue32
    KERNEL sysresc/rescuecd
    INITRD sysresc/initram.igz
    APPEND dodhcp netboot=nbd://10.1.92.1:2000

LABEL rescue64
    KERNEL sysresc/rescue64
    INITRD sysresc/initram.igz
    APPEND dodhcp netboot=nbd://10.1.92.1:2000

Na použitie zariadenia NBD je potrebné jadru pridať parameter, ktorý obsahuje IP adresu a číslo portu, kde načúva NBD server, iste zbadáte podobnosť týchto parametrov s tými v nastavení NBD servera. Po štarte klienta je použitých výrazne menej pamäte, ako tých 512 MB, ktoré spomína dokumentácia pri stiahnutí obrazu cez TFTP.

Vylepšenie voľby

Distribúcia System Rescue CD poskytuje 32b i 64b jadro a vyššie som vytvoril dve voľby, z ktorých každá načítava príslušné jadro, ale pomocou moduluifcpu64.c32 možno vytvoriť jednu položku, ktorá podľa typu procesora automaticky vyberie vhodné jadro. Samozrejme najprv si prekopírujte modul ifcpu64.c32 do koreňa TFTP a potom už možno urobiť položku:

LABEL rescue
    KERNEL ifcpu64.c32
    APPEND rescue64 -- rescue32

Po vybratí tejto voľby modul otestuje existenciu 64b procesora, ak je k dispozícii načíta voľbu rescue64, ak nie je, tak použije voľbu rescue32.

Ďalšie nástroje

Nebudem pokračovať vo vymenovávaní ďalších nástrojov, ktoré možno po sieti naštartovať, tie si nájdite podľa vlastnej potreby. Spomeniem však ešte niekoľko zaujímavých, ktoré poskytuje priamo SYSLinux:

  • reboot.c32 – reštartovanie stroja;
  • poweroff.com – vypnutie stroja;
  • chain.c32 – načítanie iného zavádzača (chainload);
  • ifcpu.c32 – viac možností detekcie vlastností procesora;
  • a ďalšie…

Zaujímavou možnosťou konfigurácie je i voľba LOCALBOOT, ale podrobnosti si už nájdite v dokumentácii SYSLinux.

Jednoduché menu

Ako sa vám bude postupne štartovacia ponuka rozširovať, bude čoraz ťažšie sa v nej vyznať. Samozrejme môžete si urobiť podrobné textové popisy v súboroch pomocníka (F1 F12), ale možno to urobiť aj inak. Možno si vytvoriť jednoduché menu, kde budú uvedené popisné mená každej položky, ktoré možno prechádzať pomocou klasických šípok hore i dole a zvolenú ponuku naštartovať enterom. PXELinux poskytuje dve možnosti vytvorenia menu, ale druhá možnosť vyžaduje kompiláciu, preto ostanem pri prvej, kde je menu načítané z klasického konfiguračného súboru.

Textové menu

Prvou ukážkou bude textové menu a na jeho použitie je potrebné prekopírovať do koreňa TFTP súbor menu.c32 z projektu SYSLinux. Načítanie menu je možné dvomi spôsobmi, prvý používa voľbu DEFAULT:

DEFAULT menu.c32
PROMPT 0

A v tomto prípade je potrebné zaistiť, aby voľba PROMPT nebola nastavená na 1. Druhý spôsob je použite voľby UI:

UI menu.c32
Prvé menu

Prvé menu

Voľba UI sa postará o prepísanie hodnôt volieb DEFAULT aj PROMPT, takže stačí len táto. Ak urobíte túto zmenu a vyskúšate, čo sa stane, uvidíte jednoduché menu, ktoré ponúka na výber texty, zadané pri položke LABEL. Menu doteraz vytvoreného nastavenia je vidno na obrázku iste sami uznáte, že je to síce lepšie, lebo voľby netreba písať, ale lepšiu orientáciu to neposkytuje.

Aby to menu vyzeralo trochu lepšie, je treba použiť niekoľko nových konfiguračných volieb. Pred prvú položku LABEL pridám názov menu, ktorý bude zobrazený v tom prázdnom obdĺžniku hore:

MENU TITLE Sietovy system startu

A do každej voľby LABEL pridám názov položky pomocou voľby MENU LABEL, napríklad:

LABEL hdt
    MENU LABEL Detekcia ^Hardveru
    ...

Aj v tomto prípade radšej nepoužijem diakritiku a všimnite si, že som použil znak striešky (^). Tento znak označuje klávesovú skratku (alebo horúci kláves), teda kláves, ktorého stlačenie presunie kurzor priamo na danú položku. Pri vytváraní klávesových skratiek treba zaistiť ich jedinečnosť, pretože v prípade viacerých rovnakých, bude použitá len prvá skratka.

Po týchto úpravách už menu vyzerá oveľa lepšie. Ale ešte som neskončil. Rád používam slovenčinu, kde sa len dá, a preto ma anglické texty o možnosti editácie pomocou tabulátora ani o čase do automatického štartu neuspokojujú, tak pod názov menu pridám ich slovenské verzie:

MENU AUTOBOOT Do automatickeho startu ostava za # {sekunda,sekundy,sekund}
MENU TABMSG Na upravu polozky stlacte [Tab]

Nie je to dokonalé, lokalizácia množného čísla nefunguje správne pre hodnoty 3 a 4, ale je to výrazne lepšie! A by som to ešte vylepšil (a uľahčil si život v budúcnosti), pridám ešte vysvetľujúci text ku každej položke, teda pod príslušný LABEL. Popisný text začína voľbou TEXT HELP, končí voľbou ENDTEXT a môže byť aj na viacerých riadkoch, napríklad:

LABEL clonelive
    MENU LABEL ...
    MENU DEFAULT
    TEXT HELP
    Spustí Live verziu CLonezila,
    ktora umozni zalohovat, klonovat disky alebo particie.
    ENDTEXT
PXEboot07.png

Vylepšené menu

Spomenul som automatický štart. Ten bol predtým definovaný pomocou voľby DEFAULT, ktorá ale má pri použití menu úplne iný význam. V režime zobrazenia menu je ako predvolená položka použitá prvá definovaná, ale môžete definovať i inú pomocou voľby MENU DEFAULT. Ak vám to náhodou nefunguje a používate UI, skontrolujte, či v konfigurácii neostala zatúlaná položka DEFAULT.

Ak sa na obrázok pozriete poriadne, zistíte, že mi tam ostali dve položky, ktoré vlastne nepotrebujem, a to rescue32 a rescue64. Schválne som im ani nenastavil menovku menu, aby to bilo do očí. Tieto položky v menu nepotrebujem, pretože sú automaticky vybrané podľa typu procesora pri použití voľby System Rescue CD. Na skrytie takýchto nepotrebných položiek poslúži voľba MENU HIDE, ktorú stačí pridať pod príslušné LABEL. Voľba MENU HIDE položku neodstráni, len skryje v menu.

Štruktúrovanie menu

Dobre, menu je vytvorené a na tých pár položiek, ktoré tvoria moje menu plne postačuje. Ale skúsim do menu pridať ďalšie položky, konkrétne na reštart, vypnutie a naštartovanie z lokálneho stroja, pričom zároveň ukážem, ako takéto voľby umiestniť do samostatného súboru, umiestneného v koreni TFTP s menom localboot.menu. Takže obsah tohoto súboru by mohol vyzerať takto:

MENU SEPARATOR

LABEL localoper
    MENU LABEL Lokalne operacie
    MENU DISABLE

LABEL localbt
    MENU LABEL Lokalny start
    MENU INDENT 2
    LOCALBOOT 0

LABEL cold_reboot
    MENU LABEL Studeny restart
    MENU INDENT 2
    COM32 reboot.c32

LABEL warm_reboot
    MENU LABEL Teply restart
    MENU INDENT 2
    COM32 reboot.c32
    APPEND --warm

LABEL poweroff
    MENU LABEL Vypnut
    MENU INDENT 2
    COMBOOT poweroff.com

V príklade vidíte použite niekoľkých techník, ale kým ich popíšem, tak pripomeniem aby ste nezabudli do koreňa TFTP prekopírovať súbory reboot.c32 a poweroff.com. Celkom na začiatku súboru je voľba MENU SEPARATOR, ktorá vloží do menu prázdny (neprístupný) riadok, čím opticky rozdelí menu všade, kde je to vhodné. Nasleduje položka localoper, ktorá má použitú voľbu MENU DISABLE. Táto položka bude v menu zobrazená, ale nebude prístupná, takže vlastne vystupuje ako podnadpis. Všimnite si, že je aj zobrazená inou farbou. Všetky ostatné položky majú voľbu MENU INDENT, ktorá sa postará o vodorovné posuniete textu položky o zadaný počet znakov.

PXEboot08.png

Odsadené podmenu

Takto vytvorené menu je teba načítať do konfigurácie PXE, takže do základného konfiguračného súboru pridajte voľbu INCLUDE (alebo MENU INCLUDE, ale to bude použité len v systéme menu), v mojom prípade na koniec súboru:

INCLUDE localboot.menu

V podstate to urobí to, že v mieste príkazu INCLUDE bude vložený obsah zadaného súboru. Na obrázku je vidno popisovaný prázdny riadok i odsadenie lokálnych položiek v dolnej časti menu. Zároveň na ňom vidno i to, že mi položky vyšli presne po spodný okraj rámika. Ak vás napadá, čo by sa stalo ak by som ich mal viac, tak sa môžete upokojiť. V pravej časti rámika menu by sa objavil posuvník (predvolene trochu farebne splývajúci) a posúvaním šipkami, by sa posúvalo i menu.

Vnorené menu

No, miesto v rámiku s menu sa míňa, ak chcete mať všetky položky zobrazené (a ja tomu dávam prednosť), je treba vymyslieť iné riešenie podmenu. Takže poslednú, odsadenú časť, presuniem do podmenu, takže ostane iba jedna položka a jej zvolením sa zobrazí nové menu, ktoré bude obsahovať len položky podmenu a voľbu na návrat do hlavného menu. Niektorí tento problém riešia tak, urobia položku, ktorá jednoducho načíta nový (iný) konfiguračný súbor s novou definíciou menu, ale systém menu projektu SYSLinux ponúka niečo výkonnejšie.

Na vytvorenie podmenu použijem rovnaký súbor ako vyššie, len z neho zmažem položku, ktorá slúžila ako nadpis odsadeného menu tá s voľbou MENU DISABLED. Zvyšok môže ostať bez zmeny. Avšak zmeny nastanú v hlavnom konfiguračnom súbore, kde je treba vytvoriť štruktúru podmenu. Takže namiesto jedného riadku s INCLUDE pribudne v základnom konfiguračnom súbore toto:

MENU SEPARATOR

MENU BEGIN localmenu
    MENU TITLE Lokalne operacie

    INCLUDE localboot.menu

    MENU SEPARATOR

    LABEL spat1
        MENU LABEL Naspat
        TEXT HELP
        Navrat do hlavneho menu
        ENDTEXT
        MENU EXIT
MENU END

vytvorenie podmenu týmto spôsobom položku podmenu vizuálne označí šípkou v pravej časti menu, rovnako tak položky s voľbou MENU EXIT, tentokrát šípkou opačným smerom. Všimnite si aj použitie nového nadpisu menu, ktorý je však použitý len v podmenu:

PXEboot09.png

Hlavné menu s podmenu

PXEboot10.png

Podmenu

Systém podmenu je možné vnárať aj opakovane, a tak vytvoriť veľké množstvo položiek, ktorá sa vždy vojdú na obrazovku. Pri takomto jednoduchom menu je technika spájania konfiguračných súborov via-menej zbytočná, ale zaistí väčšiu prehľadnosť konfiguračného súboru.

Grafické menu

Ostala jediná oblasť, ktorej som sa zatiaľ vyhol, a tou je farebnosť. Už systém textového menu umožňuje definovať farby jednotlivých položiek rámikov, vybratých i nevybratých položiek a podobne. Ak však chcete svojmu menu pridať originalitu, iste poteší možnosť použiť obrázok pozadia. Prvou vecou, ktorú treba urobiť, je prekopírovanie do koreňa TFTP súboru vesamenu.c32 a jeho načítanie v konfiguračnom súbore rovnako ako menu.c32, napríklad:

UI vesamenu.c32

Táto operácia ešte vlastne nič nezmení, len umožní použiť ďalšiu konfiguračnú voľbou:

MENU BACKGROUND cesta/k_obrazku

Táto voľba načíta obrázok pozadia, ktorý môže byť vo formáte PNG alebo JPEG a musí mať rozmery 640 480 px. Vo svojom príklade použijem obrázok, ktorý je ukážkovým súborom projektu SYSLinux a keď ho vyskúšate na tu vytvorené menu, zistíte, že niektoré texty splývajú s pozadím a chcelo by to jednak zmeniť ich farbu alebo pozíciu. Možné je jedno i druhé a možností je tak veľa, že ich tu nebudem popisovať a namiesto toho tu len dám príklad takejto konfigurácie, ktorý treba vložiť niekde pred definíciu položiek menu:

MENU WIDTH      68
MENU MARGIN      4
MENU ROWS       10
MENU TIMEOUTROW 16
MENU HELPMSGROW 20

MENU COLOR BORDER   0 #ffffffff #ee000000 std
MENU COLOR TITLE    0 #ffffffff #ee000000 std
MENU COLOR SEL      0 #ffff0000 #85000000 std
MENU COLOR UNSEL    0 #ffffffff #ee000000 std
MENU COLOR DISABLED 0 #ffffffff #ee000000 std
MENU COLOR PWHEADER 0 #ff000000 #99ffffff rev
MENU COLOR PWBORDER 0 #ff000000 #99ffffff rev
MENU COLOR PWENRY   0 #ff000000 #99ffffff rev
MENU COLOR HOTKEY   0 #ff00ff00 #ee000000 std
MENU COLOR HOTSEL   0 #ff00ff00 #85000000 std

MENU BACKGROUND m16-640x640-syslinux.jpg

Na začiatku sú definované niektoré umiestnenia a rozmery. Čísla udávajú počet znakov. nasleduje definícia rôznych farieb. Pre každú položku je definovaná farba v režime ANSI (textovom) a potom farby popredia a pozadia. Na konci je typ tieňa. farba je definovaná v štandardnom formáte #AARRGGBB, teda umožňuje aj priehľadnosť. Celkom na konci je definovaný použitý obrázok pozadia. No a celé to teraz vyzerá takto:

Farebné PXE menu s obrázkom pozadia

Farebné PXE menu s obrázkom pozadia

Bezpečnosť

Oblasť, ktorú som si nechal na koniec, je bezpečnosť. V projekte SYSLinux je bezpečnosť riešená v troch stupňoch:

  1. heslo jednotlivých položiek menu;
  2. heslo menu ako celku (hlavné);
  3. šifrovanie hesla.

Určite so mnou budete súhlasiť, keď napíšem, že by nebolo vhodné aby mohol tieto systémové nástroje spúšťať každý. Jednou z možností je zakázať štart zo siete v BIOSE (ale čo ak to nie je integrovaná karta?). Ako som spomínal, PXELinux umožňuje nastaviť položkám heslá dvoch typov. Prvé je heslo pre jednotlivé položky, ktoré sa píše pod voľbu LABEL príslušnej položky, ktorej spustenie chcete chrániť heslom:

LABEL memtest
    ...
    MENU PASSWD 123456

Takéto nastavenie síce bude vyžadovať zadanie hesla pri použití menu, ale nezabráni naštartovaniu položky, pretože stále je možné pomocou klávesu Tab zvoliť úpravu položky a potom ju spustiť, či pomocou klávesu Esc systém menu opustiť… Aby bolo zavádzanie položky kompletne chránené, je treba zakázať aj iné spomínané možnosti:

NOESCAPE 0
ALLOWOPTIONS 0

Obe voľby sú globálne a môžete ich umiestniť niekde pred definíciu položiek menu. Tieto voľby netreba zakazovať, ak použijete hlavné heslo. Hlavné heslo chráni všetky operácie, vrátane úprav a zavádzania položiek, či opustenia menu a nastavíte ho niekde pred definíciou položiek v podobe:

MENU MASTER PASSWD 123456

Samotné nastavenie hlavného hesla ešte nechráni pred možnosťou zvoliť položku na zavedenia, to musí byť použité pri každej položke, ale ak je nastavené hlavné heslo, už netreba definovať heslo pre každú položku zvlášť a stačí použiť voľbu MENU PASSWD bez hesla. Pri pokuse o použitie takejto položky potom bude vyžadované heslo hlavné. Ak sa vám nepáči anglická výzva na zadanie hesla, možno text zmeniť pomocou:

MENU PASSPROMPT Zadajte heslo
PXEboot12.jpg

Zachytený prenos hesla

V mojich príkladoch som použil heslo napísané bez akejkoľvek ochrany, ak však vyžadujete väčšiu bezpečnosť, môžete použiť heslo šifrované, ktoré môžete vytvoriť pomocou nástrojov sha1pass alebo md5pass (súčasť balíka syslinux-common). Ak má ktokoľvek pochybnosti ohľadom potreby zašifrovania hesla a myslí si, že na server sa k heslu hocikto nedostane, tak by nemal zabudnúť, že dáta sú cez TFTP prenášané v nezašifrovanej podobe a ktokoľvek môže heslo v sieti odchytiť. A že je to naozaj jednoduché ukazuje obrázok, v ktorom je takáto komunikácia zachytená heslo je zvýraznené.

Zašifrovanie hesla pomocou týchto nástrojov je jednoduché, najprv si nechajte vygenerovať (napr.) MD5 odtlačok hesla:

md5pass 123456
$1$zQpRfrPU$9pOIskuUYNcfd7otUOIR/0

Takto vygenerovaný odtlačok pridať namiesto prostého hesla:

MENU MASTER PASSWD $1$zQpRfrPU$9pOIskuUYNcfd7otUOIR/0

I teraz sa síce dá heslo odchytiť, ale jeho dešifrovanie zaberie oveľa viac času, ako prepísanie prostého hesla…