B.2. Användning av förinställningar

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.

Ett exempel på en förkonfigurationsfil du kan använda som grund för din egna förkonfigurationsfil finns tillgänglig från https://www.debian.org/releases/bullseye/example-preseed.txt. Den filen är baserad på konfigurationsdelarna som inkluderats i den här bilagan.

B.2.1. Inläsning av förkonfigurationsfilen

Om du använder förinställning via initrd, behöver du endast se till att filen som heter preseed.cfg finns inkluderar i rotkatalogen på initrd. Installationsprogrammet kommer automatiskt att kontrollera om den filen finns och sedan läsa in den.

För de övriga förinställningsmetoderna behöver du tala om för installationsprogrammet vilken fil du använder när du startar upp den. Det gör du genom att skicka med en uppstartsparameter till kärnan, antingen manuellt vid uppstart eller genom att redigera konfigurationsfilen för starthanteraren (syslinux.cfg) och där lägga till parametern på slutet av append-raden för varje kärna som listas.

Om du anger förkonfigurationsfilen i konfigurationen för starthanteraren, bör du kanske ändra konfigurationen så att du inte behöver trycka Enter för att starta installationsprogrammet. För syslinux betyder det att ställa in timeout-värdet till 1 i syslinux.cfg.

För att se till att installationsprogrammet får rätt förkonfigurationsfil, kan du valfritt ange en kontrollsumma för filen. För närvarande behöver det vara en md5sum och om den anges måste den stämma med förkonfigurationsfilen eller så kommer installationsprogrammet att vägra använda den.

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

Observera att preseed/url kan kortas ner till endast url, preseed/file till file och preseed/file/checksum till preseed-md5 när de skickas med som uppstartsparametrar.

B.2.2. Användning av uppstartsparametrar för att förinställa frågor

Om en förkonfigurationsfil inte kan användas för att förinställa vissa steg, kan installationsprogrammet fortfarande vara fullständigt automatiserad eftersom du kan skicka förinställningsvärden på kommandoraden när installationsprogrammet startar upp.

Uppstartsparametrar kan även användas om du inte vill använda förinställning utan bara vill tillhandahålla ett svar på en specifik fråga. Några exempel på var det här kan vara användbart finns dokumenterat i den här handboken.

För att ställa in ett värde som kan användas i debian-installer, skicka helt enkelt sökväg/till/variabel=värde för någon av de förinställningsvariabler som listas i de exempel i den här bilagan. Om ett värde ska användas för att konfigurera paket för målsystemet, behöver du lägga till owner[21] för variabeln som i ägare:sökväg/till/variabel=värde. Om du inte anger ägaren, kommer värdet för variabeln inte att kopieras till debconf-databasen på målsystemet och därigenom inte användas under konfigurationen av det relevanta paketet.

Vanligtvis betyder förinställning av en fråga på det här sättet att frågan inte kommer att ställas. För att ställa in ett specifikt standardvärde för en fråga, men fortfarande ställa frågan, kan du använda ?= istället för = som operator. Se även Avsnitt B.5.2, ”Användning av förinställningar för att ändra på standardvärden”.

Observera att vissa variabler som ofta ställs in vid uppstartsprompten har ett kortare alias. Om ett alias finns tillgängligt kommer det att användas i exemplen i denna bilaga istället för den fullständiga variabeln. Speciellt variabeln preseed/url, som har fått aliaset url. Ett annat exempel är aliaset tasks som översätts till tasksel:tasksel/first.

En --- i uppstartsflaggorna har en speciell betydelse. Kärnparametrar som dyker upp efter den sista --- kan kopieras in i starthanterarens konfiguration för det installerade systemet (om det stöds av installationsprogrammet för starthanteraren). Installationsprogrammet kommer automatiskt att filtrera ut alla flaggor (som förkonfigurationsflaggor) som den känner igen.

[Notera] Notera

