B.2. Použití

Nejprve samozřejmě musíte vytvořit soubor s přednastavením a umístit jej na vhodné místo, odkud jej budete používat. O vytvoření souboru se dočtete dále v této příručce. Umístění souboru na vhodné místo je různě složité podle použitého způsobu. V případě, že budete soubor s přednastavením načítat ze sítě, z diskety nebo usb klíčenky, je jeho umístění zřejmé. Chcete-li soubor umístit na CD nebo DVD, budete muset znovu sestavit celý ISO obraz. Umístění souboru s přednastavením přímo do initrd je mimo rozsah tohoto dokumentu a musíme vás odkázat na vývojářskou dokumentaci k debian-installeru.

Ukázkový soubor s přednastavením, jež můžete využít jako základ pro své pokusy, naleznete na https://d-i.debian.org/manual/example-preseed.txt. Tento soubor je poskládán z ukázek prezentovaných v tomto dodatku.

B.2.1. Nahrání souboru s přednastavením

Používáte-li přednastavení z initrd, musíte zajistit, aby se soubor jmenoval preseed.cfg a aby se nacházel v kořenovém adresáři initrd. O vše ostatní se postará instalační program. Ten se podívá, zda je soubor přítomen, a pokud ano, tak jej nahraje.

U zbývajících způsobů přednastavení musíte instalátoru říci, který soubor má použít. Toho dosáhnete parametrem, který předáte jádru buď ručně při zavádění, nebo skrze soubor zavaděče (např. syslinux.cfg), kde na konec řádku append přidáte příslušný parametr.

Pokud to váš zavaděč umožňuje, nemusí být od věci jej nastavit tak, aby nečekal se zavedením instalačního systému na stisk klávesy Enter, ale aby dále pokračoval automaticky. V případě syslinuxu to znamená nastavit v souboru syslinux.cfg parametr timeout na hodnotu 1.

Abyste měli jistotu, že instalátor dostane správný soubor, můžete zadat jeho kontrolní součet. V současnosti to musí být md5 součet. Pokud zadaný součet a vypočítaný součet souboru nebudou souhlasit, instalátor odmítne tento soubor použít.

Zaváděcí parametry:
- pro zavádění ze sítě:
  preseed/url=http://pocitac/cesta/k/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- nebo
  preseed/url=tftp://pocitac/cesta/k/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- pro zavádění z upraveného CD:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- pro zavádění z USB média (soubor s přednastavením je
  v kořenovém adresáři USB média):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Pokud zadáte preseed/url nebo preseed/file jako zaváděcí parametr, můžete použít zkrácenou verzi url, resp. file. Obdobně lze zkrátit preseed/file/checksum na pouhé preseed-md5.

B.2.2. Použití zaváděcích parametrů jako formy přednastavení

I když nemůžete přednastavit některé kroky připravenými odpověďmi v souboru, stále můžete dosáhnout plně automatické instalace, protože můžete zadat hodnoty pro přednastavení jako zaváděcí parametry jádra. Zaváděcí parametry jádra můžete též využít v případě, kdy nechcete použít celé přednastavení, ale jen předodpovědět nějakou konkrétní otázku.

Pro nastavení hodnoty libovolné proměnné zmíněné v tomto dodatku stačí zadat cesta/k/proměnné=hodnota. Jestliže se má hodnota použít k přednastavení balíku v cílovém systému, musíte předřadit ještě vlastníka[21] proměnné vlastník:cesta/k/proměnné=hodnota. Nezadáte-li vlastníka, hodnota proměnné se nezkopíruje do databáze debconfu v cílovém systému a tudíž zůstane při konfiguraci daného balíku nevyužita.

Předzodpovězení otázky popsaným způsobem způsobí, že se tato otázka nezobrazí. Chcete-li otázce přednastavit konkrétní odpověď, ale přesto chcete, aby se otázka zobrazila, použijte místo = operátor ?=. Více též B.5.2 – „Použití přednastavení pro změnu výchozích hodnot“.

Některé často používané proměnné mohou mít i kratší variantu, Pokud je tato varianta dostupná, upřednostňujeme ji zde před úplnou formou. Konkrétně proměnnou preseed/url zde zkracujeme na url. Jiným příkladem je alias tasks, který vlastně znamená tasksel:tasksel/first.

