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

De Gentoo-Quebec.

Go-previous.png Installation


Gentoo-quebec+Funtoo-quebec.png

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


Sommaire

Introduction

Les fondations ont été patiemment mises en places dans Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 1 et Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 2 . Dans cette partie, le système de base sera configuré et mis à jour (recompilation).

Warning 64.png
Attention !
La configuration de Funtoo donnée ici est propre à la machine virtuelle utilisée pour le tutoriel. De ce fait, les exemples de configuration présentés ici nécessitent d'être adaptés lors de l'installation de Funtoo sur une machine réelle.

Configuration du système de base

Selection du profil

Un profil prédéfinit un ensemble de paramètres nécessaires au bon fonctionnement de Portage et il est obligatoire d'en sélectionner un (le stage 3 récupéré utilise 2008.0). Bien que cette sélection puisse se faire manuellement en modifiant l'endroit pointé par /etc/make.profile, Portage fournit le nécessaire pour effectuer cette modification au moyen du module profile au moyen de l'outil eselect. Il est possible de lister les profiles disponibles grâce à la commande suivante (pour les fins de l'exemple, le répertoire courant a été changé pour /etc, il n'est cependant pas nécessaire de se placer dans /etc pour modifier le profil) :

Gnome-dev-computer.png
# eselect profile list
Liste des profils disponibles

puis de sélectionner le profil 2008.0/Desktop (position 2 dans la liste) et de vérifier la modification avec les commandes suivantes :

Gnome-dev-computer.png
# eselect profile set 2
# eselect profile list
Sélection du profil 2008.0/Desktop avec eselect et impact sur /etc/make.profile

Personnalisation des fichiers de configuration de base

Comme expliqué dans l'article Funtoo, la configuration du système de base passe par la revue de plusieurs fichiers dont seul le contenu final est donné ici. Les fichiers de base sont :

  • /etc/make.conf
  • /etc/rc.conf - Modification non nécessaire, unicode est déjà à YES, laisser la parallélisation (rc_parallel) à NO car il y a quelques petits bogues dans OpenRC...
  • /etc/conf.d/keymaps - Modification nécessaire pour spécifier le clavier canadien français "cf" (clavier américain "us" par défaut)
  • /etc/conf.d/hwclock - Modification non nécessaire car spécifie une horloge UTC par défaut
  • /etc/conf.d/consolefont - Décommenter consoletranslation mais laisser la valeur par défaut

Le contenu de ces fichiers une fois personnalisés pour ce tutoriel est le suivant :

/etc/make.conf

# These settings were set by the metro build script that automatically built this stage.
# Please consult /etc/make.conf.example for a more detailed example.

ACCEPT_KEYWORDS="~x86"
CHOST="i686-pc-linux-gnu"

# CFLAGS est utilisée pour la compilation des logiciels écrits en C (la mojorité)
CFLAGS="-march=native -O2 -pipe"

# CXXFLAGS est utilisée pour la compilation des logiciels écrits en C++
# Il n'y a en général pas de raison de mettre quelque chose de différent
# que CFLAGS mais au cas où... 
CXXFLAGS="${CFLAGS}"

# LDFLags gouverne le comportement de l'éditeur de liens 'ld' (utilisé lors
# de la compilation des logiciels).
# --as-needed optimise le référencement des différentes bibliothèques partagées
LDFLAGS="-Wl,--as-needed"

# FEATURES additionnelles à celle du profil
# La saveur mini-manifestes de l'arbre Portage étant utilisée il FAUT activer
# "mini-manifestes" explicitement.

FEATURES="mini-manifest"

# Use flags additionnels à ceux du profil 
#
# Note : USE est une variable dite "incrémentale" pour Portage
# Si au niveau du profil USE="uf0 uf1 uf2 uf3" et que l'on met ici "-uf2" Portage
# considerera la liste comme "uf0 uf1 uf3"

USE="-bluetooth"

# Où télécharger le code source des paquets (SVP Utiliser un mirroir géographiquement proche), 
# ici c'est un mirroir local (serveur ftp) qui est utilisé. Noter que POrtage ajoute
# automatiquement /distfile à la fin (simple convention de nommage).
# 
# GENTOO_MIRRORS="ftp://192.168.1.2/gentoo" => ftp://192.168.1.2/gentoo/distfiles

GENTOO_MIRRORS="ftp://192.168.1.2/gentoo"

# Cartes vidéo (contenu spécifique pour VirtualBox)
# Variable non-incrémentale pour Portage (se substitue à la variable pré-définie)

VIDEO_CARDS="virtualbox"

