OldGentooWiki:Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 2

De Gentoo-Quebec.

Go-previous.png Installation


Gentoo-quebec+Funtoo-quebec.png

Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 2


Sommaire

Introduction

A la suite des opérations expliquées dans l'article Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 1, l'instance de la machine virtuelle a été démarrée sous System Rescue CD et a vu son disque dur partitionné ainsi que les différents systèmes de fichiers créés. La présente partie va illustrer la mise en place des fondations du système : la mise en place du stage 3 et le chrootage.

Montage de la racine de la future installation Funtoo et activation de l'espace d'échange

Montage de la racine de la future installation Funtoo

System Rescue CD offre plusieurs répertoires destinés à servir de points de montage sous le répertoire /mnt :

Points de montages sous /mnt

Bien que l'utilisation de l'un ou de l'autre ces répertoires soit totalement indifférente, un point de montage additionnel /mnt/funtoo sera créé :

Gnome-dev-computer.png
# mkdir /mnt/funtoo
# ls -l /mnt
Création du point de montage additionnel /mnt/funtoo

Il ne reste plus qu'à monter la partition qui servira de racine :

Gnome-dev-computer.png
# mount /dev/sda3 /mnt/funtoo
Montage de la racine de la future installation Funtoo

et à vérifier que tout soit correct :

Gnome-dev-computer.png
# mount
Que va dire mount ?
Que /dev/sda3 est montée en ext4 !

/dev/sda3 apparaît comme montée sous /mnt/funtoo et est reconnue comme étant dotée d'un système de fichiers ext4 ce qui est conforme à ce qui a été fait dans la première partie de ce tutoriel (formatage de /dev/sda3 avec mkfs.ext4). C'est tout bon !

Activation de l'espace d'échange

Il est à présent temps d'activer l'espace fichier d'échange ! Pour ce faire la commande swapon est utilisée :

Gnome-dev-computer.png
# swapon /dev/sda2

Il est aisé de constater avec la commande free que l'espace d'échange a bien été ajouté :

Avant et après l'activation de l'espace d'échange (remarquer les lignes Swap)

Téléchargement et mise en place des fondations du système

Image de stage 3

Le moment de télécharger l'archive dite de stage 3 et de la déployer sur la partition qui servira de racine est venu ! Un « stage 3 » est une archive contenant tous les fichiers formant les fondations d'un système Gentoo/Funtoo GNU/Linux à partir desquelles tout le reste du système sera déployé. Ce stage 3 contient entre autres un compilateur C/C++ fonctionnel, les utilitaires de base Gentoo/Funtoo, un moteur d'exécution Python nécessaire à Portage, etc. « Stage 3 » est nommé ainsi en référence à son processus de construction qui par deux autres étapes intermédiaires nommées « stage 1 » et « stage 2 » (voir l'article consacré à Metro).