De aktuella linux-kärnorna (2.6.9 och senare) accepterar maximalt 32 kommandoradsflaggor och 32 miljöflaggor, inklusive eventuella flaggor som läggs till som standard för installationsprogrammet. Om dessa tal överstigs kommer kärnan att få panik (krasch). (För tidigare kärnor var dessa tal lägre.)

För de flesta installationer kan vissa av de standardflaggor i din konfigurationsfil för starthanteraren såsom vga=normal med säkerhet tas bort, vilket kan ge dig möjlighet att lägga till fler flaggor för förinställningen.

[Notera] Notera

Det kanske inte alltid är möjligt att ange värden med blanksteg för uppstartsparametrar, även om du avgränsar dem med citationstecken.

B.2.3. Auto-läget

Det finns flera funktioner i Debians Installationsprogram som kombinerar att tillåta ganska enkla kommandorader vid startprompten för att resultera i godtyckligt komplexa anpassade automatiska installationer.

Dessa är aktiverade genom att använda Automated installboot-valet, även kallat auto för vissa arkitekturer eller startmetoder. I denna sektion, auto är alltså ingen parameter det betyder att du väljer det startalternativet och lägger till följande startparametrar på startprompten. SeAvsnitt 5.1.7, ”Uppstartsskärmen” för information om hur du lägger till en startparameter.

För att visa detta är några exempel som kan användas vid uppstartsprompten:

auto url=autoserver

Det här förlitar sig på att det finns en DHCP-server som får maskinen till den punkt där autoserver kan slås upp av DNS, kanske efter den lokala domänen läggs till om den tillhandahölls av DHCP. Om det gjordes på ett system där domänen var exampel.se, och de har en ganska förnuftig DHCP-konfiguration, skulle det resultera i att förinställningsfilen hämtades från http://autoserver.exampel.se/d-i/bullseye/./preseed.cfg.

Den sista delen av den url:en (d-i/bullseye/./preseed.cfg) hämtas från auto-install/defaultroot. Som standard inkluderar det här katalogen bullseye för att tillåta att framtida versioner anger sina egna kodnamn och låter folk migrera framåt på ett kontrollerat sätt. Biten /./ används för att indikera en rot, relativ till vilka efterföljande sökvägar som kan fästas (för användning i preseed/include och preseed/run). Det här tillåter att filer kan anges antingen som fullständiga url:er, sökvägar som börjar med / som då är fästa, eller även sökvägar relativa till platsen där den senaste förinställningsfilen hittades. Det här kan användas för att bygga mer portabla skript där en hel hierarki av skript kan flyttas till en ny plats utan att göra sönder den, till exempel kopiera filerna till ett USB-minne när de ursprungligen fann spå en webbserver. I det här exemplet, om förinställningsfilen ställer in preseed/run till /skript/sent_kommando.sh kommer filen att hämtas från http://autoserver.exempel.se/d-i/bullseye/./skript/sent_kommando.sh.

Om det inte finns någon lokal DHCP- eller DNS-infrastruktur, eller om du inte vill använda standardsökvägen till preseed.cfg, kan du fortfarande använda en angiven url, och om du inte vill använda elementet /./ kommer det att fästas till början av sökvägen (alltså den tredje / i url:en). Här är ett exempel som kräver minimalt stöd från den lokala nätverksinfrastrukturen:

auto url=http://192.168.1.2/sökväg/till/minförinställnings.fil

Sättet det här fungerar på är:

  • om url:en saknar ett protokoll, antas http,

  • om värdnamnssektionen inte innehåller punkter, den har erhållit domänen från DHCP som lagt till den, och

  • om det inte finns några / efter värdnamnet, kommer standardsökvägen att läggas till.

I tillägg till att ange url:en, kan du även ange inställningar som inte direkt påverkar beteendet för själva debian-installer, men som kan skickas genom till skript som angivits med preseed/run i den inlästa förinställningsfilen. För tillfället, det enda exemplet på det här är auto-install/classes, vilken har aliaset classes. Den här kan användas på detta sätt:

auto url=exampel.se classes=klass_A;klass_B