# Variable LINGUAS (utilisée pour la langue de certains paquets comme OpenOffice)
# Variable non-incrémentale pour Portage

LINGUAS="en fr"

# Options additionnelles pour les Makefile, ici on utilise juste -j9 pour permettre la compilation de 
# jusqu'à 5 fichiers source d'un paquet en parallèle (voir commande make). 
# Empiriquement : 4 CPUs = 5 jobs maximum  (n+1)

MAKEOPTS="-j5"


/etc/conf.d/keymaps

# Use KEYMAP to specify the default console keymap.  There is a complete tree
# of keymaps in /usr/share/keymaps to choose from.
keymap="cf"

# Should we first load the 'windowkeys' console keymap?  Most x86 users will
# say "yes" here.  Note that non-x86 users should leave it as "no".
windowkeys="YES"

# The maps to load for extended keyboards.  Most users will leave this as is.
extended_keymaps=""
#extended_keymaps="backspace keypad euro2"

# Tell dumpkeys(1) to interpret character action codes to be
# from the specified character set.
# This only matters if you set unicode="yes" in /etc/rc.conf.
# For a list of valid sets, run `dumpkeys --help`
dumpkeys_charset=""

# Some fonts map AltGr-E to the currency symbol ¤ instead of the Euro €
# To fix this, set to "yes"
#fix_euro="yes"


/etc/conf.d/consolefont

# consolefont specifies the default font that you'd like Linux to use on the
# console.  You can find a good selection of fonts in /usr/share/consolefonts;
# you shouldn't specify the trailing ".psf.gz", just the font name below.
# To use the default console font, comment out the CONSOLEFONT setting below.
# This setting is used by the /etc/init.d/consolefont script (NOTE: if you do
# not want to use it, run "rc-update del consolefont" as root).
consolefont="default8x16"

# consoletranslation is the charset map file to use.  Leave commented to use
# the default one.  Have a look in /usr/share/consoletrans for a selection of
# map files you can use.
consoletranslation="8859-1_to_uni"

# unicodemap is the unicode map file to use. Leave commented to use the
# default one. Have a look in /usr/share/unimaps for a selection of map files
# you can use.
#unicodemap="iso01"


Mise à jour du fuseau horaire