Info 64.png
Information !
  • Sur les serveurs Funtoo, tous les fichiers se terminant par -current.tar.xz sont des références (liens symboliques) pointant vers les fichiers les récemment produits par le projet (archive de stage 3, archive de l'arbre Portage...).
  • Lorsque vous spécifiez une de ces références, le contenu du fichier vers lesquelle sera téléchargé et sauvegardé sur votre ordinateur avec le nom de la référence (ex. si une référence s'apelle stage3-core2_32-current.tar.xz le fichier sera téléchargé sur votre machine sous l'appellation stage3-core2_32-current.tar.xz).

Dans ce tutoriel, le réseau local auquel l'environnement virtualisé à accès dispose d'un mirroir Funtoo (dans votre cas il vous faudra très probablement récupérer le nécessaire depuis un des serveurs Funtoo dont la liste est donnée dans l'article Funtoo ou sur Funtoo.org). La récupération du stage 3 s'effectue tout simplement par la commande suivante :

Gnome-dev-computer.png
Téléchargement de l'image de stage 3 Funtoo testing
Warning 64.png
Attention !
  • Prêter attention au ~. Le ~ indique une version dite testing de la distribution (cette version dispose des versions plus récentes des différents paquets logiciels). En pratique il est apparu après plusieurs semaines d'utilisation et mises à jours qu'une Funtoo testing est aussi stable si ce n'est plus qu'une version stable de Gentoo !
  • Le processeur de la machine virtuelle est ici un Intel Core 2, Funtoo dispose de stage 3 pour plusieurs processeurs différents (x86 générique, AMD Opteron64....)
  • rappel : nous utilisons un système 32 bits... D'où le _32 !

Il faut ensuite la décompresser directement dans /mnt/funtoo qui est ici le répertoire courant et de contrôler le résultat :

Gnome-dev-computer.png
# tar -Jxpf stage3-core2_32-current.tar.xz
# ls -l
Décompression de l'image de stage 3 Funtoo testing. Noter l'usage de l'option -p de la commande tar afin de préserver les permissions originales, et le -J (J majuscule) pour indiquer une archive au format xz

Préparation au chrootage

A présent que le stage 3 est décompressé, il incombe de réaliser quelques opérations supplémentaires à savoir:

  • le montage de la partition /boot qui contiendra les images binaires du noyau GNU/Linux ainsi que les différents fichiers du chargeur Grub
  • le montage des alias de /proc, /dev et /dev/pts
  • la copie du fichier /etc/resolv.conf qui a été générée lors de la configuration réseau
  • la copie de la liste des montages actuels (important pour Grub)
Gnome-dev-computer.png
# mount -t proc none /mnt/funtoo/proc
# mount -o bind /dev /mnt/funtoo/dev
# mount -o bind /dev/pts /mnt/funtoo/dev/pts
# mount /dev/sda1 /mnt/funtoo/boot
Montages additionnels

Petit contrôle :

Gnome-dev-computer.png
# mount
Tout va bien !

Reste à copier /etc/resolv.conf et la liste des montages actuels :

Gnome-dev-computer.png
# cp /etc/resolv.conf /mnt/funtoo/etc
# cp /proc/mounts /mnt/funtoo/mtab

Chrootage

Warning 64.png
Attention !

Certaines versions de System Rescue CD ont un problème (connu) : si vous obtenez lors de la compilation de votre système le message /usr/bin: file not recognized: Is a directory, il vous faudra vous chrooter en fixant explicitement la variable SHELL à /bin/bash comme ceci :

% env -i HOME=/root TERM=$TERM SHELL=/bin/bash /bin/chroot /mnt/funtoo /bin/bash

C'est le premier moment historique de toute installation Funtoo : le chrootage dans /mnt/funtoo !

Gnome-dev-computer.png
# chroot /mnt/funtoo /bin/bash
# env-update && source /etc/profile
Chroot et mises à jour de l'environnement

Noter au passage le changement d'aspect de la ligne de commande qui passe du vert et bleu au rouge et bleu, le % devient un # (accessoirement le shell n'est plus ZSH mais BASH).

Arbre Portage

Il s'agit à présent de récupérer une archive de l'arbre de paquets Portage qui est géré au travers du SCM Git dans Funtoo. Depuis la mi-juillet 2010 cet arbre est exclusivement distribué sous sa saveur « mini-manifeste ». Cette saveur élimine certaines redondances d'informations dans les manifestes des différents paquets logiciels qui sont à présent gérées au travers de fonctionnalités intrinsèques à Git (pour plus de détails sur les mini-manifestes, voir l'article Mini-manifestes arbre Portage Funtoo consacré à ce sujet).

Là encore, il faut télécharger la dernière archive en date de Portage (portage-current.tar.xz) :

Gnome-dev-computer.png

Il faut ensuite décompresser l'archive dans /usr (noter le « J » en majuscule dans la série d'option qui permet de spécifier à tar que l'archive est compressée en LZMA2). Une fois l'archive décompressée, l'arbre Portage est situé dans /usr/portage :

Gnome-dev-computer.png
# tar -Jxf portage-current.tar.xz -C usr/
# cd usr/portage
# ls -l
Décompression...Mais... Il n'y a rien hormis ce fichier ? Où est donc passé le reste ? Est-ce là un bogue ?! Que nenni ! Que nenni !

Noter que l'archive contient pas de copie pas de copie de travail sortie (dans le jargon Git celà s'apelle un checkout), checkout qu'il faut donc faire :

