Az volt a gondunk, hogy túl sokat kérdezősködik a telepítő, ami sok gép telepítésénél mondjuk nem pihentető. Ezen segítünk ma.
A telepítő elhallgattatására bevetjük a preseedinget - a Debian-alapú rendszereken, így az Ubuntun is ez a módszer használatos a telepítő által feltett kérdések automata megválaszolására.
Mikor először szórakoztam ilyesmivel - lassan két éve -, az egyik nagy gondom az volt, hogy minden telepítéskor újra meg újra formázni kellett a lemezt, és akármit próbáltam, nem tudtam megoldani, hogy a létező partíciókat használhassam. Azóta fejlődtem annyit, hogy ezzel már nem is fogok próbálkozni, ugyanis a preseeding egyszerűen képtelen a már meglévő partíciók használatára - amint az a hivatalos dokumentáció legelső oldaláról kiderül:)
A preseeding elég erős eszköz - rengeteg cucc beállítható vele, és mi most csak képességeinek töredékét fogjuk kihasználni. Kezdjük azzal, hogy elkészítjük a válaszokat tartalmazó fájlt. Lássuk, mi kerül a mienkbe:
d-i debian-installer/locale string hu_HU d-i localechooser/supported-locales en_US.UTF-8, de_DE.UTF-8 d-i console-setup/ask_detect boolean false d-i keyboard-configuration/layoutcode string huA fenti első sor a rendszerünk alapnyelve lesz. A másik a még telepített locale-ok (azaz idő-szám-dátum-miegymás formátuma). A harmadik megmondja, hogy a telepítő ne akarja kitalálni a billentyűzetem nyelvét, a negyedik megmondja, hogy magyar billentyűzetem van.
d-i netcfg/choose_interface select auto d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domainA fenti első sor megmondja, hogy nem akarunk gondolkodni azon, hogy melyik hálózati kártyáról telepedjen a rendszer. Azért vagyok ilyen bátor, mert a klienseimben csak egy kártya szokott lenni.
A második kettő a gép nevét és az IP-tartományát kérdezteti meg. A tartományt én a DHCP-szerverrel megadom, azt nem is kérdi. A gép nevét meg szeretném, ha megkérdené, az jó így.
d-i mirror/country string manual d-i mirror/http/hostname string 192.168.56.101 d-i mirror/http/directory string /ubuntu d-i mirror/http/proxy stringEz a négy sor a telepítéshez használt tükör helyével foglalkozik. Az első sor azt mondja, hogy kézzel adjuk meg, a maradék három pedig megadja a tükör helyét.
d-i clock-setup/utc boolean true d-i time/zone string Europe/Budapest d-i clock-setup/ntp boolean true d-i clock-setup/ntp-server string ntp.ubuntu.comEz a négy sor az időzónával és az időszerverrel foglalkozik. Ha már van időszerver a hálózatunkban, akkor ne feledjük azt beállítani.
d-i partman-auto/disk string /dev/sda d-i partman-auto/method string regular d-i partman-auto/choose_recipe select atomic d-i partman/default_filesystem string ext4 d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean trueEz a pár sorocska azért felel, hogy ne kelljen törődnünk a merevlemez partícionálásával és formázásával. Kiválasztjuk, hogy melyik eszközről legyen szó (1. sor), megmondjuk, hogy nem kell sem LVM, sem RAID (2. sor), az egész fájlrendszert egy partícióra tesszük, kivéve a swap-ot (3. sor), ext4-re formázunk (4. sor), és ezt tutira így akarjuk (a maradék).
d-i passwd/user-fullname string Rendszergazda d-i passwd/username string rendszergazda d-i passwd/user-password-crypted password $1$u4YffOBM$QFUPCVeJ4yhauyXjIRkdO1 d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean falseJó Ubuntus szokás szerint nem lesz root felhasználónk, de lesz olyan, aki tud majd sudo-zni. Itt adjuk meg a nevét és a jelszavát, ez utóbbit MD5-hash formájában. Elkészítése:
echo "jelszo" | mkpasswd -s -H MD5
tasksel tasksel/first multiselect ubuntu-desktopAzaz telepítsünk egy szokásos Ubuntu asztali rendszert (mi majd ehhez adjuk hozzá, ami kell még, és elvesszük belőle azt, ami nem kell).
d-i pkgsel/language-packs multiselect hu, en, deA programjainkat (és az operációs rendszert) ilyen nyelveken szeretnénk használni. Minden felhasználó egyénileg beállíthatja, hogy milyen nyelven beszéljen a rendszer, ha ő jelentkezik be.
d-i pkgsel/update-policy select unattended-upgradesAz unattended-upgrades csomag dolgozzon.
popularity-contest popularity-contest/participate boolean trueRészt akarunk venni az anonim statisztikákban: hátha jobban odafigyelnek majd azokra a programokra, amit mi használunk.
d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean trueHadd települjön a GRUB2, ahogy neki tetszik.
d-i finish-install/reboot_in_progress noteNe kelljen a gépet kézzel újraindítani a telepítés végeztével.
#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zshEzt meg itt hagyjuk, mert még fog kelleni: a mai alkalommal csak annyi volt a cél, hogy felügyelet nélkül települjön egy Ubuntu 12.04 asztali rendszer, de a testreszabás még messze van - és ez ahhoz jön majd jól.
Még egyszer a teljes fájl:
d-i debian-installer/locale string hu_HU d-i localechooser/supported-locales en_US.UTF-8, de_DE.UTF-8 d-i console-setup/ask_detect boolean false d-i keyboard-configuration/layoutcode string hu d-i netcfg/choose_interface select auto d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain d-i mirror/country string manual d-i mirror/http/hostname string 192.168.56.101 d-i mirror/http/directory string /ubuntu d-i mirror/http/proxy string d-i clock-setup/utc boolean true d-i time/zone string Europe/Budapest d-i clock-setup/ntp boolean true d-i clock-setup/ntp-server string ntp.ubuntu.com d-i partman-auto/disk string /dev/sda d-i partman-auto/method string regular d-i partman-auto/choose_recipe select atomic d-i partman/default_filesystem string ext4 d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true d-i passwd/user-fullname string Rendszergazda d-i passwd/username string rendszergazda d-i passwd/user-password-crypted password $1$u4YffOBM$QFUPCVeJ4yhauyXjIRkdO1 d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean false tasksel tasksel/first multiselect ubuntu-desktop d-i pkgsel/language-packs multiselect hu, en, de d-i pkgsel/update-policy select unattended-upgrades popularity-contest popularity-contest/participate boolean true d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i finish-install/reboot_in_progress note #d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
Ezt a fájlt kell eltennünk egy webszerverre - és így ugye érthető, hogy miért kellett MD5-hash-sel megadni benne a jelszót:)
A következő feladat rávenni a PXE-boot rendszerünket, hogy a telepítés során használja fel ezt a fájlt. A /var/lib/tftpboot/ubuntu-installer/i386/boot-screens/txt.cfg fájlt szerkesztjük át (vastaggal az újdonság) (és persze, ha amd64, akkor nem i386):
default install label install menu label ^Install menu default kernel ubuntu-installer/i386/linux append vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet label preseed menu label ^Preseed kernel ubuntu-installer/i386/linux append vga=normal auto=true url=http://192.168.56.101/preseed/precise-ubuntu-desktop.txt initrd=ubuntu-installer/i386/initrd.gz -- quiet label cli menu label ^Command-line install kernel ubuntu-installer/i386/linux append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/i386/initrd.gz -- quiet
Na lássuk: az auto=true azért kell, hogy a nyelvre és a billentyűzetre vonatkozó kérdésekkel várjon már egy keveset. A preseeding alapesetben ugyanis a következő logikát követi:
- beállítjuk a nyelvet és a billentyűzetet (hiszen esetleg enélkül semmi mást sem tudunk megadni)
- beállítjuk a hálózatot (mert ugye enélkül meg hogy szednénk preseed-fájlt?)
- és jöhet a fájl, és mehet a telepítés
De így a rendszerünk megpróbálkozik az alapértelmezett hálózati beállításokkal, és mert gondos rendszergazdák vagyunk, megtalálja az url= részben megadott fájlját. És abban benne lesz minden válasz.
Ha mindent jól csináltunk, az Ubuntu 12.04 anélkül telepedik, hogy a gép nevén kívül bármit is megkérdezne (van lehetőség arra is, hogy a gép nevét se kérdezze, és DHCP-vel mondjuk meg, de én azt nem szeretem). A kész rendszer egyetlen dologban más, mintha CD-ről telepítettük volna: az /etc/apt/sources.list-ben a szerverek mások.
Amit nem tudtam megoldani preseeddel:
- nem tudom kivenni a deb-src sorokat az /etc/apt/sources.list-ből
- nem tudtam megadni a partner csomagokat tároló szervert (a bekapcsolás ment a d-i apt-setup/partner boolean true beállítás megadásával, és a security csomagok szervere is megadható a d-i apt-setup/security_host string 192.168.56.101, vagy a d-i apt-setup/security_host string 192.168.56.101/mappa módon)
No sebaj - a közeljövőben telepítünk a gépeinkre egy puppet nevű programocskát, és azzal elvégezzük a telepített rendszer testreszabását.
Nincsenek megjegyzések:
Megjegyzés küldése