Pour changer le fuseau horaire, il suffit de modifier la cible pointée par le lien symbolique /etc/localtime (malheureusement, il n'est pas possible de passer par eselect !). Les définitions des différents fuseaux horaire se trouve dans un fichiers situés sous un des sous-répertoires de /usr/share/zoneinfo.

Liste des zones pour les Amériques
Info 64.png
Information !
  • Pour l'Europe, consulter ce qu'il y a dans /usr/share/zoneinfo/Europe (pour la France faire pointer /etc/localtime sur /usr/share/zoneinfo/Europe/Paris)
  • L:es usagers situés au Nouveau-Brunswick ou en Nouvelle-Écosse peuvent utiliser /usr/share/zoneinfo/America/Halifax
  • Les usagers canadiens peuvent aussi utiliser une des zones présentes dans /usr/share/zoneinfo/Canada (les noms sont ceux couramment utilisés pour désigner le fuseau horaire -> Eastern, Mountain, Pacific, Saskatchewan...)

La machine utilisée ici étant dans la région du Québec, il faut donc choisir America/Montreal et faire pointer /etc/localtime vers /usr/share/zoneinfo/America/Montreal :

Gnome-dev-computer.png
# ln -sf /usr/share/zoneinfo/America/Montreal /etc/localtime

Puis de contôler ce que renvoit la commande date :

Gnome-dev-computer.png
# date
Sélection de la zone Montréal, noter que l'heure indique EDT (Eastern Daylightsaving Time), lors du passage à l'heure d'hiver EDT sera remplacé par EST (Eastern Standard Time). Noter que le répertoire courant est ici /etc

Mise à jour de /etc/fstab

Warning 64.png
Attention !
Ne pas oublier pas cette étape ! La machine ne serait pas en mesure de démarrer.

Avec la configuration utilisée ici, le fichier /etc/fstab est le suivant:

/etc/fstab

# /etc/fstab: static file system information.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
#
# See the manpage fstab(5) for more information.
#
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

/dev/sda1               /boot           ext2            noauto,noatime  1 2
/dev/sda2               none            swap            sw              0 0
/dev/sda3               /               ext4            noatime         0 1
/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0


Configuration réseau (IP statique)

Comme expliqué dans l'article Gestion du réseau avec Funtoo, il s'agit dans une premiers temps de créer dans /etc/init.d un lien symbolique nommé netif.interface_réseau (ici netif.eth0) et le faire pointer sur /etc/init.d/netif.tmpl.

Warning 64.png
Attention !
Ne pas faire pointer ce lien sur netif.lo !

Ce lien symbolique se met en place grâce à la commande suivante:

Gnome-dev-computer.png
# ln -s /etc/init.d/netif.tmpl /etc/init.d/netif.eth0
Création du lien symbolique netif.eth0. Au niveau de la ligne ln -s /etc/init.d/netif. la touche <Tab> a été pressée (non la touche <Entrée>)

Dans un second temps, il faut créer (éditeur de texte nano ou un simple cat > /etc/conf.d/netif.eth0 en oubliant pas de faire Ctrl-D une fois la saisie finie) le fichier /etc/conf.d/netif.eth0 qui a ici le contenu suivant :

/etc/conf.d/netif.eth0

template="interface"
description="Eth0 configuration"
IP=192.168.1.100
NET=192.168.1.0
NM=255.255.255.0
GW=192.168.1.1
DOM=virtualnet.lan
NS1=192.168.1.3


Mise à jour des locales

Pour la localisation du système (anglais Canada, UTF-8), il faut modifier plusieurs fichiers :

  • /etc/locale.gen : Lors de la compilation de la glibc, si ce fichier est vide ou n'existe pas, toutes les locales connues seront générées (~400) ce qui est une perte de temps et d'espace. A des fins d'exemple nous ne générerons que les locales canadiennes, US et françaises :

/etc/locale.gen

# /etc/locale.gen: list all of the locales you want to have on your system
#
# The format of each line:
# <locale> <charmap>
#
# Where <locale> is a locale located in /usr/share/i18n/locales/ and
# where <charmap> is a charmap located in /usr/share/i18n/charmaps/.
#
# All blank lines and lines starting with # are ignored.
#
# For the default list of supported combinations, see the file:
# /usr/share/i18n/SUPPORTED
#
# Whenever glibc is emerged, the locales listed here will be automatically
# rebuilt for you.  After updating this file, you can simply run `locale-gen`
# yourself instead of re-emerging glibc.

en_US ISO-8859-1
en_US.UTF-8 UTF-8
en_CA ISO-8859-1
en_CA.UTF-8 UTF-8
fr_CA ISO-8859-1
fr_CA.UTF-8 UTF-8
fr_FR ISO-8859-1
fr_FR.UTF-8 UTF-8
fr_FR@euro ISO-8859-15
fr_FR@euro.UTF-8 UTF-8


  • /etc/env.d/02locales : Il s'agit ici de définir dans quelle langue les applications afficheront les textes et différents paramètres linguistiques.

/etc/env.d/02locales

# Locale : anglais Canada, encodage UTF-8
LANG="en_CA.UTF-8"
LANGUAGE="en_CA.UTF-8"


LANG va contrôler la manière dont les différentes variables LC_ seront initialisées, ces variables fixent entre autres le format numérique (LC_NUMERIC), le format horaire (LC_TIME), etc. LANGUAGE va être utilisée pour influencer la langue d'affichage des messages des différents logiciels comme par exemple les outils GNU (commandes ls, make...).

Warning 64.png
Attention !
  • La prise en charge des affichages multilingues varie fortement d'un logiciel à l'autre et tous ne sont pas homogènes dans la prise en compte de la langue souhaitée (i.e. utiliser des variables d'environnement différentes de LANGUAGE comme LC_MESSAGES MESSAGES ou par exemple LINGUAS). .
  • Laisser son système en anglais est une bonne pratique surtout si vous faites du développement car les erreurs sont plus facilement « googlables ».
  • Ne jamais fixer la valeur des variables d'environnement LC_* et en particulier celle de LC_ALL, toujours passer par LANG (le reste sera fixé adéquatement).

Reste à régénérer les informations de localisation et à mettre à jour les variables d'environnement afin de prendre en compte la langue anglais Canada encodage UTF-8 :

Gnome-dev-computer.png
# locale-gen && env-update && source /etc/profile
Génération des locales et mise à jour de celle de la session courante en anglais Canada encodage UTF-8. Les deux commande echo montrent l'état des variables LANG et LANGUAGE avant et après modification.
Info 64.png
Information !
env-update est ici nécessaire afin de charger le contenu de 02locales, source /etc/profile va ensuite appliquer ce contenu à la session

Mise à jour du système de base

Recompilation de l'ensemble @system

Il ne reste plus qu'à faire une première reconstruction du système de base (tout ce qui est compris dans l'ensemble @system) afin de prendre en compte tous les changements apportés notamment au niveau de make.conf. Cette étape peut être particulièrement longue si la machine utilisée à une puissance relativement modeste et c'est là une des utilités d'avoir une machine multi-CPUs et/ou un CPU multi-cores : des essais menés sur un processeur Atom N280 ont pris 3 à 4 heures pour le système de base alors qu'un Core i7 récent a mis moins d'une heure. Par ailleurs, Portage va devoir devoir télécharger le code source de bon nombre de paquets... La machine virtuelle ayant une connexion permanente au serveur, l'option -f (fetch) n'est pas utilisée ici. Bien que -f ne soit pas utilisée Portage va, parallèlement aux compilations et installations, télécharger tout ce qui est nécessaire.

Gnome-dev-computer.png
# emerge -e @system
Une longue route devant... Il est possible que le nombre de paquets ne soit pas identique dans votre cas, ceci est tout à fait et parfaitement normal.


Info 64.png
Information !
  • Il est possible de faire précéder la commande précédente de time à des fins purement informationnelles : le temps d'exécution affiché pour la ligne real time sera celui que la construction aura pris. => # time emerge -e @system. Utiliser ou non time n'a aucun impact sur le résultat de la construction.
  • -e ayant pour conséquence de recompiler sans exception tous les paquets de l'ensemble @system, il est possible d'aller à l'essentiel de cette étape et de ne demander à Portage de ne recompiler que les paquets dont la valeurs des use-flags a été impactée ainsi que les paquets dont ils dépendent directement et indirectement (deep-dependency) . Ceci se réalise par : emerge -DN @system
  • Pour aller encore plus à l'essentiel, il est possible de ne demander à Portage de ne recompiler que les paquets de l'ensemble @system dont la valeurs des use-flags a été impactée ainsi que leur dépendances directes. Ceci se réalise par : emerge -N @system
  • A titre informatif, les ordres de grandeur du nombre de paquets à recompiler pour le présent tutoriel sont les suivants :
    • emerge -e @system : 140 paquets
    • emerge -DN @system : 40 paquets
    • emerge -N @system : 30 paquets

Mise à jour des fichiers de configuration

Une fois la mise à jour du système de base complétée, Portage informe que plusieurs fichiers du répertoire /etc sont à mettre à jour. Funtoo propose un outil bien pratique pour aider à cette tâche : dispatch-conf. Cet outil se lance tout simplement comme suit:

Gnome-dev-computer.png
# dispatch-conf
Recompilation achevée, Portage informe que 7 fichiers de /etc sont à mettre à jour
Info 64.png
Information !
  • Portage n'écrasera jamais silencieusement des fichiers de configuration de sa propre initiative car les nouveaux fichiers déployés dans /etc sont enregistrés sous un nom temporaire que reconnaît dispatch-conf puis effacés ou copiés à la place des originaux.
  • Pour la simplicité de l'explication, ce tutoriel effectue la modification sur une base binaire : les nouveaux fichiers proposés sont soit effectivement utilisés soit tout simplement écartés (le fichier tel qu'il existe actuellement est alors utilisé). dispatch-conf offre également la possibilité de faire une intégration beaucoup plus fine du contenu des anciens et nouveaux fichiers (merge).

