LiveUSB Debian

Transcription

LiveUSB Debian
LiveUSB Debian
1
LiveUSB Debian
Geoffroy Farinet, Yilmaz Ilhan, Meloni Hugo, David Rard
29 mars 2009
Table des matières
1 Introduction
2
I
4
Étude de l’existant
2 Ubuntu Live USB
5
2.1
Fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3 Debian live
3.1
3.2
7
Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.1.1
8
Contributeurs . . . . . . . . . . . . . . . . . . . . . . .
Live-helper
3.2.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Présentation . . . . . . . . . . . . . . . . . . . . . . . .
8
1
4 solution choisie
II
9
Réalisation
10
5 Cahier des charges
11
6 Partitionnement
12
7 Création de la Live personnalisée
14
7.1
Installation et personnalisation du grub . . . . . . . . . . . . . 14
7.2
Configuration de la live . . . . . . . . . . . . . . . . . . . . . . 16
7.3
7.2.1
Fichier Binary . . . . . . . . . . . . . . . . . . . . . . . 17
7.2.2
Fichier bootstrap . . . . . . . . . . . . . . . . . . . . . 18
7.2.3
Fichier chroot . . . . . . . . . . . . . . . . . . . . . . . 18
Création de l’image et installation du système . . . . . . . . . 19
7.3.1
Création du système . . . . . . . . . . . . . . . . . . . 19
7.3.2
Installation du système . . . . . . . . . . . . . . . . . . 19
8 Difficultés
8.1
21
Difficultés rencontrées . . . . . . . . . . . . . . . . . . . . . . 21
2
8.2
Améliorations possibles . . . . . . . . . . . . . . . . . . . . . . 22
9 Conclusion
24
3
Chapitre 1
Introduction
Le concept de liveCD a été utilisé en premier par Slackware dès 1995, puis
fut développé de 1999 à 2002 par DemoLinux. Le liveCD permet d’avoir un
système d’exploitation complet (environnement graphique, navigateur web,
suite bureautique complète, outils de programmation, logiciels de communication, etc) sur un petit support, léger et amovible, sans rien modifier de
la machine où on l’exécute. Il ne touche en effet pas à la configuration de
la machine hôte, ni généralement au disque (sauf dans le cas particulier de
liveCD conservant une partie résidentielle). De plus, il permet d’accéder au
disque dur d’une machine qui ne veut plus amorcer un système d’exploitation
installé localement.
Certaines distributions sont même spécialisées dans le domaine de la récupération (ex : SystemRescueCd). Enfin, un liveCD ne laisse pas de trace
sur le disque dur, bien que l’utilisateur puisse avoir accès aux données du
disque dur. Le système retourne dans son état précédent lorsque l’ordinateur
est redémarré.
L’apparition de la norme USB 2.0 et l’augmentation de la capacité des
4
clés USB a permis d’étendre le concept de liveCD à ces-dernières. Une liveUSB a les mêmes avantages qu’un liveCD mais permet en plus de modifier
les données qu’elle contient, on a donc la possibilité de l’utiliser à la fois
comme une clé classique afin de stocker des données et comme un système
d’exploitation sur lequel une machine peut démarrer.
Le but de notre projet était d’exploiter cet avantage afin de créer une
liveUSB dont le système serait modifiable par l’utilisateur. Par exemple, si
l’utilisateur installe ou désinstalle des paquets, ces modifications doivent être
effectives lors du prochain démarrage du système. Cette clé est destinée à
être utilisée par les étudiants de la licence pro ASRALL.
5
Première partie
Étude de l’existant
6
Chapitre 2
Ubuntu Live USB
2.1
–
–
–
–
2.2
Fonctionnalités
Installation d’ un gestionnaire de démarrage sur le périphérique usb
Mode persistant
Installation
Possibilité de réserver un espace pour stocker des documents
Concepts
Le liveUSB d’Ubuntu s’appuie sur 3 grandes étapes :
1. préparation
2. partitionnement
3. formatage, copie, amorce
Lors de la phase de préparation, il s’agit de récupérer une image iso
du système d’exploitation, ainsi que quelques utilitaires qui permettront sa
7
manipulation ultérieure.
La seconde étape consiste a partitionner la clé en différentes partitions.
En effet, il faut une partition différente qui puisse être accessible en écriture
(casper-rw) sur laquelle pourront être placées les données à stocker.
Dans un troisième temps, il faut monter l’image sur la partition que l’on
aura rendue bootable au préalable. Et on placera les fichiers contenus dans
l’iso récupérée précédemment sur la première partition. Si l’on lance le mode
persistent, il utilisera la partition 2 (casper-rw).
8
Chapitre 3
Debian live
3.1
Présentation
Debian live est un projet qui a été mis en place pour palier à un manque
dans le monde de Debian courant 2008-2009. Il n’a été disponible qu’avec la
dernière distribution de Debian, Lenny. La date officielle de sortie concordait
avec notre projet, étant donné que la version Lenny est sortie le 14 Février
2009.
En effet jusqu’à présent, il n’existait aucun live CD ou USB pour Debian.
Ceux qui étaient disponibles, n’étaient soit pas officiels, soit ils s’appuyaient
sur les différentes versions (stable, testing, unstable), ou encore ils ne supportaient que le processeur i386.
9
3.1.1
Contributeurs
Voici la liste non exaustive des principaux contributeurs de ce projet : Ben
Armstrong, Brendan Sleight, Chris Lamb, Daniel Baumann, Franklin Piat,
Jonas Stein, Kai Hendry, Marco Amadori, Mathieu Geli, Matthias Kirschner,
Richard Nelson, Trent W. Buck.
3.2
3.2.1
Live-helper
Présentation
Live-helper est un sous projet de Debian live. Cet utilitaire permet de
construire des CD, DVD, clé USB live.
Live-helper est extrêmement flexible, et offre la possibilité pour ceux qui
le souhaitent de créer leur propre système, entièrement adapté à leurs besoins,
incluant le support d’une liste de packages personnalisée, les paramètres du
kernel, l’encryption, et des commandes additionnelles pour configurer leur
système live.
10
Chapitre 4
solution choisie
Le choix de la solution semble évident, étant donné que la distribution
dont doivent pouvoir disposer les étudiants et enseignants de la Licence ASRALL est Debian.
11
Deuxième partie
Réalisation
12
Chapitre 5
Cahier des charges
Notre mission était de concevoir une LiveUSB personnalisée en fonction
des outils utilisés lors de la licence professionnelle ASRALL. Cette clé devait
par ailleurs permettre une installation possible du système et une utilisation
simple. La clé usb utilisée pour notre projet est de 4Go.
Fonctionnalités
1. liveUSB personnalisée en fonction des besoins de la licence pro Asrall
2. possibilité d’installation du système à partir de la clé
3. persistance du système, permet d’avoir tout le système sauvegardé.
Ainsi les configurations des différents outils présents, ou la création de
fichiers au sein du système ne sont pas perdus lors du démontage de
ce-dernier.
4. avoir une partition qui est lisible aussi bien sur Windows que sur Unix
afin de stocker des données personnelles.
13
Chapitre 6
Partitionnement
Le partitionnement de la clé USB est un élément important, il fut réalisé
à l’aide des outils suivants : fdisk et gparted. Notre système contient trois
partitions dûes aux différentes améliorations apportées.
La première partition est dédiée pour le partage des données sur différents systèmes. Ce choix est obligatoire si nous voulons que notre clé puisse
être reconnue sous Windows. En effet, certaines versions de Windows reconnaîssent uniquement la première partition d’un disque flash. La taille de cette
partition est la place restante sur la clé USB après que les deux partitions
systèmes aient été faites. Cette partition est évidemment en fat32.
La deuxième partition fut utilisée pour la persistance du système. Nous
avons décidé de garder tout le système persistant plutôt que le /home uniquement puisque nous ne sommes pas limités en terme de capacité. Cette
partition fait 512Mo est en ext3 et à le label live-rw. Le label permet de définir quelle partie du système nous voulons rendre persistante. Par exemple, si
nous voulions rendre persistant uniquement le /home on aurait mis comme
label home-rw.
14
La troisième partition contient le système "Live", il est en ext3 et n’as pas
de label. La taille de la partition est à proportionner en fonction des outils
que nous intégrons dans la Live. Dans notre cas, cette partition fait environ
900Mo.
15
Chapitre 7
Création de la Live personnalisée
7.1
Installation et personnalisation du grub
Il faut maintenant installer le gestionnaire de démarrage, GRUB. Pour
cela la clé doit être montée :
mount /dev/sdb2 /media/sdb2/
cd /media/sdb2
On a choisi sdb1 car c’est la partition de la clé sur laquelle on souhaite
installer le grub.
Il faut ensuite y placer tous les fichiers nécessaires au grub, ceux-ci sont
copiés depuis n’importe quel système linux :
mkdir -p boot/grub
cp /boot/grub/* boot/grub
16
Finalement on créé le fichier device.map et on précise la racine du grub :
echo ’(hd1) /dev/sdb’ > boot/grub/device.map
grub-install --root-directory=/media/sdb2 --no-floppy ’(hd1)’
Il est maintenant possible de modifier certains paramètres du grub en éditant le fichier boot/grub/menu.lst. On peut par exemple modifier la couleur
de l’interface de grub ou le contenu des lignes affichées dans le menu.
vi boot/grub/menu.lst
Voici par exemple le fichier menu.lst que nous utilisons :
# menu.lst - See: grub(8), info grub, update-grub(8)
default
saved
timeout 5
color cyan/blue white/blue
#
title Debian live
kernel /live/vmlinuz1 boot=live bootkbd=fr locale="fr_FR" hostname=debian
initrd /live/initrd1.img
boot
title Debian live nopersistent
kernel /live/vmlinuz1 boot=live username=user hostname=debian nopersistent
initrd /live/initrd1.img
boot
title Debian live-failsafe
17
persi
kernel /live/vmlinuz1 boot=live username=user hostname=debian nopersistent noapi
initrd /live/initrd1.img
boot
title Debian Install text
kernel /install/vmlinuz
append initrd=/install/initrd.gz vga=normal quiet
--
title Debian Install GUI
kernel /install/gtk/vmlinuz
append initrd=/install/gtk/initrd.gz video=vesa:ywrap,mtrr vga=788 quiet
title Memtest
kernel /live/memtest
boot
7.2
Configuration de la live
La création de la Live fut faite au moyen de l’outil LiveHelper. Au préalable il nous faut créer un répertoire qui contiendra notre image personnalisée
ainsi que tout les fichiers intermédiaires.
mkdir debian_perso
cd debian_perso
Il nous faut créer les fichiers de configuration du système pour cela nous
utilisons la commande suivante :
18
--
lh_config
Cette commande créé deux répertoires à savoir config et scripts. Nous
nous intéressons évidemment au dossier config qui contient les différentes
informations du système qui va être créé tels que le bureau, les paquets
supplémentaires, ...
cd config
Les fichiers qui vont nous intéresser dans ce dossier sont
– binary
– bootstrap
– chroot
7.2.1
Fichier Binary
Nous allons modifier différentes lignes dans ce fichier afin de spécifier la
distribution utilisée pour notre live, localiser le système en français aussi bien
lors du live que lors de l’installation. Nous définirons également un hostname
qui nous convient davantage.
LH_DISTRIBUTION="lenny"
LH_BOOTAPPEND_LIVE="locale=fr_FR.UTF-8"
LH_BOOTAPPEND_INSTALL="locale=fr_FR.UTF-8 keyb=fr"
LH_HOSTNAME="live_asrall"
19
7.2.2
Fichier bootstrap
Dans le fichier bootstrap nous allons uniquement modifier les directives
concernant les miroirs d’où sont récupérés les différents fichiers.
LH_MIRROR_BOOTSTRAP="http://ftp.fr.debian.org/debian/"
LH_MIRROR_CHROOT="http://ftp.fr.debian.org/debian/"
7.2.3
Fichier chroot
Nous allons modifier uniquement la directive qui détermine les paquets
installés dans le système. Notre système sera sur gnome et asrallpaquet. Les
différents types de listes pré-existantes sont consultables dans /usr/share/livehelper/lists.
LH_PACKAGES_LISTS="gnome asrallpaquet"
asrallpaquet est un simple fichier contenant la liste des paquets à installer.
Il faut enregistrer le fichier dans le répertoire chroot_local_packagelists.
Source du fichier asrallpaquet :
iceweasel
...
apache2
mysql-server5
bind9
irb
...
20
7.3
Création de l’image et installation du système
Nous sommes prêts pour la création de notre image que nous effectuons
avec la commande suivante.
7.3.1
Création du système
lh_build
Un fichier binary.iso est créer dans /debian_perso il contient notre système personnalisé. Pour vérifier que les paquets que nous avons spécifiés
sont bien installés il nous suffit de regarder le fichier binary-package-list qui
contient la liste des paquets installés dans l’image.
7.3.2
Installation du système
L’installation se passe sur la troisième partition, voici les différentes étapes
mkdir /tmp/iso
#on monte l’iso dans notre fichier temporaire
mount -o loop debian.iso /tmp/iso
#on copie tout les fichiers système sur la troisième partition
cp -a /tmp/iso/* /media/sdb3/
cd /media/sdb3
#on supprime les fichiers liée au boot isolinux
rm -Rf isolinux
21
L’installation du système est enfin terminée. On peut maintenant booter
sur notre LiveUSB. Il faut cependant configurer le BIOS en changeant l’ordre
de boot pour qu’il boot d’abord sur la clé USB plutôt que sur le disque
dur. Notre système étant persistant, lors du premier chargement du mode
persistant la structure des fichiers va être créée automatiquement.
22
Chapitre 8
Difficultés
Dans la globalité du projet nous n’avons pas rencontré de grandes difficultés. Nous avons également pensé à des améliorations possibles.
8.1
Difficultés rencontrées
Voici les différents problèmes que nous avons rencontrés :
1. Au démarrage, le clavier était en "qwerty".
Nous avons résolu ce problème en incrustant "setxkbmap fr" dans les
différents .bashrc.
2. La méthode initiale pour le démarrage de grub ne fonctionnait pas tout
le temps.
La solution consiste en l’utilisation de grub et non de grub-install
Ancienne solution :
Voir installation et personnalisation de grub
Nouvelle solution :
23
# Commande qui renvoie les disques bootables.
find /boot/grub/stage1
hd0
hd1,2
# On identifie la clé USB (1,2). La commande root de GRUB indique le disque/l
root (hd1,2)
# La commande setup permet d’installer grub dans le disque sélectionné.
setup(hd1,2)
quit
3. Les partitions NTFS(Windows) était en read-only.
Pour pouvoir écrire sur la partition NTFS, il a fallu installer le paquet
"ntfs-3g" :
apt-get install ntfs-3g
# On cherche la partition ntfs
sudo fdisk -l | grep NTFS
# On monte la partition sdX dans le repertoire que nous voulons
mkdir /windows
# Ici, nous allons le monter sur /windows
mount /dev/sdX /windows -t ntfs-3g
8.2
Améliorations possibles
1. login nécessaire lors du lancement du Live. Pour cela il faut modifier le
fichier binary lors de la configuation de l’image système. Cette amélioration permet d’avoir un sytème privé sur la clé usb.
2. utiliser la première partition comme répertoire /home/documents du
Live. Cela peut être réalisé au travers d’un script qui monterait la
première partition dans le répertoire /home/documents. L’avantage est
d’avoir un home de 2Go.
3. créer un utilisateur chrooter. Ainsi, nous pourrions aussi utiliser ce Live
24
comme clé de démonstration et d’initiation au système Unix sans pour
autant mettre en danger nos données systèmes.
25
Chapitre 9
Conclusion
Notre clé est finalement fonctionnelle, cependant il nous est impossible
d’écrire sur une partition sur laquelle windows est installée la gestion des
droits étant différentes sur les deux systèmes. De plus, lors de l’extinction du
système, ce-dernier affiche un message d’erreur nous demandant de retirer la
clé USB. Ce message est faux, il ne faut surtout pas retirer la clé tant que la
machine est allumé. Nous n’avons pas de solution à ce problème mais il est
repertorié par les contributeurs du projet Debian-live.
Le système liveUSB accorde une grande souplesse à l’utilisateur et est
relativement simple à mettre en place. Il est, de plus, bien moins contraignant
que le liveCD puisque la clé est réutilisable. Cependant, la détection des clés
USB par les machines lors du boot n’est pas sytématique et par défaut, les
systèmes ne démarrent pas sur les lecteurs amovibles. On peut penser que
cela ne sera bientôt plus le cas grâce aux possibilités offertes par les liveUSB.
26