Visualiser une révision

Créer son système Linux personnalisé basé sur Gentoo

flor_de_azucena : révision n°3 (21 novembre 2011 05:54:14)

Le principal avantage de Gentoo est sa flexibilité, son gestionnaire de paquets Portage vous permettant de créer un système adapté à toute tâche. Pour les pros, il n'y a rien de mieux qu'une distribution après l'installation de laquelle vous n'aurez rien à faire de plus : 5-10 minutes d'installation, et vous voilà devant des logiciels configurés et optimisés à votre goût.

**Proposition 1**
Qu'est ce que Calculate Linux ? http://www.calculate-linux.org/
-> placer ici les courts descriptifs se trouvant plus bas, des diff entre "server" et "desktop". Ainsi qu'un petit mot rapide sur les version "media center" et "scratch". Les "scratchs" semblant être les points forts de cette distribution. Un dernier mot sur l'orientation de la politique de cette distribution semble être le professionnel et/ou la stabilité.


**propal 2**
Détaillez un peu Calculate : ils ont leur overlay, leurs outils en surcouche de emerge, leurs outils de création d'iso. Probable que tout cela mérite d'être détaillé. Ici plus pour les habitués à Gentoo. 


Dans cet article, j'explique comment on peut créer sa propre distribution à base de Gentoo et à l'aide des utilitaires Calculate 2.2. A l'issue de cette opération, vous recevrez une image ISO hybride qui peut être gravée sur un CD, un DVD ou une clé USB, entièrement compatible avec Gentoo, supportant l'installation sur un disque dur externe, une clé USB, un disque dur, avec le support des LVM et Raid, et le système de fichiers de votre choix, soit ext4, ext3, ext2, reiserfs, btrfs, xfs, jfs, nilfs2 ou encore fat32.

**propal 3**
préciser qu'il s'agit d'une installation binaire


