Installer Ubuntu Jaunty (9.04) minimale sur une clé USB

Auteur : Olivier BOYER - oboyer () ajoute ! org

Mots clés

clé usb, usb stick, lecture seule, read-only, Linux, Ubuntu, Jaunty, minimale

Introduction

Ce document présente comment installer un système GNU/Linux Ubuntu sur une clé USB. Une clé USB est un périphérique de stockage basé sur une mémoire flash. Or, les mémoires flash ont une capacité limitée d'écritures. Un problème se pose donc, car un système d'exploitation écrit très régulièrement sur son stockage principal.

L'installation décrite ici s'effectue sur un système de fichiers racine (slash) en lecture seule (read-only). Ainsi, aucune écriture ne sera effectuée sur la clé USB par le système en cours de fonctionnement. Les seules écritures seront faites à l'installation, ou à la mise à jour du système.

Présentation de la maquette

  • Un ordinateur compatible PC, architecture i386, doté d'un port USB (version 2 recommandée).
  • Une clé USB (au moins 2Go).

Note

Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.

Pré-requis

  • Un BIOS de carte mère sur la machine capable de démarrer sur un périphérique USB.
  • Une clé USB (au moins 2Go).
  • Un lecteur CD pour l'installation.
  • Un cdrom d'installation de Linux Ubunty Jaunty 9.04.
  • Une certaine connaissance de l'installation d'un système Linux Ubuntu ou Debian.

Installation du système Ubuntu sur une clé USB

Introduction

Le disque dur interne de la machine est retiré. Le seul support d'écriture non volatil est la clé USB branchée. Ce périphérique est vu par le système Linux comme le premier disque dur SCSI, soit /dev/sda.

Installation du système

L'installation du système se réalise de la même manière que sur un disque dur SCSI. Cette section se concentre donc uniquement sur les éléments importants. Pour une procédure détaillée de l'installation d'un système Linux Ubuntu, se reporter au manuel d'installation.

Démarrer l'installation

Démarrez la machine, insérez le CDROM Linux Ubuntu Alternate installation CD dans le lecteur. Dans le BIOS de l'ordinateur, choisissez de “booter” sur le CDROM. L'installation du système commence.

Menu : Language

Choisissez :

	Français

Appuyez sur la touche <Echap> pour revenir au menu principal.

Menu : Modes

Appuyer sur la touche <F4> pour choisir le mode d'installation. Choisissez :

	Installation en lignes de commande

Menu : Partitionner les disques

  • Choisissez :
	Manuel

puis,

	SCSI1 maître (sda) - ...
  • Faut-il créer une nouvelle table des partitions sur ce disque ?
	Oui
  • Sélectionner la partition :
	pri/log  ....		Espace libre
  • Créer une nouvelle partition :
	Prendre tout l'espace disponible
  • Type de la nouvelle partition :
	Primaire
  • Caractéristiques de la partition :
	Utiliser comme		: système de fichiers ext3
	Point de montage	: /
	Options de montage	: noatime
	Etiquette		: aucune
	Blocs réservés		: 5%
	Utilisation habituelle	: standard
	Indicateur d'amorçage	: présent
	Fin du paramétrage de cette partition
	Terminer le partitionnement et appliquer les changements
  • Faut-il appliquer les changements sur les disques ?
	Oui
  • Souhaitez-vous revenir au menu de partitionnment ?
	Non

Activer le compte root

Lors de l'installation vous avez créé un utilisateur qui a les droits d'administration sur le système via la commande sudo(1). Pour plus de facilité d'administration, cette procédure réactive le compte root du système, qui est verrouillé par défaut avec Ubuntu.

Ouvrez une session console en tant qu'utilisateur, puis exécutez les commandes suivantes :

$ sudo passwd root
[sudo] password for <votre identité>:
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

Le compte root est maintenant réactivé. Vous pouvez fermer cette session, et vous logez en tant que root. Toutes les commandes suivantes seront exécutées en tant qu'utilisateur root.

Mise à jour du système

Le système Linux Ubuntu est maintenant installé sur la clé USB. Vous avez fait votre premier redémarrage, vérifié que le matériel est bien détecté, que la connexion au réseau local est fonctionnelle. Il faut avant tout autre configuration, mettre à jour le système, pour installer les derniers correctifs publiés par les mainteneurs de la distribution.

