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

Posté par  . Licence CC By‑SA.
40
20
nov.
2011

Sommaire

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. Cela ne devrait plus vous préoccuper que votre secrétaire, qui ne connaît rien aux ordinateurs, aille compiler Firefox (Dieu sait si cela ne se terminerait en une explosion atomique si oui...). Et 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.

Dans cet article, j'explique comment on peut créer sa propre distribution à base de Gentoo et à l'aide des utilitaires Calculate 2.2. {{more}} 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.

1

Je m'adresse aux usagers de Gentoo, aux administrateurs système, aux enseignants d'informatique et, en général, à tous les fans de Linux. Toutes les opérations que je décris 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 (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 - 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) 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é à 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

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

Nous avons choisi, je vous le rappelle :) un CLDX 32 bits qui peut être téléchargé d'ici. 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

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

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

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

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. Vous permettez que je me fasse un petit café ? :)

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

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

Pour la mise à jour des réglages utilisons dispatch-conf au lieu de env-update :
10

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

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

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

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

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, disons, préparer des gabarits pour l'environnement de bureau, et plus.

Initialement publié sur : http://habrahabr.ru/blogs/linux/131234/

  • # à l'usage des débutants avec gentoo

    Posté par  (site web personnel) . Évalué à 1.

    Je ne connaissais pas "calculate", c'est toujours sympa comme découverte.
    Pour ce tuto, il semble destiné aux débutants avec Gentoo. Alors serait il possible que tu le postes sur un wiki ou sur un etherpad ? Parceque là il me semble manquer beaucoup de points essentiel aux débutants.
    La doc de Gentoo se suffit à elle même, et est remarquable dans tout les sens du terme. Si on souhaite faire un tuto supplémentaire "à l'usage des débutants", on peut alors en prendre quelques parties essentielles, permettant de : 1.mettre en valeur les points à comprendre immédiatement, pour éviter de se retrouver avec une distribution pas_top à l'arrivée. Et 2. Donner les bonnes astuces pour leur éviter que leur laptop ne reboot tout seul pour cause de surchauffe (qui servira aussi lors des mises à jour). J'ajouterai que plutôt que de partir d'une distribution "gentooesque", faire le tuto de départ en ciblant une distribution ordinaire, de type Ubuntu ou Fedora. Ainsi on aborde aussi les principes du chroot. Pour terminer j'ajouterai les principes de bases de gentoo concernant les branches et les ports.
    Bref, moins un sur le tuto en l'état. J'aurai préféré une présentation de "calculate linux".

  • # Bravo

    Posté par  . Évalué à 10.

    Et bien pour un premier journal, bravo
    moi je dis si toutes les nouvelles têtes sur DLFP elles étaient comme ça
    Toujours est il que Patrick_g à du soucis à se faire

  • # UPD

    Posté par  . Évalué à 4.

  • # Remarque à la con

    Posté par  . Évalué à 3.

    Dans la première capture d'écran on voit une calculatrice. Est-ce que des gens sous GNU/linux utilisent vraiment cette application ?

    Personnellement je lance bc -lq dans un terminal, ça permet d'avoir un historique de ses calculs.

    Mise à part ça l'article à l'air très bon même si je n'ai pas tout lu, car pas gentooiste moi-même.

    • [^] # Re: Remarque à la con

      Posté par  (site web personnel) . Évalué à 3.

      Oui moi j'utilise gcalctool (la calculatrice par défaut de gnome), dans son apparence "simple" et pour l'usage basique que j'en fais ça me suffit

    • [^] # Re: Remarque à la con

      Posté par  . Évalué à 2.

      Oui, je me sers de galculator (sous XFCE), assez souvent même : il m'arrive de compter mes horaires.

      • [^] # Re: Remarque à la con

        Posté par  . Évalué à 2.

        galculator c'est la meilleure du genre en affichage "paper mode"

  • # Deux ou trois questions :)

    Posté par  . Évalué à 3.

    Tout d'abord, merci à toi de nous faire découvrir une autre distribution basée sur Gentoo.

    Cependant, une ou deux question me taraudent.

    L'arbre portage principal est-il synchronisé régulièrement côté Gentoo ou Funtoo ? Car je vois dans ton "tuto" que tu utilises des fonctionnalités de portage 2.2 qui est hard-masked normalement.

    Quelles sont les spécificités par rapport à une Gentoo standard ?

    En tout cas, content de voir que Gentoo sert de base à autre chose que Sabayon et le system rescue CD :)

    cd /pub && more beer

    • [^] # Re: Deux ou trois questions :)

      Posté par  . Évalué à 3.

      Oki, moinssez-moi, je n'avais pas lu le wiki qui répond à au moins une des questions. Celles des spécificités.

      Reste le "taux" de divergence par rapport à une gentoo et comment gérer les divergences...

      Pour utiliser pas mal d'overlays, je sais d'expérience qu'il peut être assez "tricky" de faire une mise à jour lorsque les overlays ne sont pas mis à jour à jour assez vite par leurs mainteneurs par rapport à l'arbre principal portage.

      Un retour d'expérience sur le long-terme de Calculate pourrait être utile.

      cd /pub && more beer

      • [^] # Re: Deux ou trois questions :)

        Posté par  . Évalué à 2.

        Moi aussi, il faut me moinsser, j'avais pas lu ton deuxième commentaire avant de répondre :D

        Je ne saurais pas dire si c'est beaucoup, deux overlays... Il faudrait peut-être que je pose la question directement la question au chef du projet, pour savoir comment il gère. A priori, la migration sur Git a résolu, autant que je sache, le problème de divergences (voir ici).

    • [^] # Re: Deux ou trois questions :)

      Posté par  . Évalué à 2.

      L'arbre portage principal est-il synchronisé régulièrement côté Gentoo

      Oui, c'est le même. Contrairement à Funtoo, Calculate ne modifie pas l'arbre portage (sauf pour les paquets qui ont été patchés ou localisés par l'équipe Calculate et qui, de ce fait, sont disponibles maintenant dans leur overlay).

      En outre, les dépôts ont migré (depuis peu) sur Git, ce qui accélère beaucoup la synchronisation, mais ça, c'est la réponse à une question que tu ne m'avais pas posée :)

      Quelles sont les spécificités par rapport à une Gentoo standard ?

      Pour ce qui est des spécificités, je les ai précisées dans le wiki pour faire plus clair, mais il n'y aura pas de mal si je récapitule :

      • Calculate propose des profils standard ET binaires, au choix (mais tout profil binaire est naturellement modifiable à l'aide des paramètres USE, de sorte que seuls les paquets modifiés seront compilés).
      • Calculate a son overlay (c'est là, notamment, qu'on pioche les utilitaires dont je parlais dans le tuto + noyaux patchés + autres patchs + quelques localisations).
      • les Utilitaires Calculate 2 se chargent de la configuration du système avec les templates - et ça me semble très intéressant ce qu'ils envisagent pour la version majeure 3.

      Voilà, j'espère que j'ai répondu à tes questions :)

  • # La poule et l’œuf

    Posté par  (site web personnel) . Évalué à 1.

    Dans "Créer son système Linux personnalisé basé sur Gentoo", je ne sais pas si je dois comprendre que c'est la création qui est basée sur Gentoo ou le système créé ?

    J'avais l'impression que cela allait permettre de créer un système basé sur Gentoo, le graal pour qui veux un système optimisée...

    Mais dans les pré-requis, je vois qu'il faut une Gentoo. Bon ce n'est pas très grave, en effet, il existe des lives cd...

    Bref, du premier coup d’œil, je n'ai pas compris de quelle système on part et quel système on obtient...

    • [^] # Re: La poule et l’œuf

      Posté par  . Évalué à 2.

      En fait tu as bien compris, les deux sont basés sur Gentoo :) Mais on part d'un système déjà fait pour en arriver à un système configuré, optimisé et tout, qu'on pourra facilement installer par la suite sur n'importe quel ordinateur.

      C'est un bon équilibre entre rapidité de création/installation et souplesse, je trouve.

    • [^] # Re: La poule et l’œuf

      Posté par  (site web personnel) . Évalué à 2.

      J'avais l'impression que cela allait permettre de créer un système basé sur Gentoo, le graal pour qui veux un système optimisée... Mais dans les pré-requis, je vois qu'il faut une Gentoo. Bon ce n'est pas très grave, en effet, il existe des lives cd..

      C'est un peu comme pour écrire un compilateur: dans les temps reculés les premiers assembleurs ont été écrits à la main et directement en langage machine, ils ont servi à écrire les premiers compilateurs qui ont ensuite permis d'écrire des compilateurs de plus en plus puissants… et aujourd'hui pour compiler un compilateur, il faut un compilateur.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.