B.5. Opțiuni avansate

B.5.1. Rularea comenzilor personalizate în timpul instalării

O opțiune foarte puternică și flexibilă oferită de instrumentele de preconfigurare este capacitatea de a rula comenzi sau scripturi în anumite puncte ale instalării.

Când sistemul de fișiere al sistemului țintă este montat, acesta este disponibil în /target. Dacă se folosește un DVD de instalare, atunci când este montat, acesta este disponibil în /cdrom.

# Preconfigurarea d-i este în mod inerent nesigură. Nimic din programul de
# instalare nu verifică încercările de depășire a memoriei tampon sau alte
# exploatări ale valorilor unui fișier de preconfigurare ca acesta. Utilizați
# numai fișiere de preconfigurare din locații de încredere! Din acest motiv,
# și pentru că este în general util, iată o modalitate de a rula automat orice
# comandă de shell pe care o doriți în interiorul programului de instalare.

# Această primă comandă este executată cât mai devreme posibil, imediat
# după ce este citită preconfigurarea.
#d-i preseed/early_command string anna-install some-udeb
# Această comandă se execută imediat înainte de pornirea programului de
# partiționare. Poate fi utilă pentru a aplica preconfigurarea dinamică a
# programului de partiționare, care depinde de starea discurilor (care poate
# să nu fie vizibilă atunci când se execută preseed/early_command).
#d-i partman/early_command \
#       string debconf-set partman-auto/disk "$(list-devices disk | head -n1)"
# Această comandă este rulată chiar înainte de finalizarea instalării, dar când
# încă mai există un director /target utilizabil. Puteți să faceți chroot la
# /target și s-o utilizați direct, sau să utilizați comenzile «apt-install» și
# «in-target» pentru a instala cu ușurință pachete și a rula comenzi în sistemul
# țintă.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

B.5.2. Utilizarea preconfigurării pentru a modifica valorile implicite

Este posibil să se utilizeze preconfigurarea pentru a schimba răspunsul implicit la o întrebare, dar întrebarea să fie totuși adresată. Pentru a face acest lucru, fanionul seen trebuie restabilit la false după stabilirea valorii unei întrebări.

d-i foo/bar string value
d-i foo/bar seen false

Același efect poate fi obținut pentru toate întrebările prin pasarea parametrului preseed/interactive=true la promptul de pornire. Acest lucru poate fi util și pentru testarea sau depanarea fișierului de preconfigurare.

Rețineți că proprietarul d-i ar trebui folosit numai pentru variabilele utilizate în programul de instalare însuși. Pentru variabilele care aparțin pachetelor instalate pe sistemul țintă, ar trebui să utilizați în schimb numele pachetului respectiv. Consultați nota de subsol la Secțiune B.2.2, „Utilizarea parametrilor de pornire pentru a preconfigura întrebări”.

Dacă preconfigurați folosind parametrii de pornire, puteți determina instalatorul să pună întrebarea corespunzătoare utilizând operatorul ?=, adică foo/bar?=valoare (sau proprietar:foo/bar?=valoare ). Desigur, acest lucru va avea efect numai pentru parametrii care corespund întrebărilor care sunt de fapt afișate în timpul unei instalări și nu pentru parametrii interni.

Pentru mai multe informații de depanare, utilizați parametrul de pornire DEBCONF_DEBUG=5. Acest lucru va face ca debconf să imprime mult mai multe detalii despre valorile curente ale fiecărei variabile și despre progresul acestuia prin scripturile de instalare ale fiecărui pachet.

B.5.3. Încărcarea în lanț a fișierelor de preconfigurare

Este posibil să includeți și alte fișiere de preconfigurare într-un fișier de preconfigurare. Orice configurări din acele fișiere vor înlocui configurările preexistente din fișierele încărcate anterior. Acest lucru face posibilă plasarea, de exemplu, de configurări generale de rețea pentru locația dvs. într-un fișier și configurări mai specifice pentru anumite configurații în alte fișiere.

# Pot fi listate mai multe fișiere, separate prin spații; toate vor fi
# încărcate. Fișierele incluse pot avea, de asemenea, directive de
# preconfigurare/includere proprii. Rețineți că, dacă numele fișierelor
# sunt relative, acestea sunt preluate din același director ca și fișierul
# de preconfigurare care le include.
#d-i preseed/include string x.cfg

# Programul de instalare poate verifica opțional sumele de control ale
# fișierelor de preconfigurare înainte de a le utiliza. În prezent, sunt
# acceptate doar sumele MD5; listați sumele MD5 în aceeași ordine ca și
# lista de fișiere care trebuie incluse.
#d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d

# Mai flexibilă, aceasta rulează o comandă shell și, dacă aceasta indică numele
# fișierelor de preconfigurare, include aceste fișiere. 
#d-i preseed/include_command \
#      string if [ "`hostname`" = bob ]; then echo bob.cfg; fi

# Cea mai flexibilă dintre toate, aceasta descarcă un program și îl rulează.
# Programul poate folosi comenzi precum debconf-set pentru a manipula baza
# de date debconf.
# Pot fi listate mai multe scripturi, separate prin spații.
# Rețineți că, dacă numele fișierelor sunt relative, acestea sunt preluate
# din același director ca și fișierul de preconfigurare care le rulează.
#d-i preseed/run string foo.sh

De asemenea, este posibilă încărcarea în lanț de la faza de preconfigurare de tip „initrd” sau „file”, în faza de preconfigurare de tip „network” prin configurarea „preseed/url” în fișierele anterioare. Acest lucru va face ca preconfigurarea din rețea (de tip „network”) să fie efectuată atunci când rețeaua se activează. Fiți atenți, deoarece vor exista două execuții separate ale preconfigurării. Aceasta înseamnă că puteți rula din nou comanda „preseed/early”, a doua oară după ce rețeaua se activează.