B.2. Brug af forhåndskonfiguration

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.

An example preconfiguration file that you can use as basis for your own preconfiguration file is available from https://d-i.debian.org/manual/example-preseed.txt. This file is based on the configuration fragments included in this appendix.

B.2.1. Indlæsning af filen til forhåndskonfiguration

If you are using initrd preseeding, you only have to make sure a file named preseed.cfg is included in the root directory of the initrd. The installer will automatically check if this file is present and load it.

For the other preseeding methods you need to tell the installer what file to use when you boot it. This is normally done by passing the kernel a boot parameter, either manually at boot time or by editing the bootloader configuration file (e.g. syslinux.cfg) and adding the parameter to the end of the append line(s) for the kernel.

If you do specify the preconfiguration file in the bootloader configuration, you might change the configuration so you don't need to hit enter to boot the installer. For syslinux this means setting the timeout to 1 in syslinux.cfg.

To make sure the installer gets the right preconfiguration file, you can optionally specify a checksum for the file. Currently this needs to be a md5sum, and if specified it must match the preconfiguration file or the installer will refuse to use it.

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

Bemærk at preseed/url kan forkortes til bare url, preseed/file til bare file og preseed/file/checksum til bare preseed-md5, når de sendes som opstartsparametre.

B.2.2. Brug af opstartsparametre til at forhåndskonfigurere spørgsmål

Hvis en forhåndskonfigurationsfil ikke kan bruges til at forhåndskonfigurere nogle trin, så kan installationen stadig automatiseres, da du kan sende forhåndskonfigurerede værdier på kommandolinjen når installationsprogrammet startes op.

Opstartsparametere kan også bruges hvis du ikke reelt ønsker at bruge forhåndskonfiguration, men bare ønsker at tilbyder et svar på et specifikt spørgsmål. Nogle eksempler hvor dette kan være nyttigt er dokumenteret et andet sted i denne manual.

For at angive en værdi til brug inden i debian-installer, så send bare sti/til/variabel=værdi for enhver af variablerne vist i eksemplet i dette appendiks. hvis en værdi skal bruges til at konfigure pakker for målsystemet, så skal du foranstille ejeren[18] af variablen som i ejer:sti/til/variabel=værdi. Hvis du ikke angiver ejeren, vil værdien for variablen ikke blive kopieret til debconf-databasen i målsystemet og forbliver dermed ubrugt under konfiguration af den relevante pakke.

Normalt vil forhåndskonfiguration af et spørgsmål på den måde betyde, at spørgsmålet ikke vil blive stillet. For at angive en specifik standardværdi for et spørgsmål, men stadig få spørgsmålet, så brug ?= i stedet for = som operatør. Se også Afsnit B.5.2, “Brug af forhåndskonfiguration til at ændre standardværdier”.

Bemærk at nogle variabler som ofte angives ved opstartsprompten har et kortere alias. Hvis et alias er tilgængelig, så bruges det i eksemplerne i dette appendiks i stedet for den fulde variabel. Variablen preseed/url har for eksempel et alias som url. Et andet eksempel er aliasset tasks, som oversættes til tasksel:tasksel/first.

Et --- i opstartstilvalget har speciel betydning. Kerneparametre som fremgår efter det sidste --- kan kopieres til opstartsindlæserens konfiguration for det installerede system (hvis understøttet af installationsprogrammet for opstartsindlæseren). Installationsprogrammet vil automatisk filtrere tilvalg væk (såsom forhåndskonfigurerede tilvalg), som den genkender.

[Bemærk] Bemærk

Nuværnede Linuxkerner (2.6.9 og senere) accepterer et maksimum på 32 kommandolinjetilvalg og 32 miljøtilvalg, inklusive eventuelle tilvalg tilføjet som standard for installationsprogrammet. Hvis der anvendes højere antal, vil kernen gå i panik (nedbrud). (For tidligere kerner er disse antal lavere).

For de fleste installationer kan nogle af standardtilvalgene i opstartsindlæserens konfigurationsfil, såsom vga=normal, fjernes uden problemer, hvilket giver mulighed for at tilføje flere tilvalg for forhåndskonfigurationen.

[Bemærk] Bemærk

Det er ikke altid muligt at specificere værdier med mellemrum for opstartsparametre, selv ikke hvis du afgrænser dem med citationstegn.

B.2.3. Auto-tilstand

Der er flere funktioner i Debian-installationsprogrammet, som kombineret medfører at ret så simple kommandolinjer på opstartsprompten medfører arbitrære og komplekse tilpassede automatiske installationer.

Dette aktiveres ved at bruge opstartsvalget Automatiseret installation, også kaldt auto for nogle arkitekturer eller opstartsmetoder. I dette afsnit, er auto derfor ikke en parameter, det betyder valg af opstartindstillingen, og tilføjelse af den efterfølgende opstartsparameter på opstartsprompten.

For at illustrere dette er her nogle eksempler, som kan bruges ved opstartsprompten:

auto url=autoserver

Dette afhænger af, at der er en DHCP-server, som vil få maskinen til det punkt hvor autoserver kan slås op via DNS, måske efter tilføjelse af det lokale domæne, hvis det blev angivet af DHCP. Hvis dette blev gjort et sted hvor domænet er eksempel.com, og de har en fornuftig DHCP-opsætning, vil det medføre at filen med forhåndskonfigurationen hentes fra http://autoserver.eksempel.com/d-i/bullseye/./preseed.cfg.

