FLASH INFORMATIQUE FI



Installer Linux avec GRUB


Comment réinstaller Linux depuis Linux.



How to reinstall Linux from Linux.


Benjamin BARRAS


Introduction

Lorsque vous avez un système qui tourne déjà sous Linux, il arrive que l’on souhaite réinstaller son système d’exploitation avec la même version ou distribution, mais pas obligatoirement. Je vous propose une solution simple et élégante afin de réaliser cela. L’idée est d’utiliser GRUB pour lancer votre nouvel installeur. Il n’est pas nécessaire d’avoir la même version de Linux, il suffit simplement de choisir la distribution que l’on désire installer.

Préparation

Evidemment pour faire cela de manière simple, on utilisera juste le strict minimum requis. Afin de démarrer notre système, la première chose à faire est d’aller récupérer deux fichiers dont on aura besoin, à savoir notre noyau linux et une image d’un système minimal qui contient un système de fichiers et toutes les instructions nécessaires à son installation. Pour cela, il va falloir trouver notre noyau et notre image pour notre système Linux préféré, et qui reste la principale difficulté pour certaines distributions.

Fedora

Pour Fedora, on trouvera ces deux éléments dans le dossier isolinux de la distribution. Exemple pour la distribution Fedora 19 (64 bits), en fouillant dans le dossier isolinux on trouvera les deux fichiers qui nous intéresse, à savoir :

1. vmlinuz
2. initrd.img

Redhat

Idem pour Redhat, on trouvera nos deux mêmes fichiers dans le dossier isolinux. On peut également, comme pour Fedora, utiliser une image ISO. Par exemple :

mount -o loop rhel-client-6.4-x86_64-boot.iso /mnt/iso

ls -al /mnt/iso/
dr-xr-xr-x   4 root root 2048 Jan 30  2013 .
drwxr-xr-x. 18 root root 4096 Sep  2 10:04 ..
dr-xr-xr-x   3 root root 2048 Jan 30  2013 images
dr-xr-xr-x   2 root root 2048 Jan 30  2013 isolinux
-r--r--r--   1 root root  438 Jan 30  2013 TRANS.TBL

On pourra se servir dans le dossier isolinux ou dans le dossier images/pxeboot qui contiennent les deux fichiers dont nous aurons besoin.

Ubuntu

Pour Ubuntu, c’est un peu plus compliqué. Vous devez obligatoirement trouvez ces deux fichiers, qui n’ont pas le même nom que ci-dessus, dans un dossier qui fait référence au réseau (net...). Dans le cas contraire, l’installeur ne trouvera jamais ses petits et vous serez bloqué. Par exemple, pour la version 13.10 (64 bits) [1], on trouvera notre bonheur dans le dossier main/installer-amd64/current/images/netboot/ubuntu-installer/amd64 et les deux fichiers dont nous aurons besoin seront :

1. linux
2. initrd.gz

Vous pouvez également utiliser l’image ISO qui se nomme mini.iso et qui se trouve dans le dossier main/installer-amd64/current/images/netboot :

mount -o loop /tmp/mini.iso /mnt/iso

ls -al /mnt/iso
total 25188
dr-xr-xr-x   4 root root     4096 Oct 15 21:43 .
drwxr-xr-x. 18 root root     4096 Sep  2 10:04 ..
...
-r--r--r--   2 root root 19973188 Oct 15 21:43 initrd.gz
...
-r--r--r--   2 root root  5601944 Oct  9 20:59 linux
...

où nous retrouvons nos deux fichiers cités précédemment.

Passons à la pratique

Nous devons malheureusement distinguer deux cas de figures. Soit l’on a GRUB version 1 ou GRUB version 2, mais dans les deux cas le résultat sera le même. Commençons par ce qui est commun, il nous faut poser ces deux fichiers dans un répertoire. Choisissons par exemple le répertoire /boot, et utilisons les commandes suivantes :

# Fedora 19 (64 bits)
wget -P /boot http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/19/Fedora/x86_64/os/isolinux/vmlinuz
wget -P /boot http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/19/Fedora/x86_64/os/isolinux/initrd.img

GRUB version 1

Ensuite nous devons ajouter cette information dans le menu de GRUB, pour faire cela on utilisera la commande suivante :

cat << GRUB >> /boot/grub/grub.conf
title EPFL_Install
       root (hd0,0)
       kernel /boot/vmlinuz
       initrd /boot/initrd.img
GRUB

qui ajouterons 4 lignes dans le fichier /boot/grub/grub.conf. Ici, le /boot se trouve sur le premier disque (hd0) et sur la première partition qui dans la syntaxe de GRUB version 1 s’écrit (hd0,0).

GRUB version 2

Pour la seconde version de GRUB, on peut utiliser ceci :

cat << GRUB >> /etc/grub.d/40_custom
menuentry 'EPFL_Install' {
   set root='hd0,msdos3'
   linux    /boot/vmlinuz
   initrd    /boot/initrd.img
}
GRUB

qui ajoutera cinq lignes dans le fichier /etc/grub.d/40_custom. Par contre ici, le /boot se trouve sur le premier disque (hd0) mais sur la troisième partition, qui dans la syntaxe de GRUB version 2 se décrit hd0,msdos3. Il faut encore exécuter la commande suivante :

# Fedora
grub2-mkconfig -o /boot/grub2/grub.cfg

# Ubuntu
grub-mkconfig -o /boot/grub2/grub.cfg

afin de mettre à jour le fichier de configuration de GRUB.

Kickstart

L’idéal dans ce type d’installation est d’utiliser Kickstart [2] afin d’automatiser tout le processus d’installation. Il ne faudra pas oublier de rajouter les quelques lignes ci-dessus dans le menu de GRUB, ce qui pourra se faire de la manière suivante dans la partie post-installation de Kickstart :

%post
#rc.local
cat <<EOF > /etc/rc.d/rc.local
#!/usr/bin/sh
#
# GRUB
wget -P /boot http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/19/Fedora/x86_64/os/isolinux/vmlinuz
wget -P /boot http://mirror.switch.ch/ftp/mirror/fedora/linux/releases/19/Fedora/x86_64/os/isolinux/initrd.img
chmod 755 /boot/vmlinuz
chmod 600 /boot/initrd.img
cat << GRUB >> /etc/grub.d/40_custom
menuentry 'EPFL_Install' {
   set root='hd0,msdos3'
   linux    /boot/vmlinuz
   initrd    /boot/initrd.img
}
GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg

# On désactive le service puisqu'il vient d'être exécuté
/bin/chmod -x /etc/rc.d/rc.local
exit 0
EOF

# On active le service
/bin/chmod +x /etc/rc.d/rc.local
%end

Conclusion

Il ne reste plus qu’à redémarrer notre machine et de choisir notre menu d’installation. Il faut savoir que c’est une technique très utilisée dans l’installation, ou réinstallation, des noeuds dans une ferme de calcul. Si vous êtes méthodique et que vous notez chacune des commandes qui modifient votre système dans un fichier kickstart, vous n’aurez alors plus besoin de faire des sauvegardes de votre système. Il suffira simplement de réinstaller votre machine à l’aide de votre fichier kickstart maintenu à jour, et cela ne vous prendra que quelques minutes. C’est une technique que nous avons largement utilisée pour la (re)mise en route de serveur.

[1] Ubuntu 13.10

[2] Automatiser votre installation Linux avec Kickstart, FI4/12 & Personnaliser vos images ISO Linux, FI8/10



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.