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