Klasserna skulle till exempel kunna beteckna systemtypen som ska installeras, eller lokalanpassningen som ska användas.

Det är så klart möjligt att utöka det här konceptet, och om du gör det, är det rimligt att använda namnrymden auto-install namespace för det här. Så ett exempel på det här är auto-install/style vilket sedan används i dina skript. Om du känner behovet att göra det här, nämn det på sändlistan så att vi kan undvika konflikter i namnrymden, och kanske lägga till ett alias för parametern åt dig.

Uppstartval auto är ännu inte definierad på alla arkitekturer. Samma effekt kan uppnås genom att helt enkelt lägga till de två parametrarna auto=true priority=critical till kärnans kommandorad. Parametern auto kärnparametern är ett alias för auto-install/enable och ställer man in den till true så fördröjs frågor om lokalanpassning och tangentbord tills efter det finns en chans att förinställa dem, samt priority är ett alias för debconf/priority och ställer man in den till critical så stoppas alla frågor med en lägre prioritet från att ställas.

Ytterligare flaggor som kan vara intressanta vid försök att automatisera en installation när DHCP används är: interface=auto netcfg/dhcp_timeout=60 vilket gör att maskinen väljer det första användbara nätverkskortet och väntar lite längre på ett svar på sin DHCP-fråga.

[Tips] Tips

Ett djupgående exempel på hur man använder det här ramverket, inklusive exempelskript och klasser, kan hittas på webbsidan för dess utvecklare. Exemplen som finns tillgängliga där visar många andra trevliga effekter som kan uppnås genom kreativ användning av förkonfigurering.

B.2.4. Användbara alias vid förinställning

Följande alias kan vara användbara vid användning av (automatiskt läge) förinställning. Observera att dessa helt enkelt är kort alias för frågenamn, och du behöver även alltid ange ett värde: till exempel, 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
rekommendationer 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

Här är några exempel på hur startprompten kan se ut (du måste anpassa detta till dina behov ; se också Avsnitt 5.1.7, ”Uppstartsskärmen”.

# För att ställa in franska som språk och Frankrike som land:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# För att ställa in engelska som språk och Tyskland som land och använda en tysk tangentbordslayout:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# För att installera MATE skrivbordet
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# För att installera webbserveruppgiften:
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

B.2.6. Använd en DHCP-server för att ange förkonfigurationsfiler

Det är också möjligt att använda DHCP för att ange en förkonfigurationsfil att hämta från nätverket. DHCP tillåter att man anger ett filnamn. Normalt är det en fil som används för uppstart via nätverket men om det verkar vara en URL så kommer installationsmediumet som har stöd för förinställning via nätverket att hämta filen från URL:en och använda det som en förkonfigurationsfil. Här är ett exempel på hur man ställer in dhcpd.conf för version 3 av ISC DHCP-servern (Debian-paketet heter isc-dhcp-server).

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

Observera att exemplet ovan begränsar filnamnet till DHCP-klienter som identifierar sig själva som d-i, så det kommer inte att påverka vanliga DHCP-klienter men endast installationsprogrammet. Du kan också lägga in text i en sats för endast en speciell värd för att undvika förinställning av alla installationer på ditt nätverk.

Ett bra sätt att använda förinställning via DHCP är att endast förinställa värden specifika till ditt nätverk, såsom vilken Debian-spegel som ska användas. Det här sättet kommer installationer på ditt nätverk att automatiskt få en bra spegel vald men resten av installationen kan genomföras interaktivt. Använda förinställning via DHCP för att helt automatisera Debian-installationer ska genomföras med försiktighet.



[21] Ägaren av en debconf-variabel (eller mall) är vanligtvis namnet på paketet som innehåller motsvarade debconf-mall. För variabler som används i själva installationsprogrammet är ägaren d-i. Mallar och variabler kan ha fler än en ägare som hjälper till att bestämma huruvida de kan tas bort från debconf-databasen om paketet avinstalleras.