Tři pomlčky --- mají u zaváděcích parametrů jádra speciální význam. Všechny parametry nacházející se za posledními pomlčkami budou zkopírovány do konfigurace zavaděče v instalovaném systému. (Pokud to instalátor pro daný zavaděč umožňuje.) Parametry, které instalátor rozpozná (např. volby pro přednastavení), budou automaticky odfiltrovány.

[Poznámka] Poznámka

Aktuální jádra (2.6.9 a novější) akceptují nejvýše 32 parametrů a 32 proměnných prostředí (včetně standardních voleb pro instalační program). Pokud tento limit překročíte, jádro zpanikaří. (Dřívější jádra měla tyto limity ještě menší.)

Pro většinu instalací můžete celkem bez problémů odstranit implicitní volby jako vga=normal, což vám umožní přidat další volby pro přednastavení.

[Poznámka] Poznámka

V některých případech není možné zadat hodnotu obsahující mezeru, a to i v případě, kdy hodnotu obklopíte uvozovkami.

B.2.3. Automatický režim

Díky několika pokročilým (někteří říkají zmateným) vlastnostem instalačního systém Debianu je možné, aby se poměrně jednoduchý zaváděcí parametr rozvinul do komplexní a na míru upravené automatické instalace.

Zařizuje to zaváděci volba Automated install, na některých architekturách nebo zavaděčích nazývaná též auto. V této části příručky tedy řetězec auto není zaváděcím parametrem, ale návěstím zavaděče, které připojí příslušné zaváděcí parametry.

Pro ilustraci uvádíme několik příkladů, které můžete zadat na zaváděcí výzvě.

auto url=autoserver

Toto spoléhá na fakt, že na síti existuje DHCP server, který dostane počítač do bodu, kdy bude možné přes DNS přeložit jméno autoserver. Pokud DHCP server poskytnul i název domény, tak se zkusí i varianta, kdy se za název počítače přidá právě poskytnutá doména. Například pokud je přes DHCP poskytnuta doména priklad.cz, vyústí to ve stažení souboru s přednastavením z adresy http://autoserver.priklad.cz/d-i/buster/./preseed.cfg.

Poslední část url (d-i/buster/./preseed.cfg) pochází z proměnné auto-install/defaultroot. Proměnná implicitně obsahuje adresář buster, aby jste s příchodem novějších verzí Debianu a nových kódových označení nemigrovali na nové verze automaticky, ale kontrolovaněji (po explicitním zadání nového kódového jména). Část /./ indikuje kořen, vůči kterému můžete zadávat relativní cesty (používá se v preseed/include a preseed/run). To umožňuje zadávat cesty k souborům jako kompletní URL, cesty začínající na / jsou připojeny ke kořenu, nebo jako cesty relativní k umístění, kde byl nalezen poslední soubor s přednastavením. To umožňuje vytvářet přenositelnější skripty, kde můžete přesouvat celé hierarchie skriptů na nová umístění, aniž by se co pokazilo. Například můžete na USB klíčenku přesunout soubory, které se dříve používaly na webovém serveru. Předpokládejme, že je v souboru s přednastavením nastavena proměnná preseed/run na hodnotu /scripts/late_command.sh. Pak v naší ukázce bude zmíněný soubor stažen z http://autoserver.priklad.cz/d-i/buster/./scripts/late_command.sh.

Pokud na dané síti není vybudovaná vhodná DHCP a DNS infrastruktura, nebo pokud nechcete použít výchozí cestu k souboru preseed.cfg, můžete zadat explicitní URL. Nebude-li URL obsahovat prvek /./, bude automaticky připojen na začátek cesty, tj. za třetí lomítko URL. Příklad vyžadující jen minimální podporu od místní síťové infrastruktury:

auto url=http://192.168.1.2/cesta/k/preseed.souboru

Celé to funguje tak, že

  • pokud v URL chybí protokol, předpokládá se http,

  • pokud název počítače neobsahuje tečky, připojí se k němu doména odvozená z DHCP a

  • pokud za názvem počítače není žádné lomítko, přidá se výchozí cesta.

