debian unattended install cu d-i preseeding
Zilele astea ma joc cu instalarea automata de masini debian peste retea, si dupa multe ore de rontait documentatia, exemple ale altora, si pe alocuri, surse, am ajuns la ceva relativ functional. Dintre highlights:
- Am preferat solutia cu preseedingul lui debian-installer, consider ca e mai moderna, mai flexibila si mai "debian-like" decat systemimager sau FAI.
- Imaginea de netboot este pe mirror-uri, numai ca nitel pitita . De inlocuit etch cu lenny sau i386 cu amd64 acolo unde e cazul. Se desface si se tranteste in tree-ul de tftp. Daca te joci cu caile (eu asa am facut), trebuie sa editezi pxelinux.cfg/default sa contina cai relative la pxelinux.0.
- Parametrul pentru incarcarea fisierului de preseed este preseed/url, dar merge si aliasul "url", care trebuie sa aiba o valoare gen [http://]server[.domeniu][/path/to/preseed.cfg]. Documentatia zice ca protocolul implicit e http, fara sa specifice alternative, banuiesc ca merge si ftp si ce-o mai sti wgetul din installer (probabil un applet de busybox). Domeniul implicit e cel luat pe dhcp. Calea implicita e "/d-i/etch/./preseed.cfg". Un director intermediar de forma "/./" semnifica radacina la care se refera include-urile relative (desi n-am folosit).
- Pentru minimizarea intrebarilor, se seteaza debconf/priority=critical (deja setat in linia de pxelinux numita "auto").
- Pana ajunge sa aibe retea, sa poata sa-si ia fisierul de preseed, sunt trei intrebari cu prioritate critical: limba, tastatura si interfata primara de retea. In cazul in care e deja setat auto_install/enable (cu aliasul auto, deja setat in linia de kernel cu "auto"), intrebarile de limba si tastatura sunt amanate pana dupa incarcarea preseedului, iar cea cu interfata nu e de prioritate critical decat daca sunt mai multe, caz in care se poate specifica interface=eth0 (aliasul de la netcfg/choose_interface). Impreuna cu ce scrie mai sus, asta inseamna ca la promptul installerului e suficient "auto interface=eth0 url=server".
- Evident, se poate pune in fisierul de configurare al pxelinux un timeout (atentie, e specificat in zecimi de secunda).
- In fisierul de preseed probabil se doreste setarea "d-i pkgsel/include string openssh-server" si "d-i passwd/root-password-crypted passwd <parola_criptata>". Parola criptata se obtine cu echo "parola" | mkpasswd -s -m md5.
- De retinut ca in fisierul de preseed intre numele pachetului si numele intrebarii se pune un singur caracter spatiu sau tab, asa ca atentie la expandarea taburilor (:set noet pentru vim users). Cine a editat vreodata makefiles stie la ce ma refer
Cred ca am atins toate chestiile care mi-au mancat mai mult de 10 minute din viata, probabil intr-un viitor apropiat dupa ce o sa pun configurile intr-un sistem de versioning o sa le public undeva.
Pentru curajosi, recomand ca link de plecare http://wiki.debian.org/DebianInstaller/Preseed. As fi curios sa mai aflu experientele altora cu sistemul asta, dat fiind ca e mai putin documentat fata de fratii lui mai batrani, asa ca dati-mi de stire (pe mail, rpetre la gmail). Bafta!