FLASH INFORMATIQUE FI



Kickstart pour Ubuntu


Le but de cet article est de présenter kickstart pour Ubuntu utilisant la même syntaxe que le kickstart de RedHat, mais pas le même installeur.



The aim of this paper is to present kickstart for Ubuntu using the same syntax as the RedHat kickstart, but not the same installer.


Benjamin BARRAS


Fiche descriptive



Introduction

Le présent article est rédigé dans le style démarrage rapide. Mais si vous souhaitez avoir un un éclairage supplémentaire sur le sujet, il peut être utile, mais pas obligatoire, de lire l’article Automatiser votre installation Linux avec Kickstart du précédent Flash informatique, qui est bien plus complet. Le but ici n’est pas de redire ce qui a déjà été écrit, mais bien de guider le lecteur qui souhaite utiliser Kickstart pour installer Ubuntu.
L’installeur d’Ubuntu s’appelle Ubiquity qui s’appuie lui-même sur le debian-installer (d-i). Ce dernier utilise des commandes connues sous le nom de preseed, et qui permettent de faire une installation automatisée à l’aide d’un fichier texte, méthode appelée preseeding method. Canonical a intégré un interpréteur Kickstart dans Ubiquity, afin de faire le lien avec la syntaxe Kickstart et les commandes preseed, ce qui peut poser quelques problèmes de compatibilité entre ces deux différentes méthodes.
Comme les liens hypertextes dans la suite du texte sont périssables, vous trouverez les mots-clés comme nom de lien qui vous permettront de retrouver facilement les documents cités.

Règles

Le fichier Kickstart est un simple fichier texte, composé de sections, qui doivent être écrites dans l’ordre, soit :

  1. La section des commandes qui va vous permettre de définir les paramètres de base de votre système et contient une liste d’éléments identifiés par un mot-clé suivi de ses paramètres. On utilisera l’outil graphique system-config-kickstart qui nous facilitera le travail, il se chargera de nous mettre les bons mots-clés et les paramètres associés.
  2. La section %packages qui est la plus difficile, car pas documentée. Ici seul l’outil graphique va nous aider à démarrer rapidement.
  3. Les sections %pre et %post qui permettent d’écrire un script de pré-installation ou de post-installation. C’est la seule manière de configurer notre système correctement.
Remarques
Des commentaires peuvent être ajoutés à l’aide du symbole # au début d’une ligne.
Chaque mot-clé ainsi que ses paramètres associés doivent être écrits sur une seule ligne.

La bonne nouvelle est qu’Ubiquity permet d’ajouter des commandes preseed aux mots-clés Kickstart dans le même fichier. Une documentation complète de ces commandes se trouve ici : Automating the installation using preseeding.
Mais le plus simple est de lire directement l’exemple complet example-preseed.txt dont la documentation ci-dessus s’est fortement inspirée. Il suffit de remplacer le mot-clé d-i du fichier précédent par le mot-clé preseed dans le fichier Kickstart. Il y a quelques commandes preseed dans l’exemple de fichier Kickstart ci-contre.

Compatibilité

Toutes les fonctionnalités de Kickstart ne sont pas forcément implémentées, et peuvent même être incompatibles avec le debian-installer. Il est important de lire la liste des compatibilités concernant Kickstart pour Ubuntu qui se trouvent ici : Kickstart Compatibility et Automatic Installation Ubuntu. De plus, il est conseillé de bien faire des tests avant de se lancer dans une installation automatique.

Limitations

Le point le plus important, à mes yeux, qui va limiter votre installation automatique est celui-ci :

Although most questions used by debian-installer can be preseeded using this method, there are some notable exceptions. You must (re)partition an entire disk or use available free space on a disk ; it is not possible to use existing partitions.

Ce qui veut dire que vous ne POUVEZ PAS INSTALLER Ubuntu, de manière automatique (Kickstart ou debian-installer), si vous n’avez pas une partition LIBRE sur votre disque cible.

Sensibilité

Kickstart pour Ubuntu est très peu sensible aux changements de version du système d’exploitation, contrairement à RedHat ou Fedora. Cela est dû à la grande stabilité, dans le temps, du debian-installer. Ce qui signifie que votre fichier Kickstart fonctionnera tel quel au gré des versions d’Ubuntu. Cerise sur le gâteau, l’url qui pointe sur votre distribution Ubuntu dans le fichier Kickstart est toujours la même, la différence entre versions ne se fait qu’avec l’amorce que vous utilisez pour démarrer votre installation.

Premiers pas

Il faut utiliser le system-config-kickstart pour générer son premier fichier Kickstart. Il vous permettra d’avoir la liste des paquetages à installer, ainsi que tous les mots-clés, d’une manière simple et efficace.
Kickstart pour Ubuntu est très peu sensible aux changements de version du système d’exploitation, contrairement à RedHat ou Fedora. Cela est dû à la grande stabilité, dans le temps, du debian-installer. Ce qui signifie que votre fichier Kickstart fonctionnera tel quel au gré des versions d’Ubuntu. Cerise sur le gâteau, l’url qui pointe sur votre distribution Ubuntu dans le fichier Kickstart est toujours la même, la différence entre versions ne se fait qu’avec l’amorce que vous utilisez pour démarrer votre installation.

Premiers pas

Il faut utiliser le "system-config-kickstart" pour générer son premier fichier Kickstart. Il vous permettra d’avoir la liste des paquetages à installer, ainsi que tous les mots-clés, d’une manière simple et efficace.



Sur la page précédente, vous avez un exemple de fichier Kickstart, fonctionnant très bien, qui pourra vous servir par la suite.
Dans cet exemple, la post-installation est volontairement longue, mais pas obligatoire, afin de bien montrer tout ce que l’on peut faire avant de mettre en route notre système.