Pour mettre à jour le système, exécutez les commandes suivantes :

# apt-get update
# apt-get upgrade
# apt-get autoclean

Configuration du système avec une racine en lecture seule

Le système est installé, et mis à jour. Il faut maintenant le transformer en un système avec une “racine en lecture seule”.

Sur un système Ubuntu (idem pour Debian), il suffit de modifier l'option de montage de la racine dans le fichier /etc/fstab. Si l'option ro est positionnée, la racine n'est pas montée en écriture pendant le démarrage du système. Cette seule modification est suffisante.

Cependant, un système Unix doit écrire pour fonctionner correctement. Les sections suivantes décrivent les configurations mises en place pour permettre au système d'écrire, sans accéder en écriture à la clé usb.

/etc/fstab

Faites une copie du fichier initial :

# cd /etc
# cp fstab fstab.orig

Puis modifiez, comme suit, le fichier /etc/fstab (les autres périphériques ne sont pas listés ici) :

# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options>                     <dump> <pass>
proc            /proc         proc   defaults                      0      0
/dev/sda1       /             ext3   ro,noatime,errors=remount-ro  1      1

/etc/default/rcS

Le fichier /etc/default/rcS configure le comportement des scripts de démarrage présents dans le répertoire /etc/rcS.d. Ces scripts sont exécutés en premier lors de l'initialisation du système.

La configuration ci-dessous permet la construction des répertoires /var/run et /var/lock dans des systèmes de fichiers en mémoire vive. Ainsi, le système pourra écrire ses fichiers temporaires, sans accéder en écriture sur la clé usb.

Vérifiez que le fichier /etc/default/rcS contient les valeurs des variables suivantes :

RAMRUN=yes
RAMLOCK=yes

/etc/mtab

Le fichier /etc/mtab liste les périphériques qui sont actuellement montés. A chaque montage ou démontage d'un système de fichiers, le contenu du fichier /etc/mtab change. Dans un système avec une racine en lecture seule, ce comportement est impossible.

Le fichier /proc/mounts contient quasiment les mêmes informations que le fichier /etc/mtab (il est plus précis). Comme le fichier /proc/mounts est situé dans un système de fichiers en mémoire vive, sa mise à jour ne pose pas de problème lors de l'utilisation d'une racine en lecture seule.

Supprimez le fichier /etc/mtab, et créez un lien symbolique vers /proc/mounts. Attention, le lien symbolique doit être absolu.

# cd /etc
# rm -f /etc/mtab
# ln -s /proc/mounts mtab

/etc/init.d/mountprereadonly.sh

Le script /etc/init.d/mountprereadonly.sh est ajouté à ceux déjà présents dans le système Linux Debian. Ce script se charge de créer les systèmes de fichiers en mémoire vive, de les monter, et de créer à l'intérieur les répertoires et fichiers nécessaires au fonctionnement du système.

Créez comme suit le fichier /etc/init.d/mountprereadonly.sh.

Fixer les permissions

Exécutez les commandes ci-dessous :

# chown root:root /etc/init.d/mountprereadonly.sh
# chmod 755 /etc/init.d/mountprereadonly.sh

Insérer le fichier dans la procédure de démarrage

Le script doit être exécuté au plus tôt dans la procédure de démarrage. Exécutez la commande suivante :

# update-rc.d mountprereadonly.sh start 02 S .
Adding system startup for /etc/init.d/mountprereadonly.sh ...
   /etc/rcS.d/S02mountprereadonly.sh -> ../init.d/mountprereadonly.sh

/tmp

Le répertoire /tmp doit être accessible en écriture. De nombreux processus écrivent des informations temporaires à l'intérieur. Pour utiliser /tmp en écriture sur un système en lecture seule, il existe deux possibilités :

  • Construire /tmp en tmpfs (Temporary File System). Le système de fichiers est créé, de manière transparente, à chaque démarrage de la machine, en mémoire vive. Ces systèmes de fichiers “temporaires” sont très pratiques, mais consomment de la mémoire vive.
  • Créer un lien symbolique de /tmp, vers /var/tmp, qui lui, sera en écriture.

Cette dernière solution est retenue dans ce document (/var/tmp sera un système de fichiers en mémoire vive).

Créez de /tmp vers /var/tmp comme suit :

# cd /
# rm -Rf /tmp
# ln -s ./var/tmp tmp