![1](http://www.calculate-linux.ru/attachments/download/1816)

Toutes les opérations ici décrites s'effectuent dans la console et avec les droits de l'utilisateur _root_.

Prérequis
-----------

Bien sûr que vous devez disposer de Gentoo Linux (ou une autre distribution apparentée à Gentoo) et de la connection Internet. Personnellement, j'ai opté pour [Calculate Linux Desktop KDE](http://www.calculate-linux.org/) (64 bits), mais vous n'êtes pas obligé de faire de même, toute distribution gentooesque fera l'affaire.

Commencez par installer les paquets `calculate-assemble` et `calculate-builder` si vous ne les avez pas déjà. Sur une Gentoo pur sang il faudra d'abord ajouter l'overlay Calculate :

    emerge layman
    layman -a calculate
    emerge calculate-assemble calculate-builder

Maintenant, vous devez décider quel environnement vous préférez. Vous pouvez choisir entre

* [Gentoo Stage3](http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?style=printable&part=1&chap=5#doc_chap1) - le minimum nécessaire pour commencer à construire votre système ;
* Calculate Scratch Server (CSS) - en fait, le même Gentoo Stage3 avec le noyau, les pilotes, le bootloader, Portage et les utilitaires Calculate ;
* Calculate Linux Scratch (CLS) - CSS + Xorg + wireless ;
* Calculate Linux Desktop avec l'environnement de bureau KDE (CLD), Gnome (CLDG) ou XFCE (CLDX) ou Calculate Directory Server (CDS).

Téléchargez (suivant vos objectifs)Vous me direz : Mais on a le [manuel Gentoo officiel](http://www.gentoo.org/doc/fr/handbook/)! Soit, mais ce n'est pas une Gentoo classique qu'on va construire, vous verrez.

Vous avez plusieurs options pour le départ :
* [Gentoo Stage3](http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?style=printable&part=1&chap=5#doc_chap1) - le minimum nécessaire pour commencer à construire votre système ;
* Calculate Scratch Server (CSS) - en fait, le même Gentoo Stage3 avec le noyau, les pilotes, le bootloader, Portage et les utilitaires Calculate ;
* Calculate Linux Desktop avec l'environnement de bureau KDE (CLD), Gnome (CLDG) ou XFCE (CLDX) ou Calculate Directory Server (CDS).
* Calculate Linux Scratch (CLS) - CSS + Xorg + wireless ;

**Qu'est ce que Calculate Linux ?** http://www.calculate-linux.org/
La version "server", comme son nom l'indique, vise les différents type de serveurs, la version "desktop" étant orientée usager ordinaire, avec sa suite bureautique LibreOffice et ses outils Internet. Toutefois, les deux comprennent les Utilitaires Calculate 2 (les Calculate 3 sont en chantier, [la preuve (EN)](http://www.calculate-linux.org/maillist/message/675)) dont on aura besoin pour faire une distribution de nos rêves :)

En effet, dans cet article, j'explique comment on peut créer sa propre distribution à base de Gentoo et à l'aide des utilitaires Calculate 2.2. A l'issue de cette opération, vous recevrez une image ISO hybride qui peut être gravée sur un CD, un DVD ou une clé USB, entièrement compatible avec Gentoo, supportant l'installation sur un disque dur externe, une clé USB, un disque dur, avec le support des LVM et Raid, et le système de fichiers de votre choix, soit ext4, ext3, ext2, reiserfs, btrfs, xfs, jfs, nilfs2 ou encore fat32.

**Pourquoi Calculate Linux ?**
D'abord parce qu'elle propose des profils binaires. Ceci dit, vous pouvez toujours retourner à la compilation avec `eselect profile list set _N_du_profil_`, mais on se demande si ça vaudrait la peine (sans parler du temps passé à compiler et de la surchauffe de votre laptop...). Et puis, choisir un profil binaire ne revient pas forcément à utiliser des paquets encombrants, avec des fonctionnalités dont vous ne vous servirez jamais (d'ailleurs, même une CL précompilée est rapide) : l'objectif est, effectivement, de se débarrasser de tout ce qui est inutile, et ce ne sont que les paquets modifiés qui seront recompilés.

2°, Calculate n'est pas juste une Gentoo légèrement refaite avec de jolis fonds d'écran. Ils ont leur overlay, qui s'ajoute facilement avec `layman`, un ensemble d'outils assez performants pour configurer le système, [y compris en mode interactif](http://www.calculate-linux.ru/main/en/interactive_system_build), créer une ISO, [recompiler et installer un nouveau noyau (en surcouche du `genkernel`)](http://www.calculate-linux.ru/main/en/cl-kernel), et, surtout, [les templates](http://www.calculate-linux.ru/main/en/calculate_utilities_templates).

3°, elle peut être déployée rapidement en entreprise, offrant une solution client-serveur prête à l'emploi.

![1](http://www.calculate-linux.ru/attachments/download/1816)

Toutes les opérations ici décrites s'effectuent dans la console et avec les droits de l'utilisateur _root_.

Prérequis
-----------

Bien sûr que vous devez disposer de Gentoo Linux (ou une autre distribution apparentée à Gentoo) et de la connection Internet. Personnellement, j'ai opté pour [Calculate Linux Desktop KDE](http://www.calculate-linux.org/main/en/cld) (64 bits), mais, je me répète, vous n'êtes pas obligé de faire de même, toute distribution gentooesque fera l'affaire.

Commencez par installer les paquets `calculate-assemble` et `calculate-builder` si vous ne les avez pas déjà. Sur une Gentoo pur sang il faudra d'abord ajouter l'overlay Calculate :

    emerge layman
    layman -a calculate
    emerge calculate-assemble calculate-builder

Maintenant, vous devez décider quel environnement vous préférez (référez-vous à la liste du début).

Téléchargez, suivant vos objectifs, le dernier archive de Gentoo Stage ou un stage de Calculate et mettez-le dans le répertoire `/var/calculate/remote/stages` ou `/var/calculate/linux`, respectivement :

    cd /var/calculate/remote/stages
    wget http://mirror.yandex.ru/gentoo-distfiles/releases/x86/current-stage3/stage3-i686-20111018.tar.bz2

ou

    cd /var/calculate/linux
    wget http://mirror.cnet.kz/calculate/CLDX/stages/i686/cldx-20111024-i686.iso

L'image stage de Calculate inclut l'arbre Portage. En fait, c'est ce qui distingue un stage de Calculate d'un Gentoo Stage. En construisant le système à partir d'un Gentoo Stage, vous devrez mettre les portages dans le répertoire `/var/calculate/remote/snapshots`

    cd /var/calculate/remote/snapshots
    wget http://mirror.yandex.ru/gentoo-distfiles/snapshots/portage-20111024.tar.bz2

N'oubliez pas que les paquets contenus dans Portage sont régulièrement mis à jour.

Pour cet article, j'ai choisi CLDX (32 bits), et ce, pour plusieurs raisons :

* La distribution inclut déjà la plupart des utilitaires nécessaires ;
* Elle n'est pas rattachée à Gnome/KDE ;
* XFCE est très léger et peut être vite supprimé si vous vous en lassez.

Préparer votre environnement pour l'installation
------------------------------------------------

`cl-assemble` va préparer votre environnement à la construction. Vous pouvez choisir parmi les profils disponibles. Dans Calculate Linux, l'environnement choisi déterminera les paramètres. CLD est optimisé pour l'utilisation de Qt/KDE, CLDG pour Gtk/Gnome, XFCE pour Gtk. Ce dernier vous conviendra parfaitement si vous vous opposez à KDE comme à Gnome.

Si vous indiquez le profil "`CLDX`", le système vous demandera de préciser le nom :
![2](http://www.calculate-linux.ru/attachments/download/1776)

Vous devrez également indiquer la partition pour l'installation. Cela peut être une partition sur le disque dur (10-15 Go) ou un répertoire. Si vous préférez le répertoire, il vous faudra quelque temps pour en supprimer les anciens fichiers. Par défaut l'utilitaire se sert de l'image de Gentoo Stage3 et des derniers portages. 
![3](http://www.calculate-linux.ru/attachments/download/1777)

Nous avons choisi, je vous le rappelle :) un CLDX 32 bits qui peut être téléchargé [d'ici](http://mirror.cnet.kz/calculate/CLDX/stages/i686/). Précisez donc le profil, et si vous travaillez dans un système 64 bits, indiquez que vous voulez l'architecture i686 :

    cl-assemble -p desktop/CLDX/x86/binary -d /dev/sda2 --source=CLDX --march=i686

Tous ces préparatifs ont pris 10 minutes sur mon ordinateur.
![4](http://www.calculate-linux.ru/attachments/download/1778)

Mettre le système à jour
------------------------

L'utilitaire `cl-make` vous aidera à construire l'environnement. Mais arrêtons-nous sur certains points. Si vous voulez installer le système d'un Stage3, utilisez l'option `-m` (ou, si on l'écrit en toutes lettres, `--make`) ; pour une installation faite à partir d'une image de Calculate, utilisez `-u`, (`--update`). L'option `-V` (ou `--withvideo`) va copier des pilotes vidéo propriétaires. La copie sans installation permet de ne pas violer la licence GPL, mais vous pouvez toujours choisir le pilote propriétaire qui sera installé pendant le démarrage. 

    cl-make -u -V

Mettons notre système à jour.
![5](http://www.calculate-linux.ru/attachments/download/1779)

Vous aurez remarqué que je ne mets pas de profil dans cet exemple. En effet, il ne doit être précisé que si vous installez plusieurs systèmes simultanément, par exemple, des versions 32-bits et 64-bits ; si c'est bien le cas, saisissez `-p amd64` et `-p x86`. Le programme comparera les versions et essaiera de choisir le bon profil.

Dans mon exemple, 40 paquets ont été mis à jour. 
Notez que les utilitaires Calculate enregistrent leurs opérations dans `/etc/calculate/assemble.env` :
![6](http://www.calculate-linux.ru/attachments/download/1781)

Certaines valeurs, par exemple, le serveur de portages rsync ou les partitions disponibles, peuvent être définies dans des variables des utilitaires Calculate. Ceci est un exemple que j'emprunte à un vrai serveur :
![7](http://www.calculate-linux.ru/attachments/download/1772)

Une fois les partitions indiquées, vous n'êtes pas obligé d'utiliser l'option de la partition pour construire le système.

J'ai eu le temps d'écrire ce texte pendant la mise à jour. Les premiers à être renouvelés étaient gtk et python ; décidément, j'aurais dû prendre l'image d'aujourd'hui ! Malgré le choix du profil binaire, les derniers paquets sont compilés du code source.

Apporter des modifications
--------------------------

Enfin, le plus intéressant ! Nous pouvons modifier plein de choses :

* le contenu des paquets ;
* les paramètres ;
* la configuration des programmes ;
* la configuration de l'environnement ;
* les thèmes, etc.

Comme vous pouvez le voir, le système est déployé dans le répertoire `/mnt/calculate-desktop-CLDX-x86-binary/`. Utilisez ce répertoire pour toutes vos modifications. On voit sur mes captures d'écran que le système déployé est en train d'être réglé. Tous les gabarits sont stockés dans `/usr/share/calculate/templates/assemble/`. L'essentiel, quand on modifie les réglages, est d'éviter les collisions. Parfois, vous pouvez créer vos propres gabarits pour les modifications ou utiliser des fichiers alternatifs. On va l'expliquer plus en détail par la suite.

### Paramètres d'assemblage

Le contrôle des paramètres d'assemblage s'effectue à l'aide des options USE. En réduisant les dépendances vous gagnez en souplesse :

* les programmes sont exécutés plus rapidement ;
* la sécurité du système est renforcée ;
* vous voilà délivré des dépendances inutiles ;
* le système a besoin de moins d'espace disque.

Regardons le contenu de la variable USE. Pour ce faire, exécutez :

    linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary /bin/bash -c "emerge --info"

Vous pouvez voir que j'ai utilisé `chroot` avec `linux32`, car j'ai l'intention de créer un système 32 bits sur une plateforme 64 bits. Pas vous ? alors, vous n'aurez pas besoin de cet outil. 

Il y aura beaucoup de paramètres. Pour l'information supplementaire voir `/usr/portage/profiles/use.desc` pour les paramètres globaux et `/usr/portage/profiles/use.local.desc` pour les paramètres locaux.

Pour que la modification des paramètres soit appliquée à tous les paquets, c'est le fichier `make.conf` qui est utilisé directement. Or, la construction du nouveau système va modifier le contenu du fichier ; je vous conseille donc d'utiliser, plutôt, `/etc/portage/make.conf`.

Par exemple, désactivons le support de _ipv6_ dans tous les paquets. Ajoutez au fichier `/mnt/calculate-desktop-CLDX-x86-binary/etc/portage/make.conf` la ligne suivante :

    USE="-ipv6"

Voyons le résultat. Cette fois-ci, servons-nous de l'option `-U` au lieu de `-u`. Cela nous permettra de gagner du temps pour la synchronisation des arbres Portages. Executez `cl-make -U -V` :
![8](http://www.calculate-linux.ru/attachments/download/1773)

Remarque. Comme le serveur Xorg a été recompilé, ses modules seront également recompilés à la fin. Si vous faites plusieurs compilations de suite, l'utilitaire va analyser le fichier `emerge.log` et recompiler les pilotes de Xorg. Pour y échapper, vous pouvez supprimer le fichier `var/log/emerge.log` dans le système compilé. De toute façon, ce fichier sera supprimé une fois l'image ISO est créée.

### Paramètres USE et masquage de paquets

Pour modifier les paramètres et les masques, on utilisera les répertoires suivants: `etc/portage/package.use`, `etc/portage/package.keywords`, `etc/portage/package.mask`, `etc/portage/package.unmask`. Sachez que `emerge-2.2` est capable de démasquer, à lui seul, les dépendances.

Je vais vous montrer comment démasquer les paquets sur l'exemple d'un navigateur Web, Firefox. Pour commencer, on va chrooter :

    linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary
    env-update && source /etc/profile

Pour connaître le nom correct du paquet `firefox` et avoir la liste des versions disponibles :

    eix firefox
    * www-client/firefox
         Available versions:  *3.6.12 3.6.20 ~3.6.21 ~3.6.22 ~7.0.1-r1

La dernière version stable du paquet est donc 3.6.20. Tiens, ça date un peu... Démasquons la version 7.0.1-r1 :
![9](http://www.calculate-linux.ru/attachments/download/1774)

Pour la mise à jour des réglages utilisons `dispatch-conf` au lieu de `env-update` :
![10](http://www.calculate-linux.ru/attachments/download/1780)

L'utilitaire va nous aider avec la mise à jour des masques et des paramètres USE. Dans les deux cas appuyez sur "u" pour accepter les modifications suggérées.
![11](http://www.calculate-linux.ru/attachments/download/1782)

Ici vous pouvez vérifier et copier d'autres paquets requis pour la compilation. Terminez par vérifier les dépendances:

    emerge -p paquet1 paquet2 ..

### Ajouter des paquets

Tous les paquets qu'on installe, à part les dépendances, sont inscrits dans le fichier 'world'. Dès que vous ayez installé un paquet, il est porté sur le système avec les bibliothèques dépendantes. Si le système n'a plus besoin de certaines bibliothèques, la commande `emerge --depclean` les supprimera. Pour cette raison, tous les paquets (sans dépendances) que vous avez installés en supplément doivent figurer sur le fichier 'world'. On peut les supprimer également par le biais de la commande `emerge --unmerge` en indiquant le(s) paquet(s), sinon à la main, en éditant le fichier et en exécutant `emerge --depclean`.

Pour la compilation de l'arbre des dépendances l'utilitaire Calculate utilise des méta-paquets, à base de `app-misc/calculate-meta`. Les paramàtres USE compilent l'arbre des dépendances en entier. Comme vous auriez utilisé des logiciels ciblés pour la vérification du système, le fichier `var/lib/portage/world` ne contiendra qu'un seul méta-paquet avant la création du système.

Pour que vous puissiez gérer les paquets que vous ajoutez à la distribution avec plus de facilité, Portage fournit un excellent outil, qui est les sets. Les sets vous permettent de faire vos sélections thématiques. Les sets supportent également des imbrications ce qui est aussi très commode. Vous pouvez éditer votre liste des paquets à l'aide du set @custom qui est défini dans le fichier `/etc/portage/sets/custom`, en y ajoutant:

     www-client/firefox

Ou vous pouvez créer un nouveau set, par exemple 'web', en y ajoutant le paquet, et porter le lien correspondant sur le fichier 'custom' :

    @web
    
Le set peut donc contenir les sets imbriqués tout comme les paquets.

Pendant la mise à jour du système les programmes des sets seront installés, puisque tout set est listé dans son fichier world, stocké dans `/var/lib/portage/world_sets`.

### Supprimer des paquets

Si nous supprimons le fichier `world` et exécutons `emerge --depclean`, nous aurons l'image Stage3. En d'autres termes, la configuration minimale sera préservée comme 'system'. Pour sa mise à jour on utilise soit la commande `emerge system`, soit le set `@system`. Le méta-paquet  `calculate-meta` compile les dépendances en fonction du profil choisi. Avec les paramètres USE `calculate_nowireless`, `calculate_nonetwork`, `calculate_noxfce`, etc., on peut supprimer certaines dépendances. Dans le fichier `/var/lib/layman/calculate/profiles/desc/calculate.desc` vous pouvez voir la liste complète des paramètres. Supposons que nous souhaitons supprimer le support des périphériques sans fil. Pour cela, éditez `/etc/portage/make.conf`, en y ajoutant :

    CALCULATE="nowireless"

Le paquet `firefox` sera installé, et les dépendances superflues, supprimées :
![12](http://www.calculate-linux.ru/attachments/download/1775)

Créer la nouvelle image système
-------------------------------

Pour créer l'image ISO du nouveau système, utilisez `cl-image` :

     cl-image --live iso

![13](http://www.calculate-linux.ru/attachments/download/1783)

L'option `--live` permettra de gagner quelques secondes sur le démarrage du système à partir d'un LiveCD ou d'un USB-Flash. Ajoutez cette option si vous utilisez la dernière image Stage de Calculate Linux.

Finaliser l'installation
------------------------

Si besoin est, ou si votre installation est terminée, vous pouvez abandonner l'assemblage à tout moment, en exécutant :

     cl-make --break

![14](http://www.calculate-linux.ru/attachments/download/1784)

Bilan
-----

J'ai expérimenté avec Calculate Linux Desktop XFCE et son profil binaire CLDX. Désormais, je vais mettre à jour le système à l'aide de la commande `emerge -uDNa world`, pour que mes paramètres USE personnalisés soient pris en considération. Si les paramètres sont identiques aux valeurs par défaut, les paquets seront installés du dépôt. Sinon, le paquet sera (re)compilé sur mon ordinateur.

J'ai obtenu l'image avec les logiciels que je voulais. Bien entendu, toutes les possibilités ne sont pas décrites ici. On pourrait préparer des gabarits pour l'environnement de bureau, et plus.