Le fichier de configuration se compose de trois sections principales:
Il existe d'autres possibilités que nous n'aborderons pas ici mais qui pourraient marcher. Pour de plus amples informations, regardez l'exmple de fichier de configuration de KickStart dans misc/src/install/ks.samp et le fichier doc/README.ks dans le répertoire i386 d'une distribution RedHat sur votre CD-ROM ou sur un site miroir de RedHat.
Les commandes que j'ai utilisées sont:
Configuration de la langue, pour l'anglais:
lang en
Configuration du réseau, pour utiliser BOOTP/DHCP:
network --bootp
serveur NFS et répertoire à partir duquel l'installation doit avoir lieu:
nfs --server chicken.swedish-chef.org /mnt/cdrom
pour utiliser le serveur NFS chicken.swedish-chef.org et
essayer de monter la distribution RedHat à partir du répertoire
/mnt/cdrom. Sélection du type de clavier, pour un clavier anglais:
keyboard uk
Efface le secteur d'amorçage du disque (MBR) - enlève tous les programmes de lancement pouvant s'y trouver.
Efface les partitions existantes, pour supprimer toutes les partitions disque avant l'installation:
clearpart -all
Partionne le disque, pour créer un système de fichier de 500Mo:
part / --size 500
Effectue une nouvelle installation de RedHat.
Définit la souris utilisée, pour une souris PS/2 ou compatible:
mouse ps/2
Définit le fuseau horaire, pour l'heure anglaise:
timezone --utc Europe/London
Définit le mot de passe initial de root, basé sur un mot de passe déjà crypté:
rootpw --iscrypted XaacoeGPmf/A.
Installe le programme LILO, pour l'installer dans le secteur d'amorçage du disque (MBR):
lilo --location mbr
Paquetages à installer - voir ci-après.
Commandes shells à lancer après l'installation - voir ci-après.
Notez que le répertoire dans lequel KickStart va chercher la distribution RedHat doit contenir un sous-répertoire RedHat qui contient la distribution RedHat pour la plate-forme considérée. Dans notre exemple, nous devrions avoir quelque chose comme:
/mnt/cdrom/RedHat
/mnt/cdrom/RedHat/base
/mnt/cdrom/RedHat/contents
/mnt/cdrom/RedHat/i386
/mnt/cdrom/RedHat/instimage
/mnt/cdrom/RedHat/RPMS
/mnt/cdrom/RPM-PGP-KEY
Si vous souhaitez créer vos propres mots de passe cryptés, il vous suffit d'utiliser Perl:
% perl -e 'print crypt("schmurrdegurr", "Xa") . "\n";'p
Autres options que je n'ai pas testées:
Installe à partir d'un CD-ROM plutô que du réseau.
Déclare explicitement les détails d'un périphérique, par exemple:
device ethernet 3c509 --opts "io=0x330, irq=7"
D'autres valeurs de device
sont possibles dont scsi
pour les contrôleurs SCSI et cdrom
pour les
gestionnaires de CD-ROM propriétaires. Met à jour une installation existante au lieu d'en installer une nouvelle.
Configure le serveur X-Window, la carte graphique et le moniteur, par exemple:
xconfig --server "Mach64" --monitor "tatung cm14uhe"
Je n'ai pas beaucoup creusé cette dernière option car je ne prévois pas d'utiliser X sur les machines installées avec KickStart. Si vous le faites, tenez moi au courant.
Voici à quoi ressemble maintenant la première partie du fichier de configuration de KickStart:
lang en
network --bootp
nfs --server chicken.swedish-chef.org /mnt/cdrom
keyboard uk
zerombr yes
clearpart --all
part / --size 500
part swap --size 120
install
mouse ps/2
timezone --utc Europe/London
rootpw --iscrypted XaacoeGPmf/A.
lilo --location mbr
La partie du fichier de configuration de KickStart consacrée aux
paquetages débute par une ligne avec la directive %packages
.
Elle est suivie par l'un des deux types de spécifications de
paquetage: des paquetages peuvent être installés
individuellement en donnant le nom de leur RPM (sans la version ni la
plate-forme), des groupes de paquetages peuvent être installés
en donnant le nom de leur groupe.
Voici un exemple de la section des paquetages d'un fichier de configuration de KickStart:
%packages
@ Base
netkit-base
bind-utils
ncftp
rdate
tcp_wrappers
traceroute
cmu-snmp
Bien, à quoi correspondent ces groupes? Il y a un grand nombre de groupes définis par défaut dans un fichier nommé base/comps dans le répertoire racine de la distribution RedHat. Voici ceux que l'on pouvait y trouver au moment où j'écris ces lignes:
Vous noterez qu'ils correspondent aux différentes configurations qui vous sont proposées lors de l'installation manuelle. Notez également que certains paquetages sont présents dans plusieurs groupes, sans que cela pose de problème lors de l'installation. L'entrée d'un groupe dans la liste comps ressemble à quelque chose comme:
0 Extra Documentation
sag
lpg
howto
faq
man-pages
end
Il semble que les groupes dont le nom est précédé d'un 1 fasse partie de l'installation par défaut. Il semble donc possible de pousser un peu plus loin la personnalisation du processus d'installation en créant ses propres groupes ou en redéfinissant les groupes existant. Gardez moi au courant si vous essayez de le faire.
C'est probablement la fonctionnalité la plus intéressante et en tous cas celle qui n'a pas d'équivalent direct dans le processus d'installation manuel. Ce que nous pouvons faire ici est de définir un ensemble de commandes de niveau shell qui seront exécutées une fois l'installation terminée (partitionnement du disque, installation des paquetages, etc.)
Cette section débute par la directive %post
dans le
fichier de configuration de KickStart. Vous pouvez ensuite utiliser
tous les utilitaires qui viennent d'être installés sur votre
nouvelle machine Linux, par exemple:
%post
ln -s /etc/rc.d/init.d /etc/init.d
ln -s /etc/rc.d/rc.local /etc/rc.local
ln -s /usr/bin/md5sum /usr/bin/md5
ln -s /usr/bin/perl /usr/local/bin/perl
chmod ug-s /bin/linuxconf
mkdir /var/tmp/tmp
perl -spi -e 's!image=/boot/vmlinuz-.*!image=/boot/vmlinuz!' /etc/lilo.conf
rm /etc/rc.d/rc*.d/*sendmail
Vous pouvez également rediriger les flux standards:
cat <<EOF>>/etc/passwd
squid:*:102:3500:Squid Proxy:/usr/squid:/bin/bash
EOF
cat <<EOF>>/etc/group
cache:x:3500:
EOF
Modifier les scripts de lancement:
cat <<EOF>>/etc/rc.local
echo 8192> /proc/sys/kernel/file-max
echo 32768> /proc/sys/kernel/inode-max
[ -x /usr/sbin/sshd ] && /usr/sbin/sshd
[ -x /usr/sbin/cfd ] && /usr/sbin/cfd
EOF
Définir les entrée de crontab:
cat <<EOF>/tmp/crontab.root
# Keep the time up to date
0,15,30,45 * * * * /usr/sbin/ntpdate -s eggtimer 2>&1>/dev/null
# Recycle Exim log files
1 0 * * * /usr/exim/bin/exicyclog
# Flush the Exim queue
0,15,30,45 * * * * /usr/exim/bin/exim -q
EOF
crontab /tmp/crontab.root
rm /tmp/crontab.root
Et même installer d'autres RPM que vous avez créés:
rpm -i ftp://chicken.swedish-chef.org/rpms/squid.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/ssh.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/exim.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/cfengine.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/linux.rpm
ssh-keygen -b 1024 -f /etc/ssh_host_key -N ""
depmod -a