Installation de Sabayon sur une machine sans BIOS legacy.

Salut les ruminants, et me revoilà avec une installation de Sabayon, distribution basée sur Gentoo qui n’a pas voulu booter à l’installation.

La plupart des ordinateurs portables possèdent un boot legacy, mais avec certains, vous n’aurez pas cette chance, et toute tentative d’utiliser EFI pour booter échouera lamentablement. Il faut donc trouver une autre solution pour booter.

Ce qui ce passe, c’est :

  • grub2 supporte UEFI pour les deux modes 32 et 64bit, donc ça marche pour toutes les machines.
  • grub2 nécéssite efibootmgr pour mettre en place l’environnement de boot,
  • efibootmgr nécessite d’avoir accès aux variables d’EFI, donc nécessite un kernel comprenant le support des variables EFI.
  • Mais il n’y a aucun moyen d’accéder à ces variables quand on utilise un boot legacy.

On en arrive à l’éternel problème de la poule et de l’oeuf…


Du coup, face à une telle situation, un moyen est de reprendre un bon vieux Gentoo. Pour rappel, Sabayon est une distribution basée sur gentoo, mais avec un gestionnaire de paquets pré-compilés  Il faut donc graver (ou faire un USB bootable) d’un SysRescueCD, ou d’un autre CD gentoo de votre choix qui prenne en charge les supports EFI.

Puis on boot à partir du SysRescueCD. On peut alors partitionner le disque en trois parties : une partition vfat EFI de 200Mo, une partition root – et tout le reste, et une partition /home. La partition EFI est à monter en /mnt/gentoo/boot/efi, et dedans, créer un dossier EFI.

À présent, il est temps de configurer et compiler le noyau. Attention, assurez-vous d’avoir activé le support EFI Stub. Préconfigurez les paramètres de boot dans le kernel, assurez-vous de ne pas avoir oublié de module indispensable au démarrage. De cette façon, vous n’aurez pas besoin de vous soucier d’un initrd.

Faites un Build, puis Install du kernel.

# make && make modules_install

Puis copiez / boot/vmlinuz- * dans / boot / efi / EFI / kernel.efi – assurez-vous de lui donner un suffixe efi sinon il ne fonctionnera pas. Le nom que vous utilisez actuellement n’est pas vraiment important et vous ne l’utiliserez qu’une seule fois.

# cp arch/x86/boot/vmlinuz-* /boot/efi/EFI/kernel.efi

Maintenant, vous avez besoin d’un shell EFI. Le wiki Gentoo a un lien pour le téléchargement du fichier, il suffit de le mettre dans la racine de la clé USB SysRescueCD. Ensuite, vous pouvez choisir de démarrer à partir de l’écran « BIOS » de configuration, qui est ce que vous obtiendrez après un redémarrage.

À ce stade, il vous suffit d’exécuter la base du noyau : FS1:\EFI\kernel.efi sera suffisant pour qu’il puisse démarrer. Après le boot terminé, vous êtes maintenant dans un noyau opérationnel EFI, booté en mode EFI. Et la seule chose qui vous reste à faire est

grub-install –efi-directory=/boot/grub/efi

Et… vous y êtes !

Lorsque vous redémarrez, grub2 démarre en mode EFI, boot votre kernel, et continue avec celui-ci. Plutôt simple, pas vrai ?

ga3lig


Portage, le côté obscure de Gentoo.

Salut les ruminants, et le bonjour à Larry.

Dans un précédent billet, j’avais présenté succintement Gentoo, et ses nombreuses qualités. Mais Gentoo n’est rien, sans son mythique gestionnaire de paquets, Portage.

Portage est le gestionnaire de paquets de Gentoo. Tout comme on a APT (Advanced Packaging Tool) pour debian and co, Yum (Yellow dog Updater Modified) pour Fedora, Pacman pour Archlinux, et bien d’autres encore.

Au lieu d’utiliser des fichiers binaires déjà compilés comme tous les autre gestionnaires, Portage est un arbre composé d’ebuilds, petits fichiers servant à compiler et installer les sources de tout de que vous voudrez mettre dans votre distribution.

La puissance de gentoo réside dans la compilation des sources, et c’est précisément la puissance de portage : Au lieu d’installer des paquets et leurs dépendances a posteriori, les dépendances entre paquets sont fixées avant la compilation. Le compilateur en tient donc compte, lors de la compilation, ce qui n’est pas possible avec des binaires.

Comme son nom ne l’indique absolument pas, la commande liée à portage (comme le apt-get pour apt) est… émerge, émerge est la commande par laquelle on met à jour la liste de sources, on compile et installe installe les mises à jour, les nouveaux paquets…

L’utilitaire émerge s’appuie pour choisir les sources et surtout lors de la compilation sur les choix de l’utilisateur (vous), par des variables d’environnement passées en paramètres. Et toute la subtilité réside dans le choix de celles-ci.