Den sidste del af den adresse (d-i/bullseye/./preseed.cfg) tages fra auto-install/defaultroot. Som standard inkluderer dette at mappen bullseye tillader fremtidige versioner at angive deres eget kodenavn og lade folk migrere videre på en kontrolleret måde. Delen /./ bruges til at indikere en rod, relativ til hvilke efterfølgende stier kan forankres (for brug i preseed/include og pressed/run). Dette gør det det muligt at filer angives enten som fulde adresser, stier startende med / som dermed forankres eller endda stier relative til stedet hvor den sidste fil til forhåndskonfiguration blev fundet. Dette kan bruges til at konstruere mere flytbare skripter, hvor et helt hierarki af skripter kan flyttes til en ny placering uden at blive ødelagt, for eksempel kopiere filerne ned på et USB-drev, når de startede på en internetserver. I dette eksempel, hvis filen til forhåndskonfiguration indstiller preseed/run til /scripts/late_command.sh så vil filen blive hentet fra http://autoserver.eksempel.com/d-i/bullseye/./scripts/late_command.sh.

Hvis der ingen lokal DHCP- eller DNS-infrastruktur er, eller hvis du ikke ønsker at bruge standardstien til preseed.cfg, så kan du stadig bruge en eksplicit adresse, og hvis du ikke bruger /./-elementet, så vil det blive forankret til begyndelsen af stien (dvs. den tredje / i adressen). Her er et eksempel, der kræver minimal understøttelse fra den lokale netværksinfrastruktur:

auto url=http://192.168.1.2/path/to/mypreseed.file

Måden dette fungerer på er:

  • hvis adressen mangler en protokol, så anvendes http,

  • hvis værtsnavnafsnittet ikke indeholder punktummer, så bliver domænet afledt fra HDCP tilføjet til det, og

  • hvis der ikke er nogle / efter værtsnavnet, så tilføjes standardstien.

Udover at angive adressen, så kan du også angive indstillinger, som ikke har en direkte påvirkning på opførelsen hos selve debian-installer, men som kan sendes videre igennem til skripter angivet via preseed/run i den indlæste fil til forhåndskonfiguration. I øjeblikket er det eneste eksempel på dette auto-install/classes, der har et alias classes. Dette kan bruges således:

auto url=example.com classes=class_A;class_B

Klasserne kan for eksempel betegne typen af system til installation, eller oversættelsen.

Det er selvfølgelig muligt at udvide dette koncept, og hvis du gør det, er det fornuftigt at bruge det automatisk installerede navnerum til dette formål. Så man kan have noget ala dette auto-install/style, som så bruges i dine skripter. Hvis du har brug for dette, så nævn det på postlisten , så vi kan undgå navnerumskonflikter, og måske tilføje et alias for parameteren for dig.

Opstartsvalget auto er ikke defineret på alle arkitekturer. Den samme effekt kan opnås ved at tilføje de to parametre auto=true priority=critical til kernens kommandolinje. Kerneparameteren auto er et alias for auto-install/enable og angivelse af den til true forsinker spørgsmålene om sprog og tastatur indtil efter, at der har været en mulighed for at forhåndskonfigurere dem, mens priority er et alias for debconf/priority og angivelse af den til critical stopper alle spørgsmål med en lavere prioritet i at blive stillet.

Yderligere indstililnger som kan have interesse under forsøget på at automatisere en installation mens DHCP anvendes: interface=auto netcfg/dhcp_timeout=60 som får maskinen til at vælge den første levedygtige NIC og være tålmodig med at få et svar til dets DHCP-forespørgsel.

[Vink] Vink

Et omfattende eksempel på hvordan denne ramme anvendes, inklusive eksemplskripter og klasser, kan findes på hjemmesiden for udvikleren. Eksemplerne der viser også mange andre gode effekter, som kan opnås ved kreativ brug af forhåndskonfiguration.

B.2.4. Aliassser nyttig under forhåndskonfiguration

De følgende aliasser kan være nyttige når forhåndskonfiguration (auto-tilstand) anvendes. Bemærk at dette er simple korte aliasser for spørgsmålnavne, og at du altid også skal specificere en værdi: For eksempel, auto=true eller 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
fil 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. 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. Brug af en DHCP-server til at specificere forhåndskonfigurationsfiler

It's also possible to use DHCP to specify a preconfiguration file to download from the network. DHCP allows specifying a filename. Normally this is a file to netboot, but if it appears to be an URL then installation media that support network preseeding will download the file from the URL and use it as a preconfiguration file. Here is an example of how to set it up in the dhcpd.conf for version 3 of the ISC DHCP server (the isc-dhcp-server Debian package).

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

Bemærk at det ovenstående eksempel begrænser dette filnavn til DHCP-klineter, som identificerer sig selv som d-i, så det vil ikke påvirke normale DHCP-klienter, men kun installationsprogrammet. Du kan også placere teksten i en stanza for en bestemt vært for at undgå forhåndskonfiguration af alle installationer på dit netværk.

A good way to use the DHCP preseeding is to only preseed values specific to your network, such as the Debian mirror to use. This way installs on your network will automatically get a good mirror selected, but the rest of the installation can be performed interactively. Using DHCP preseeding to fully automate Debian installs should only be done with care.



[18] Ejeren af en debconf-variabel (eller skabelon) er normalt navnet på pakken, der indeholder den tilsvarende debconf-skabelon. For variabler brugt i selve installationsprogrammet er ejeren d-i. Skabeloner og variabler kan have mere end en ejer, hvilket hjælper med at bestemme om de kan fjernes fra debconf-databasen, hvis pakken fjernes.