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

Du behöver först skapa en förkonfigurationsfil och placera den på platsen där du vill använda den. Skapandet av förkonfigurationsfilen förklaras senare i den här bilagan. Lägga den på rätt plats är ganska självförklarande för förinställning via nätverket eller om du vill läsa filen från en diskett eller ett USB-minne. Om du vill inkludera filen på en cd- eller dvd-skiva behöver du göra om iso-avbildningen. Hur man får förkonfigurationsfil inkluderad i initrd är utanför omfånget för det här dokumentet; konsultera utvecklarnas dokumentation för 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 ../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 (exempelvis syslinux.cfg) och lägga till parametern på slutet av den tillagda raden/raderna till kärnan.

Om du anger förkonfigurationsfilen i konfigurationen för starthanteraren, behöver 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.

Uppstartsparametrar att ange:
- om du startar upp via nätverket:
  preseed/url=http://värd/sökväg/till/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- om du startar upp på en ombyggd cd:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- om du installerar från ett USB-media (lägg förkonfigurationsfilen i
  rotkatalogen på USB-minnet):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Observera att preseed/url kan kortas ner till endast url och preseed/file till file 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[18] 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

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

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 Debian Installer som kan kombineras för att tillåta hyffsat enkla kommandorader vid uppstartsprompten som resulterar i godtyckligt komplexa och anpassade automatiska installationer. 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/lenny/./preseed.cfg.

Den sista delen av den url:en (d-i/lenny/./preseed.cfg) hämtas från auto-install/defaultroot. Som standard inkluderar det här katalogen lenny 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/lenny/./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.

Uppstartsetiketten auto är ännu inte definierad överallt. 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 ä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

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.

auto auto-install/enable
classes auto-install/classes
fb debian-installer/framebuffer
locale debian-installer/locale
priority debconf/priority
fil preseed/file
url preseed/url
interface netcfg/choose_interface
hostname    netcfg/get_hostname
domain netcfg/get_domain
protocol mirror/protocol
suite mirror/suite

B.2.5. 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 dhcp3-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.



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