Ett mycket kraftfullt och flexibelt alternativ som erbjuds av förkonfigurationsverktygen är möjligheten att köra kommandon eller skript vid vissa punkter i installationen.
När filsystemet för målsystemet är monterat, är det tillgängligt i /target
. Om en installations-CD används, när den är monterad finns den tillgänglig i /cdrom
.
# Förinställning i d-i anses inte som säker. Inget i installationsprogrammet letar # efter buffertöverflöden eller andra attackförsök genom värdena i en # förkonfigurationsfil såsom den här. Använd endast förkonfigurationfiler från en # plats du kan lita på! För att gör det och på grund av att det är generellt sett # användbart, här är ett sätt att automatiskt köra de skalkommandon du vill # inne i installationsprogrammet. # Det första kommandot körs så tidigt som möjligt, direkt efter # att förinställningen är inläst. #d-i preseed/early_command string anna-install some-udeb # Det här kommandot körs direkt före partitioneraren startar. Det kan vara # användbart för att tillämpa förinställning av dynamisk partitionering som är # beroende av tillståndet för diskarna (som kanske annars inte är synligt när # preseed/early_command kör). #d-i partman/early_command \ # string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" # Det här kommandot körs precis innan installationen är färdig, men när det # fortfarande finns en användbar /target-katalog. Du kan göra en chroot till /target och # använda det direkt, eller använda apt-install och kommandon från /target för att # enkelt installera paket och köra kommandon på målsystemet. #d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
Det är möjligt att använda förinställning för att ändra standardsvaret på en fråga, men fortfarande ställa frågan. För att göra det här måste flaggan seen återställas till ”false” efter att värdet ställts in för en fråga.
d-i foo/bar string value d-i foo/bar seen false
Samma effekt kan uppnås för alla frågor genom att ställa in parametern preseed/interactive=true
på uppstartsprompten. Det här kan också vara användbart för testning eller felsökning av din förkonfigurationsfil.
Observera att ”d-i”-ägaren endast ska användas för variabler som används i själva installationsprogrammet. För variabler som tillhör paket som installeras på målsystemet så ska du istället använda namnet för paketet. Se sidfoten på Avsnitt B.2.2, ”Användning av uppstartsparametrar för att förinställa frågor”.
Om du förinställer med hjälp av uppstartsparametrar så kan du göra att installationsprogrammet frågar motsvarade fråga genom att använda operatorn ”?=” operator, t.ex.
(eller foo
/bar
?=värde
).. Det här kommer så klart endast ha effekt för parametrar som motsvarar frågorna som visas under en installation och inte för ”interna” parametrar. ägare
:foo/bar
?=värde
För mer felsökningsinformation använd uppstartsflagan DEBCONF_DEBUG=5
. Detta innebära att debconf
kommer att skriva mer detaljer om varje inställning för varje variabel och om framstegen genom processen genom varje pakets installationsskript.
Det är möjligt att inkludera andra förkonfigurationsfiler från en förkonfigurationsfil. Alla inställningar i de filerna kommer att åsidosätta eventuella inställningar från filer som lästs in tidigare. Det gör det möjligt att lägga in, till exempel, allmänna nätverksinställningar för din plats i en fil och mer specifika inställningar för vissa konfigurationer i andra filer.
# Fler än en fil kan listas, separerade med blanksteg; alla kommer att # läsas in. De inkluderade filerna kan även innehålla egna direktiv för preseed/include. # Observera att om filnamnen är relativa, tas de från samma katalog som # förkonfigurationsfilen som inkluderar dem. #d-i preseed/include string x.cfg # Installationsprogrammet kan valfritt validera kontrollsummor för förkonfigurationsfiler innan # de används. För närvarande stöds endast md5sums, lista kontrollsummorna # i samma ordning som listan över filer som ska inkluderas. #d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d # Mer flexibelt, det här kör ett skalkommando och om det skriver ut namnen på # förkonfigurationsfiler, inkludera de filerna. #d-i preseed/include_command \ # string if [ "`hostname`" = bosse ]; then echo bosse.cfg; fi # Mest flexibelt av alla, denna hämtar ett program och kör det. Programmet # kan använda kommandon såsom debconf-set för att ändra debconf-databasen. # Fler än ett skript kan listas, separerade med blanksteg. # Observera att om filnamnen är relativa tas de från samma katalog # som förkonfigurationsfilen som kör dem. #d-i preseed/run string foo.sh
Det är även möjligt att kedjeläsa från initrd- eller filförinställningsfasen, in i nätverksförinställningen genom att ställa in preseed/url i de tidigare filerna. Det här kommer att orsaka att nätverksförinställningen genomförs när nätverket kommer upp. Du måste vara försiktig här, eftersom det kommer att vara två olika körningar vid förinställning, vilket till exempel betyder att du kommer att få en andra chans att köra kommandot preseed/early, den andra gången inträffar efter att nätverket har kommit upp.