dispach-conf commence par présenter la différence de contenu entre le nouveau fichier de configuration et celui tel qu'il existe actuellement est présentée selon la convention suivante :

  • Les lignes précédées du signe - sont celles qui seront « supprimées »
  • Les lignes précédées du signe + sont celles qui seront « ajoutées »
  • Les lignes communes entre les deux fichiers ne sont précédées ni de + ni de -

Si l'affichage de cette différence ne tient pas sur l'écran, dispatch-conf va automatiquement vous la présenter au moyen d'une fonctionnalité de pagination semblable à celle offerte par les outils more et less(barre d'espacement/touches fléchés pour défiler, q pour sortir immédiatement de la visualisation). Une fois la différence de contenu présentée, dispatch-conf laisse le choix entre plusieurs options (q permet en tout temps de sortir de dispatch-conf) parmi lesquelles seules les suivantes seront utilisées ici :

  • u : remplace l'ancien fichier par le nouveau
  • z : oublie (zappe) le nouveau fichier (l'ancien est alors laissé tel que)


Fin de la troisième partie

C'est tout pour cette troisième partie ! La suite des opérations va consister à installer un certain nombre de paquets de base dont le chargeur Grub et le noyau GNU/Linux qui sera par la suite lui aussi configuré et compilé. Pour ce faire, rendez-vous à Installation d'une Funtoo dans une machine virtuelle VirtualBox - Partie 4 !

Outils personnels