Puppeteers Blog

Debian 9 automaattisen asennuksen tekeminen muistitikulta

September 22, 2017 

Tässä artikkelissa näytetään kaksi tapaa Debianin asentamiseksi muistitikulta. Ensimmäisessä CD/DVD-asennin yksinkertaisesti kopioidaan muistitikulla, jolloin siitä tulee kätevämpi ja nopeampi CD-levyn korvike. Toinen tapa on monimutkaisempi, mutta mahdollistaa asennusten automatisoinnin helposti. Alla oletetaan, että muistitikun laitetiedosto on /dev/sdb ja että komennot ajetaan pääkäyttäjän oikeuksin esim. sudoa käyttämällä.

Koska väärän laitetiedoston käyttäminen voi ylikirjoittaa koko järjestelmälevyn, on muistitikun laitetiedosto syytä tarkistaa esimerkiksi "dmesg"-komennolla:

[79499.127904] usb 2-1.2: new high-speed USB device number 13 using ehci-pci
 [79499.230913] usb 2-1.2: New USB device found, idVendor=0951, idProduct=1607
 [79499.230918] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
 [79499.230920] usb 2-1.2: Product: DataTraveler 2.0
 [79499.230921] usb 2-1.2: Manufacturer: Kingston
 [79499.230923] usb 2-1.2: SerialNumber: 5B840D0001DA
 [79499.231294] usb-storage 2-1.2:1.0: USB Mass Storage device detected
 [79499.231633] scsi16 : usb-storage 2-1.2:1.0
 [79500.230217] scsi 16:0:0:0: Direct-Access Kingston DataTraveler 2.0 PMAP PQ: 0 ANSI: 0 CCS
 [79500.230722] sd 16:0:0:0: Attached scsi generic sg1 type 0
 [79500.460385] sd 16:0:0:0: [sdb] 15646720 512-byte logical blocks: (8.01 GB/7.46 GiB)
 [79500.461321] sd 16:0:0:0: [sdb] Write Protect is off
 [79500.461327] sd 16:0:0:0: [sdb] Mode Sense: 23 00 00 00
 [79500.462022] sd 16:0:0:0: [sdb] No Caching mode page found
 [79500.462028] sd 16:0:0:0: [sdb] Assuming drive cache: write through
 [79500.465797] sdb: sdb1
 [79500.468449] sd 16:0:0:0: [sdb] Attached SCSI removable disk

Lisäksi on syytä vamistaa, että kyseiseltä muistitikulta on ylipäätään mahdollista bootata käyttöjärjestelmä tai sen asennin; kaikilta ei nimittäin voi.

Muistitikusta voi tehdä Debianin CD/DVD-asennusmedian korvikkeen hyvin yksinkertaisesti:

$ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso $ cp debian-9.1.0-amd64-netinst.iso /dev/sdb $ sync

Tällä tavalla saadaan kuitenkin luotua vain boottaava muistitikku, ei räätälöityä asennusohjelmaa, eikä se siten sovellu asennuksen automaatioon, ellei preseed-tiedostoa ladata esim. verkosta. Preseed-tiedosto lataaminen verkosta tavanomaisella Debianin asennusohjelmalla on kuitenkin työlästä, sillä käynnistysparametrit ("auto url=<url>") pitää syöttää käsin asennuksen komentoriville. Parametrien syöttämistä ei suinkaan helpota se, että asennusohjelma käyttää oletuksena Yhdysvaltalaista ("us") näppäimistöasettelua.

Onneksi on mahdollista luoda myös täysin räätälöity Debian-asennusmedia, joka soveltuu hyvin asennuksen automatisointiin. Vaikka tästä onkin olemassa viralliset ohjeet, eivät ne kerro kaikkia oleellisia yksityiskohtia, koska ne olettavat pohjatietoa eri Debian-asentimien sisäisestä toiminnasta. Siispä alla onkin seikkaperäiset ohjeet.

Aluksi luodaan muistitikulle esimerkiksi cfdisk-ohjelmalla FAT32-tyyppinen osio (tässä: /dev/sdb1) ja määritetään se käynnistettäväksi ("bootable"). Sen jälkeen luodaan tikulle Master Boot Record ("MBR"), alustetaan jo aiemmin luotu osio (/dev/sdb1) ja kopioidaan alustettuun osioon syslinuxin tarvitsemat tiedostot:

$ apt-get install mbr syslinux
 $ install-mbr /dev/sdb
 $ mkdosfs /dev/sdb1
 $ syslinux /dev/sdb1

Seuraavaksi mountataan muistitikku ja ladataan sinne verkosta järjestelmän ydin ja muita tarvittavia tiedostoja, mukaanluettuna asentimen CD/DVD-levykuva:

$ mkdir /mnt/muistitikku
 $ mount /dev/sdb1 /mnt/muistitikku
 $ cd /mnt/muistitikku
 $ wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/hd-media/boot.img.gz
 $ wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/hd-media/initrd.gz
 $ wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/hd-media/vmlinuz
 $ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.1.0-amd64-netinst.iso

On tärkeää ladata nimenomaan hd-image -tyyppiset asennustiedostot. Saman nimiset tiedostot löytyvät myös CD-levykuvalta, mutta ne toimivat eri tavoin:

  • cd-image: olettaa, että asennusmedia on asennusvaiheessa jossakin fyysisessä CD/DVD -laitteessa
  • hd-image: etsii asennuslevykuvaa (ISO) itse asennusmedialta

Seuraavaksi kopioidaan preseed-tiedosto muistitikun juureen:

$ cp <preseed-tiedosto> preseed.cfg

Preseed-tiedosto kannattaa rakentaa asennettavan käyttöjärjestelmäversion (tässä Debian 9) esimerkkitiedoston pohjalle, sillä eri käyttöjärjestelmäversioissa asennusohjelman esittämät kysymykset ja vastaukset vaihtelevat hieman, jolloin asennuksen automatisointi voi jää vajaaksi.

Seuraavaksi luodaan syslinuxin asetustiedosto, jolla asennus käynnistetään:

$ echo "default vmlinuz initrd=initrd.gz priority=critical debian-installer/locale=en_US.UTF-8 keyboard-configuration/xkb-keymap=us preseed/file=/hd-media/preseed.cfg" > syslinux.cfg

Yllä kieliasetukset määritetään heti asennuksen komentorivillä, koska muutoin niitä kysytään ennen kuin preseed-tiedostoa on edes ladattu.

Lopuksi muistitikun sisällön tulisi näyttää tältä:

$ ls
 $ boot.img.gz debian-9.1.0-amd64-netinst.iso initrd.gz ldlinux.c32 ldlinux.sys preseed.cfg syslinux.cfg vmlinuz
Samuli Seppänen
Samuli Seppänen
Author archive
menucross-circle