Gnome-dev-computer.png
# git branch
# git checkout funtoo.org
Checkout de la branche funtoo.org de l'arbre Portage

Profitons d'être dans le répertoire /usr/portage pour ouvrir une petite parenthèse : sous Funtoo un paquet se rattache à une (et une seule) catégorie comme par exemple sys-apps, sys-dev, net-misc ou dev-ada ce qui permet de le désigner sans aucune ambiguïté de ses congénères par une appellation de la forme nom de catégorie/nom du paquet. Il ne peut y avoir ainsi qu'un et un seul paquet s'appelant sys-devel/gcc tout comme il ne peut y avoir qu'un seul paquet nommé sys-apps/portage. Bien évidemment un paquet peut posséder plusieurs versions (sys-devel/gcc-4.3.1 pour GCC 4.3.1, sys-devel/gcc-4.4.0 pour GCC 4.4.0). Notez que Portage est en mesure de se débrouiller avec le seul nom du paquet si ce nom est en lui-même unique au sein de tous les paquets de l'arbre Portage (ex. si un et un seul paquet, peut importe sa catégorie, se nomme gcc Portage sera en mesure de l'identifier de manière non ambiguë).

Une fois le checkout effectué, un ls -l permet de constater que /usr/portage contientplus d'une centaine de répertoires. À quelques exceptions près (répertoires eclass, portage et profiles notamment), ces répertoires correspondent aux différentes catégories des paquets disponibles sous Funtoo dont les fameuses catégories sys-apps (/usr/portage/sys-apps), sys-dev (/usr/portage/sys-dev), net-misc (/usr/portage/net-misc) et dev-ada (/usr/portage/dev-ada) qui ont été évoquées précedemment !

Chaque répertoire désigne une catégorie

Chacun de ces répertoires de catégories contient lui-même un second niveau de répertoires dont chacun d'eux correspond à un paquet (sys-devel/gcc => /usr/portage/sys-devel/gcc). Dans ce second niveau de répertoire se trouvent un certain nombre de fichiers dont un certains d'entre eux se terminent par .ebuild. Ces fameux fichiers .ebuild (un fichier ebuild pour chaque version disponible du paquet) contiennent toutes les directives nécessaires Portage pour télécharger, le code source d'une version particulière d'un paquet, le compiler et l'installer.

Chaque catégorie (ici dev-ada) contient plusieurs répertoires correspondant aux paquets (adadoc, adaunit...) dont chacun d'eux contient des fichiers ebuilds. Le fichier Manifest contient les hachages « officiels » des archives contenant le code source des paquets afin de s'assurer que ce qui est téléchargé ne soit ni corrompu ni ne comporte un contenu ayant été altéré (Gentoo-istes : remarquez que le Manifeste ne contient plus les hachages des fichier ebuilds, leur intégrité etant assurée par Git lui-même).

L'arbre Portage est à présent presque opérationnel à un petit détail près ! Il reste à effectuer au une synchronisation entre l'arbre Portage tel qu'il existe dans le répertoire /usr/portage et l'arbre Portage tel qu'il existe actuellement dans le dépôt Git (situé sur GitHub) du projet Funtoo. Ceci est effectué par :

Gnome-dev-computer.png
# emerge --sync
Info 64.png
Information !
  • Si rien de nouveau n'a été publié dans l'arbre Portage depuis que son archive (récupérée un peu plus tôt dans cette partie du tutoriel) a été construite auquel cas Already up-to-date sera affiché.
  • Il est possible que des messages Performing Global Update soient affichés. Ceci est tout à fait parfaitement normal, en particulier à lors de cette première synchronisation et cela se produira de temps à autre dans le futur. Ces messages indiquent que Portage effectue quelques modifications préalablement à la synchronisation à l'arbre Portage (il s'agit le plus souvent du déplacement de certain paquets d'une catégorie à l'autre ce qui contribue à réduire le volume de données transférées lors de la synchronisation proprement dite).

Fin de la deuxième partie

Les fondations du système sont à présent en place, la prochaine étape consistera à personnaliser plusieurs fichiers et à commencer à compiler les premiers paquets comme expliqué dans Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 3 !

Outils personnels