B.2. Použití

You will first need to create a preconfiguration file and place it in the location from where you want to use it. Creating the preconfiguration file is covered later in this appendix. Putting it in the correct location is fairly straightforward for network preseeding or if you want to read the file off a usb-stick. If you want to include the file in an installation ISO image, you will have to remaster the image. How to get the preconfiguration file included in the initrd is outside the scope of this document; please consult the developers' documentation for debian-installer.

Ukázkový soubor s přednastavením, jež můžete využít jako základ pro své pokusy, naleznete na https://www.debian.org/releases/bookworm/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.

Boot parameters to specify:
- if you're netbooting:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- or
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- if you're booting a remastered installation image:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- if you're installing from USB media (put the preconfiguration file in the
  toplevel directory of the USB stick):
  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í

If a preconfiguration file cannot be used to preseed some steps, the install can still be fully automated, since you can pass preseed values on the command line when booting the installer.

Boot parameters can also be used if you do not really want to use preseeding, but just want to provide an answer for a specific question. Some examples where this can be useful are documented elsewhere in this manual.

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[18] 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/bookworm/./preseed.cfg.

Poslední část url (d-i/bookworm/./preseed.cfg) pochází z proměnné auto-install/defaultroot. Proměnná implicitně obsahuje adresář bookworm, 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/bookworm/./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
auto auto-install/enable
classes auto-install/classes
file preseed/file
url preseed/url
theme debian-installer/theme
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
keymap keyboard-configuration/xkb-keymap
modules anna/choose_modules
firmware hw-detect/firmware-lookup
interface netcfg/choose_interface
domain netcfg/get_domain
hostname    netcfg/get_hostname
protocol mirror/protocol
suite mirror/suite
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop tasksel:tasksel/desktop
preseed-md5 preseed/file/checksum

B.2.5. Examples of boot prompt preseeding

Here are some examples of how the boot prompt might look like (you will need to adapt this to your needs).

# To set French as language and France as country:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# To set English as language and Germany as country, and use a German keyboard layout:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# To install the MATE desktop:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# To install the web-server task:
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

B.2.6. 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í.



[18] 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.