Les paramètres principaux sont les CFLAGS et les CXXFLAGS, qui servent à ajouter des paramètres dans la ligne de commande lors de l’appel du compilateur en C et en C++ respectivement.

Les autres paramètres, en non des moindres, sont les USE flags, paramètres lors de la compilation des programmes. Cela permet de choisir les options et à optimiser notre futur installateur, en indiquant quoi prendre en charge (interface graphique, supports matériels, etc). C’est dans le choix de ces USE flags que la puissance de Gentoo se révèle. Dans un binaire classique compilé pour toutes les machines, on va inclure un maximum d’options. Ici, on inclut uniquement celles que l’on veut, qui sont en général celles de notre système.

Après la compilation, l’installation sera aussi rapide, et en général plus rapide que pour un système classique de binaires précompilés, car le binaire compilé est plus léger (il comprend moins d’options).
Ces choix sont la puissance de gentoo et révèlent la faiblesse de l’utilisateur : On peut effectivement choisir d’inclure toutes les options, notre système fonctionnera, mais il sera comme un autre, aussi lourd. Et on aura perdu du temps à tout compiler.

Parce que c’est ici que le bât blesse : 

Dans un système de binaires précompilés, on n’a pas à compiler ses paquets (C’est bête à dire, mais il faut le rappeler). Donc on a un gain de temps au moment de l’ajout d’un programme, vu qu’on ne fait qu’installer le binaire. Sous Gentoo, on prends les sources, on compile, puis on installe. Et suivant la manière dont est fait le programme, la compilation peut prendre un temps… considérable.

Je prendrais deux exemples, emblématiques à mes yeux : Opéra et Chromium. J’ai installé les deux sur ma machine, et les deux fonctionnent parfaitement. Les deux s’installent aussi vite également, et plus vite qu’avec des binaires classiques. Par contre, la manière dont ils sont faits fait que leur durée de compilation est différente.

Pour Opéra, qui est lié à plein de paquets et qui s’intègre comme une « petite brique » parmi les autres, je mets quelques minutes à compiler le programme.Pour compiler Chromium, qui doit intégrer dans ses sources tous les autres paquets dont il dépend lors de sa compilation, il me faut 3 à 8 heures. Et quand on connaît le nombre de mises à jour de Chromium par semaine, ça devient vite fatiguant de laisser tourner le PC les journées et les nuits pour compiler chaque foutue nouvelle mise à jour.

Pour info, j’ai un PC qui date d’il y a 6 ans, avec un processeur Intel Celeron double coeur cadencé à 2.7Ghz, 2Go de RAM, et 4Go de Swap (sur un HD comprenant 8Go de SSD). Ce qui n’est pas une config exceptionnelle, mais qui permet de compiler sereinement. Gentoo s’adapte à de bien plus gros systèmes (PC de jeux) comme à de bien plus petits systèmes (smartphones).

Le reproche qui est souvent fait à Gentoo, et à juste titre dans le cas de Chromium, c’est que la compilation avant l’installation permet de faire gagner du temps lors du lancement des programmes et de leur utilisation, mais il faut mettre en parallèle les secondes ou minutes gagnées avec le temps perdu précédemment en compilation. Gagner 15s lors de chaque lancement de Gimp vaut-il la perte de 20 minutes de compilation à chaque mise à jour…

C’est à voir. Suivant les programmes utilisés et leur fréquence mise à jour, on perd plus ou moins de temps en compilation, et on en gagne lors de l’utilisation de ceux-ci.

Parlons un peu technique à présent :

Pour paramétrer tout les flags, il vous faudra aller dans le fichier /etc/make.conf pour inscrire vos CFLAGS et CXXFLAGS. Il est aussi possible d’y mettre toutes les autres options USE et autres, mais ça devient vite le bazar.

Donc tout utilisateur de Gentoo prendra soin d’écrire ses autre paramètres tels que :

  • USE flags dans /etc/portage/package.use
  • Keyword dans /etc/portage/package.accept_keywords (oui, parfois il faut déclarer des mots clés en complément, mais je ne m’étendrais pas sur ce sujet)
  • Licences dans /etc/portage/package.license (dans le cas où l’on utilise des logiciels ayant des licences propriétaire, même s’ils publient tout ou partie de leurs sources)
Et les commandes de base sont :

emerge –sync (pour mettre à jour la liste des sources)

emerge –update  –newuse –deep @world (pour mettre à jour le système)

emerge –depclean (pour supprimer les dépendances devenues inutiles)

revdep-rebuild pour reconstruire les dépendances cassées

/!\ AVANT de faire emerge –depclean, il faut toujours mettre à jour son système. /!\

C’est d’ailleurs explicitement dit dans le manuel ici. Et après avoir executé cette commande, il est très très fortement conseillé de faire un redep-rebuild pour revérifier l’arborescence des paquets.

Revdep-rebuild est un outil pratique, qui en cas de librairie manquante suite à la suppression d’un paquet, recompilera uniquement la librairie pour la réintégrer dans votre système, au lieu de réinstaller le paquet en entier. Ainsi, le système reste le plus léger possible.

