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 http://www.debian.org/releases/wheezy/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.

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, 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[22] 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

There are several features of Debian Installer that combine to allow fairly simple command lines at the boot prompt to result in arbitrarily complex customized automatic installs.

This is enabled by using the Automated install boot choice, also called auto for some architectures or boot methods. In this section, auto is thus not a parameter, it means selecting that boot choice, and appending the following boot parameters on the boot prompt. See Avsnitt 5.1.7, ”Uppstartsskärmen” for information on how to add a boot parameter.

To illustrate this, here are some examples that can be used at the boot prompt:

auto url=autoserver

This relies on there being a DHCP server that will get the machine to the point where autoserver can be resolved by DNS, perhaps after adding the local domain if that was provided by DHCP. If this was done at a site where the domain is example.com, and they have a reasonably sane DHCP setup, it would result in the preseed file being retrieved from http://autoserver.example.com/d-i/wheezy/./preseed.cfg.

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

The auto boot choice is not yet defined on all arches. The same effect may be achieved by simply adding the two parameters auto=true priority=critical to the kernel command line. The auto kernel parameter is an alias for auto-install/enable and setting it to true delays the locale and keyboard questions until after there has been a chance to preseed them, while priority is an alias for debconf/priority and setting it to critical stops any questions with a lower priority from being asked.

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.

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. 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.



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