Kromě zadávání URL můžete zadat i parametry, které přímo neovlivňují chování debian-installeru samotného, ale které mohou být předány do skriptů spouštěných z nahraného souboru s přednastavením pomocí preseed/run. V současnosti to je pouze auto-install/classes, ve zkrácené verzi classes. Příklad použití:

auto url=autoserver classes=trida_A;trida_B

Třídy mohou například označovat typ systému, který se má instalovat, nebo jazykové prostředí, které se má nastavit.

Tento koncept je možné dále rozšiřovat. Pokud toho ve svých skriptech využijete, je rozumné použít jmenný prostor auto-install, například auto-install/style. Jestliže si myslíte, že máte pro další parametr vhodné využití, zmiňte se o něm v diskusní skupině , abychom předešli konfliktům v jmenném prostoru (a případně vám přidali kratší alias).

Příkaz auto zatím není definován na všech architekturách. Stejného výsledku však můžete dosáhnout přidáním dvou parametrů auto=true priority=critical k parametrům jádra. Parametr jádra auto je vlastně alias pro auto-install/enable a potlačuje zobrazení otázek ohledně místního prostředí a nastavení klávesnice až do bodu, kdy je bude možné přednastavit. Parametr priority je alias pro debconf/priority a nastavením na hodnotu critical zajistíte, aby se zobrazovaly pouze otázky s kritickou prioritou, kterých při instalaci moc není.

Další parametry, které se mohou hodit při automatizaci instalací přes DHCP, jsou interface=auto netcfg/dhcp_timeout=60, které způsobí, že se k instalaci použije první funkční síťové rozhraní a že instalátor bude trpělivější při čekání na odpovědi od DHCP serveru.

[Tip] Tip

Rozsáhlý příklad použití této infrastruktury naleznete na webových stránkách autora. Kromě ukázkových skriptů a tříd tam také naleznete zajímavé výsledky kreativního použití přednastavení.

B.2.4. Užitečné aliasy

Při použití (automatického) přednastavení se mohou hodit následující aliasy. Poznamenejme, že aliasy zkracují pouze jméno otázky. Vždy je třeba přidat ještě hodnotu, například auto=true nebo interface=eth0.

priority debconf/priority
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
theme debian-installer/theme
auto auto-install/enable
classes auto-install/classes
file preseed/file
url preseed/url
domain netcfg/get_domain
hostname    netcfg/get_hostname
interface netcfg/choose_interface
protocol mirror/protocol
suite mirror/suite
modules anna/choose_modules
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
dmraid disk-detect/dmraid/enable
keymap keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum

B.2.5. Použití DHCP serveru pro určení souboru s přednastavením

Jelikož DHCP umí předávat jméno souboru, je možné toho zneužít pro určení souboru s přednastavením. Obvykle se totiž tato možnost používá pro určení souboru, kterým se zavede systém ze sítě. Pokud ale bude soubor ve formě URL, instalace to rozpozná a pokusí se soubor stáhnout a použít jako soubor s přednastavením. Následující příkaz ukazuje, jak upravit konfigurační soubor dhcpd.conf serveru ISC DHCP verze 3 (balík isc-dhcp-server).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://pocitac/preseed.cfg";
}

Všimněte si, že předchozí příklad omezuje použití na DHCP klienty, kteří se identifikují jako d-i, takže by to nemělo ovlivnit běžné DHCP klienty, ale pouze instalace. Direktivu filename můžete zadat například i do sekce pro jediný počítač, takže neovlivníte ostatní instalace na síti.

K dobrým zvykům při přednastavování přes DHCP patří přednastavení pouze hodnot, které jsou specifické pro vaši síť, jako je např. lokální zrcadlo. Tím se při instalaci automaticky vybere správné zrcadlo, ale zbytek instalace probíhá interaktivně. Kompletní přednastavení přes DHCP byste měli provádět pouze s nejvyšší opatrností.



[21] Vlastníkem debconf proměnné (nebo šablony) je obvykle jméno balíku, který obsahuje odpovídající debconf šablonu. U proměnných používaných přímo v instalačním systému je vlastníkem d-i. Šablony a proměnné mohou mít více vlastníků, což pomáhá při rozhodování, zda je možné je při odinstalování balíku odstranit z databáze debconfu.