Tout ça pour vous donner un tout petit aperçu de portage, qui constitue le coeur de Gentoo (après son kernel), et qui fait toute sa force.

ga3lig

Gentoo, un retour aux sources.

Salut les ruminants, et le bonjour à Larry.

If it moves, compile it.
Pour votre gouverne, Larry est la pauvre vache en train de se faire enlever par le g de gentoo

Il existe un grand nombre de distributions sur linux. Parlons d’une peu connue, et qui pourtant mériterai de l’être beaucoup plus : Gentoo

Gentoo est une distribution qui vous demandera beaucoup, mais qui vous apportera encore plus !

Le principe de base de Gentoo, c’est de compiler sois-même les sources des paquets et du noyau, pour une optimisation maximale de votre système d’exploitation.

La première chose à savoir à propos de Gentoo, c’est que que la distribution est extrêmement bien documentée, et que n’importe qui, novice ou non, peut l’installer sur son PC en suivant le manuel à la lettre. Certes, un utilisateur expérimenté mettra une à deux heure (hors compilation) à tout réinstaller, et un novice mettra… beaucoup plus de temps.

La première chose à faire pour commencer à appréhender gentoo, c’est le lire le guide, disponible ici en français, et en anglais.
Gentoo est très bien documenté en français, et vu la taille des manuels et des guides, ça peut sembler surprenant qu’il y en ai autant de traduits de l’anglais au français. En vérité, ça montre à quel point la communauté est soucieuse de rester accessible.

Pour passer sous Gentoo, il vous faudra aussi faire quelques recherches, mais relativement peu, les guides sont très complets. Il vous faudra surtout apprendre beaucoup !

Le principal atout de Gentoo est de pouvoir construire le système tel qu’on le rêve, et parfaitement adapté et optimisé pour son matériel.

Avec les autres distributions, construites et compilées pour être génériques, vous pourrez parvenir au prix de beaucoup d’efforts au degré de personnalisation souhaité, mais rarement au même degré d’optimisation. De plus, vous ne saurez jamais quelles options auront été implémentées ou non lors de la compilation. Options dont vous n’avez peut-être que faire, et qui alourdissent votre système !

Gentoo prends du temps à installer, parce que vous devez construire tout depuis les sources, et qu’il sera construit pour votre matériel.

L’autre partie du temps consacré à l’installation dépendra de la puissance de votre machine lors de la compilation des sources. Cela peut aussi bien aller vite que prendre un temps considérable. (Mes propres essais varient de 20 minutes à… une cinquantaine d’heures, d’où l’optimisation nécessaire lors du choix des options)

Le premier guide de gentoo vous permettra d’installer le système de base. Chaque guide est disponible en trois versions :

Le Manuel Gentoo : un chapitre par page, idéal pour une lecture en ligne. x86, amd64
Le Manuel Gentoo sur une seule page. x86, amd64
Le Manuel Gentoo : version imprimable. x86, amd64

Des guides pour beaucoup d’autres architectures sont disponibles

Vous découvrirez alors qu’un système d’exploitation est bien peu de chose en vérité. Suite à cela, il vous faudra suivre celui-ci pour installer le serveur X, vérifier le bon fonctionnement des cartes nVidia et ATI et enfin choisir votre environnement de bureau. À ce moment, il faudra choisir entre les guides pour gnome, kde, xfce, openbox, fluxbox et bien d’autres. Bien évidemment, si vous ne voulez pas d’environnement de bureau, n’installez pas de serveur X ni ce qui suit :)

Quelques règles à respecter durant l’installation sont toutefois primordiales :

  •  Lire entièrement la doc, et la suivre ! Ne croyez pas pouvoir sauter de passages, il vous manquera alors des morceaux et ça coincera plus tard.
  •  Réfléchissez ! aux système que vous voulez, et à votre manière d’utiliser votre système d’exploitation (cette remarque s’applique d’ailleurs dans de nombreux autres domaines, et s’applique aussi avant de choisir tout système d’exploitation ou logiciel)
  •  En cas de problème… la solution est soit dans un des guides (l’immense majorité des cas), soit dans le wiki (dans quelques cas), soit dans les forums. Si vous tombez vraiment sur un problème non rencontré jusqu’alors, vous pouvez proposer un nouveau sujet sur le forum, et si le problème n’a pas été résolu entre temps.

Admettons que je vous ai convaincus et que vous voulez essayer Gentoo…

Il vous faudra alors un CD ou un DVD d’installation, pour partir d’un système de base, afin de compiler votre noyau, et l’installer. En somme, afin de créer votre première brique. Les autres viendront ensuite s’y greffer, toujours en fonction de votre système et de vos choix.

J’espère vous avoir donné envie d’essayer et d’adopter ce système, qui se greffe et s’adapte littéralement à votre système et à vos envies !

Larry

ga3lig

source image1 source image 2