Packages

Dans la section %packages, une entrée par ligne, on spécifie soit un groupe (@) de paquetage ou juste un nom de paquetage. Vous pouvez voir la liste des groupes possibles, à l’aide de la commande suivante :

tasksel --list-tasks

et la liste complète des paquetages se trouve ici : Ubuntu Packages.

Post-installation

Ici aussi voir, la post-installation se fera non pas à l’installation du système, mais au premier démarrage du système. On utilise le service rc.local qui va exécuter notre script postInstall.sh qu’on a pris soin de mettre en place dans la partie %post de notre fichier Kickstart.

Installation

Quelle que soit la méthode d’amorçage choisie, vous devez passer le paramètre ks=... comme paramètre de boot, voir. Par exemple à l’invite de démarrage (boot prompt) :

linux ks=cdrom:/ks.cfg

ou

linux ks=http://http_server.epfl.ch/ks_dir/ks.cfg

Pour plus de détails concernant le passage de paramètres au démarrage, voir l’article Personnaliser vos images ISO Linux.

Conclusion

Vous pouvez voir la liste complète des questions/réponses (format preseed) avec lesquelles votre système a été installé, en utilisant les commandes suivantes :

sudo debconf-get-selections --installer > \
 presseed.txt
sudo debconf-get-selections >> presseed.txt

mais cela reste assez indigeste, raison pour laquelle je vous conseille d’utiliser Kickstart.

### Generated by Kickstart Configurator
###
### Filename: ks.cfg
###
### System language
lang en_US
### Language modules to install
langsupport fr_CH --default=en_US
### System keyboard
keyboard ch_fr
### System mouse
mouse
### System timezone
timezone Europe/Zurich
### Root password
rootpw --disabled
### Initial user
### Tous les paramètres doivent être sur une ligne
user barras --fullname "Admin User" --iscrypted  
 --password $6$.WwbX...too long...e5LdwY1
### Network
### Tous les paramètres doivent être sur une ligne
network --bootproto=static --device=eth0
 --ip=128.178.1.55 --netmask=255.255.255.0
 --gateway=128.178.1.1 --nameserver=128.178.15.8
### Si on utilise dhcp, mettre cette ligne et
### retirer l'autre ci-dessus
### network --bootproto=dhcp --device=eth0
###
### Exemple de commandes preseed
### Rechercher ces deux commandes dans le fichier:
### example-preseed.txt
preseed netcfg/get_hostname string ditsbpc13
preseed netcfg/get_domain string epfl.ch
###
### Reboot after installation
reboot
### Si vous souhaitez voir une installation Ubuntu
### non graphique (rarissime)
### Use text mode install
text
### Install OS instead of upgrade
install
### Use Web installation
url --url http://mirror.switch.ch/ftp/ubuntu
### System bootloader configuration
bootloader --location=mbr
### Clear the Master Boot Record
zerombr yes
### Partition clearing information
clearpart --all
### Disk partitioning information
part / --fstype=ext4 --size=120000
part swap --size=8000
### System authorization infomation
auth --useshadow --enablemd5
### Firewall configuration
firewall --disabled

### Package install information
%packages
@ubuntu-desktop
ssh
autofs
ntp

### Post installation
%post
### Modify rc.local
mv /etc/rc.local /etc/rc.local.orig
cat > /etc/rc.local <<EOT
#!/bin/sh
#
# Script post installation
if [ ! -e /root/postInstall.1 ]; then
/root/postInstall.sh && touch /root/postInstall.1
fi
exit 0
EOT
chmod a+x /etc/rc.local
###
### postinstall.sh
cat > /root/postInstall.sh <<EOFPOST
###
### Log
echo `date` > /root/post-install.log
echo 'Begin log' >> /root/post-install.log
###
### Pakages installation (example)
### apt-get install ntp
### apt-get install gufw
### tasksel install edubuntu-desktop/server
###
### Profile
/bin/cp /etc./profile /etc/profile.orig
cat <<EOF>> /etc/profile
#
# B.Barras
export HISTTIMEFORMAT=" %d.%m.%Y-%T "
export HISTFILESIZE=5000
EOF
###
### SSH
cd /root
mkdir .ssh
chmod 755 .ssh
cat <<EOF>> .ssh/authorized_keys
ssh-dss AAA...too long...eKZ8n benjamin.barras@epfl.ch
EOF
chmod 644 .ssh/authorized_keys
cd /
###
### Restriction SSH
cat <<EOF>> /etc/ssh/sshd_config
#
# B.Barras
AllowUsers barras
EOF
/etc/init.d/ssh restart
###
### NTP
cd /etc
cp ntp.conf ntp.cpy
sed&#8201;'s/^server/#server/'&#8201;< ntp.cpy &#8201;>&#8201;ntp.conf
cat <<EOF>> /etc/ntp.conf
#
# EPFL
server 128.178.1.1
EOF
service ntp restart
###
### Autofs
echo '/net -hosts' >> /etc/auto.master
service autofs restart
ln -s ../init.d/autofs /etc/rc2.d/S99autofs
###
### Restore rc.local
mv -f /etc/rc.local.orig /etc/rc.local
rm -f /root/postInstall.sh
###
### Log
echo `date` >> /root/post-install.log
echo 'End log' >> /root/post-install.log
###
### End
exit 0
EOFPOST
chmod a+x /root/postInstall.sh
%end

exemple de fichier Kickstart


Article du FI-EPFL 2012 sous licence CC BY-SA 3.0 / B. Barras



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.