Installazione con kickstart

Da GLComo.

Indice

Scopo

Creazione di un cd/dvd bootabile per eseguire in automatico un'installazione base di Fedora (o qualsiasi altra distro che usi anaconda) da una iso esistente

Difficoltà

Non è una cosa semplicissima e ci possono essere n problemi, l'importante è avere un po' di dimestichezza con la command line e non spaventarsi

Software necessario

  • La iso da cui partire (nell'esempio useremo una fedora 12)
  • mkisofs
  • un editor di testo a scelta
  • una macchina virtuale per fare test rapidamente

Spazio disco necessario

Vi serve lo spazio della iso originale moltiplicato per 3 almeno:

1x iso originale

1x copia editabile della iso

1x iso da noi creata

quindi nel mio caso in cui la iso è di circa 3Gb sono necessari 9Gb di spazio libero.

Preparazione

In un punto del nostro filesystem creiamo una directory la quale conterrà il nostro DVD, ad esempio /tmp/my_f12/

mkdir /tmp/my_f12

Montiamo la iso scaricata in una directory a scelta, ad esempio /mnt/f12

mount /home/monto/dwload/Fedora-12-i386-DVD.iso /mnt/f12 -o loop,ro

e copiamo il contenuto della iso nella nostra directory di lavoro

rsync -av /mnt/f12/ /tmp/my_f12/

ora spostiamoci nella dir di lavoro

Creare il file di kickstart

Per fare l'installazione automatica va creato un file dato in pasto ad anaconda (il programma usato nell'installazione). Questo file è il file di kickstart, chiamato nel nostro caso ks.cfg e messo nella root del cdrom.

Apriamo il nostro editor di testo preferito (ovviamente vim :D) per creare il nostro file e mettiamoci le opzioni che ci servono (nel mio caso commentate una ad una ma non è necessario in realtà)

# diciamo che dobbiamo fare una nuova installazione
install 
# e che deve essere svolta da cd
cdrom

# ci mettiamo in "batch" mode in modo da non aver bisogno di interazioni dell'utente
cmdline

# selezioniamo la tastiera e il linguaggio italiano
keyboard it
lang it_IT.UTF-8

# impostiamo la password di root (nel nostro caso "pippo")
# la password si ricava dal comando:
# openssl passwd -1 -salt "NaCl" "pippo"
rootpw --iscrypted $1$NaCl$qyQnhdW400kXMMUKEKyHG1

# disabilitiamo il firewall
firewall --disabled

# disabilitiamo selinux
selinux --disabled

# la password deve essere salvata come shadow
authconfig --enableshadow --enablemd5

# impostiamo il timezone
timezone Europe/Rome

# diciamo che il bootloader deve essere installato sull'mbr
bootloader --location=mbr

# disabilitiamo l'agente del primo avvio
firstboot --disable

# cancelliamo tutte le partizioni linux pre esistenti
clearpart --linux

# creiamo la partizione di boot da 2Gb
part /boot --fstype=ext3 --ondisk=sda --size=2048 --asprimary
# creiamo la partizione di swap da 2Gb
part swap --ondisk=sda --size=2048 --fstype=swap
# creiamo il pv da almeno 10Gb esteso a tutto il disco
part pv.00 --ondisk=sda --size=10240 --grow
# sul pv creiamo il nostro volume group
volgroup vgmonto pv.00
# e sul vg creiamo il nostro device grande almeno 10Gb esteso poi a tutto il disco in ext3
logvol / --name=Slash --vgname=vgmonto --size=10240 --grow --fstype=ext3

# creiamo l'utente monto con password "pippo"
user --name=monto --password=$1$NaCl$qyQnhdW400kXMMUKEKyHG1 --iscrypted

# alla fine dell'installazione riavvia e tenta di espellere il DVD
reboot --eject 


# selezione dei vari pacchetti (in questo caso il gruppo gnome-desktop e tutte le sue dipendenze)
%packages 
@gnome-desktop
%end
# il %end non è documentato ma ci vuole!!

# script da eseguire prima della effettiva installazione
# nel mio caso per ovviare ad un errore di fedora (o mio)
# che va a cercare i pacchetti in /mnt/source mentre stanno in /mnt/stage2
%pre
#!/bin/sh
ln -s /mnt/stage2 /mnt/source
%end

# ci potrebbe essere anche un %post che come %pre viene eseguito ma a fine dell'installazione

Modifica del file di boot

Sempre col nostro editor di testo vediamo di modificare il file di boot isolinux/isolinux.cfg in modo da dire all'installazione che vogliamo usare un file di kickstart e che vogliamo usare il cdrom.

Va quindi modificata la parte

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img stage2=hd:LABEL="Fedora"

in modo che diventi

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img stage2=hd:LABEL="Fedora" ks=cdrom:/ks.cfg method=cdrom

(cambia l'ultima riga)

Build della nostra ISO

Ora costruiamo la nostra ISO in modo che sia bootabile.

mkisofs -o ../my_f12.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -joliet-long ./

con questo comando ci ritroviamo la nostra iso in /tmp/

Tests

Consiglio di usare una macchina virtuale per comodità per testare la iso appena creata in modo che sia più semplice.

Una volta raggiunto il risultato desiderato masterizzare la iso e metterla su pc reale.

Linkografia

http://fedoraproject.org/wiki/Anaconda/Kickstart - opzioni documentate di kickstart (tenete conto che non tutto è documentato e qualcosa potrebbe anche non funzionare)

Credits

Pietro Montorfano (m0nt0)

monto84 [at] gmail [dot] com

http://monto.homelinux.org

Strumenti personali