/etc/resolv.conf

Si la configuration réseau est obtenue dynamiquement via le protocole DHCP, le contenu du fichier /etc/resolv.conf est modifié à chaque démarrage du système. Ce comportement est impossible lors de l'utilisation d'une racine en lecture seule. Pour résoudre ce problème, installez le paquet resolvconf.

Installer le paquet resolvconf

Procédez comme suit :

# apt-get -y install resolvconf

Modifier la configuration resolvconf

Par défaut, resolvconf écrit le fichier resolv.conf reçu dans le répertoire /etc/resolvconf/run. Or ce répertoire, une fois la racine en lecture seule, est dans le système de fichiers en lecture seule. Pour remédier à ce problème, exécutez les commandes suivantes :

# rm -Rf /etc/resolvconf/run
# cd /etc/resolvconf
# ln -s /var/run/resolvconf run

Fin de configuration

/var/log

Les fichiers d'enregistrements d'activité du système sont situés dans le répertoire /var/log. Quand la configuration du système avec une racine en lecture seule sera terminée, ce répertoire sera un point de montage pour la partition en mémoire /var/log. Donc, son contenu actuel ne sera plus accessible. Pour gagner de l'espace disque, vous pouvez purger le contenu de tous les fichiers présents, comme suit :

# cd /var/log
# for i in $(find . -type f); do > $i ; done

Redémarrer le système

Redémarrez le système pour appliquer les modifications.

# shutdown -r now

Vérifications

Après le démarrage du système avec une racine en lecture seule, exécutez la commande suivante pour vérifier que le système est correctement configuré :

# mount 
rootfs on / type rootfs (ro)
none on /sys type sysfs (rw,nosuid,nodev,noexec)
none on /proc type proc (rw,nosuid,nodev,noexec)
udev on /dev type tmpfs (rw,mode=755)
/dev/sda1 on / type ext3 (ro,noatime,errors=remount-ro,data=ordered)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=755)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
varrun on /var/run type tmpfs (rw,nosuid,mode=755)
varlock on /var/lock type tmpfs (rw,nosuid,nodev,noexec)
tmpfs on /media type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/lib/acpi-support type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/lib/dhcp3 type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/lib/gdm type tmpfs (rw,nodev,noatime,mode=770)
tmpfs on /var/lib/urandom type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/lib/xkb type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/log type tmpfs (rw,nodev,noatime,mode=755)
tmpfs on /var/spool/cups type tmpfs (rw,nodev,noatime,mode=710)
tmpfs on /var/tmp type tmpfs (rw,nodev,noatime)
tmpfs on /lib/modules/2.6.28-11-generic/volatile type tmpfs (rw,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,gid=5,mode=620)
securityfs on /sys/kernel/security type securityfs (rw)

Vous constatez que :

  • la racine du système (/) est montée en lecture seule (ro),
  • les partitions /etc/network/run, /media, /var/lib/dhcp3, /var/lib/urandom, /var/lock, /var/log, /var/run, /var/tmp, sont montées dans un système de fichiers en mémoire (tmpfs).

Le système est maintenant configuré en opérationnel.

Entretien du système

Les journaux d'activités

Les journaux d'activité sont consignés dans le répertoire /var/log. Comme /var/log est sur un système de fichiers en mémoire vive, les logs sont automatiquement effacés à l'arrêt de la machine. Pensez à les sauvegarder régulièrement, ou à configurer syslogd(8) pour qu'il enregistre son activité sur une machine distante.

Modifier un fichier

Si vous devez modifier la configuration d'un fichier présent à la racine du système, exécutez les trois étapes suivantes :

Monter la racine en lecture/écriture

# mount -o remount,rw /

Modifier le(s) fichier(s) souhaité(s)

Remonter la racine du système en lecture seule

# sync; sync; sync
# mount -o remount,ro /

Ajouter un paquet

Pour installer (ou supprimer) un paquet exécutez les étapes suivantes :

Monter la racine en lecture/écriture

# cd /
# mount -o remount,rw /

Installer le(s) paquet(s)

Effacer les fichiers temporaires

# apt-get autoclean
# apt-get clean

Remonter la racine du système en lecture seule

# sync; sync; sync
# mount -o remount,ro /

Liens

 
doc/linux/usb_mini_ubuntu904.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page