Genkernel/fr

est un outil créé par Gentoo utilisé pour automatiser le processus de compilation du noyau et du système de fichiers virtuel de démarrage (initramfs). Parmi les fonctionnalités, on peut citer :


 * Configurer les sources du noyau
 * Compiler le noyau, le compresser, et le copier dans.
 * Créer un système de fichiers virtuels de démarrage (initramfs) dans.
 * Créer les liens symboliques dans.
 * Ajouter du contenu personnalisé dans le fichier initramfs comme les fichiers spécifiques à l’encryption, une image pour l'écran de chargement, des modules supplémentaires, et plus encore.
 * Compresser le fichier initramfs.
 * Configure le système d'amorçage pour démarrer sur le nouveau noyau et fichier initramfs.

Emerge
Procéder à l'installation du paquet genkernel :

Utilisation
La forme générale de l'invocation de genkernel est la suivante :

Options
Le comportement réel de genkernel dépend d'une grande variété d'options, dont la majorité peut être activée/désactivée dans le fichier ou passée avec la commande. Les options passées en ligne de commande prévalent sur celles définies dans. Le fichier de configuration est très bien documenté, cependant les options les plus courantes seront vues dans cet article. Le but est pour le lecteur d'être familier avec les invocations courantes de genkernel. Pour une information plus complète, se reporter aux commentaires du fichier ou à la sortie de la commande.

Options agissant sur l'interactivité de l'utilisateur
Les options de configuration listées ci-dessous aident l'utilisateur à décider comment interagir avec le processus de configuration. L'utilisateur peut même décider si le fichier de configuration sera sauvegardé. Les options suivantes sont les options de configuration de premier ordre :

Options agissant sur le système résultant
Les options définies ici définissent quelles fonctionnalités, seront, ou ne seront pas, incluses dans le noyau et le système de fichiers virtuel de démarrage résultants.

Options agissant sur le choix des outils utilisés pour la compilation
Les options suivantes sont prises en charge par genkernel, et sont passées aux applications concernées lors de la compilation et de l'assemblage du noyau. Ces options influent sur le choix des outils utilisés pendant le processus de compilation, quoi qu'à un niveau assez bas.

Options agissant sur le processus de compilation
Les options suivantes ont généralement un effet lors de la compilation réelle.

Options de débogage
L'utilisation d'options de débogage pendant la compilation du noyau contrôle le nombre d'informations reportées, ainsi que la présentation de celles-ci.

Actions
The action passed on the command line with the tells genkernel what action to perform. The following actions are supported:

Démarrer
Bien qu'il y ait plusieurs façons de lancer genkernel, la plus simple reste. Une configuration générique qui marche correctement pour tous les systèmes sera alors utilisée. Comme mentionné précédemment, cette méthode n'est pas sans inconvénients. La plupart des modules compilés ne seront pas utilisés et la compilation prendra beaucoup de temps. L'illustration suivante montre une approche plus efficace, en passant certains paramètres à genkernel en tant qu'utilisateur root:

Cette opération indique à genkernel de créer un noyau avec un écran de démarrage en tampon de trames (framebuffer) qui devra être installé à la main. Dans la phase préparatoire de compilation, genkernel n'effacera pas les objets déjà compilés. Enfin, un menu de configuration sera affiché, permettant à l'utilisateur de choisir quels modules seront compilés.

Remplacer  par   pour qu'il installe automatiquement le nouveau noyau dans  et spécifier   pour qu'il crée les liens symboliques. En utilisant le paramètre -- , la partition  sera montée par genkernel automatiquement, si nécessaire.

Changer le noyau
La première chose à faire est d'autoriser le lancement de dans le fichier  :

Gestion des fichiers
Quand il utilise genkernel, l'utilisateur doit être conscient de quelques aspects concernant la gestion des fichiers de configuration et des fichiers image du noyau, ainsi que de la façon dont les sources du noyau sont manipulées par le système.

Fichiers sources
Après une commande ,, chaque fois que de nouvelles sources sont disponibles, un nouveau répertoire est créé pour les sources du noyau dans  pour les héberger. Normalement, le dossier des sources actives est pointé par le lien symbolique.

Le répertoire pourrait ressembler à ceci :

Le lien symbolique peut être changé de différentes manières.


 * Si l'option  de la variable USE est définie le lien symbolique  est automatiquement mis à jour pour pointer sur les nouvelles sources installées par la commande.


 * Si l'option de la variable USE  n'est pas définie, l'utilisateur peut changer la destination du lien symbolique en utilisant la commande  suivie de la commande.

genkernel utilisera toujours (exclusivement) les sources pointées par le lien symbolique.

Fichiers de configuration du noyau
Si une compilation du noyau a déjà été faite à partir des sources actives du noyau, il devrait y avoir un fichier dans le dossier qui contient la configuration du noyau qui a été appliquée lors de la création de la dernière bzimage du noyau. Ce fichier est nommé par exemple ; nom dans lequel il faut remplacer   par l'architecture du système,   par la version des sources utilisées et   par le numéro de divulgation des sources.

C'est ce fichier qui est utilisé comme point de départ de la configuration lorsque  est lancé.

Si c'est la première fois que genkernel est exécuté avec les nouvelles sources du noyau, ou si la précédente configuration n'a pas été sauvegardée, ce fichier est remplacé par une configuration par défaut qui réside dans (nom dans lequel x86_64 doit être remplacé par l'architecture réelle).

Sauvegarder la configuration compilée
Si l'option  de genkernel est activée, soit depuis la ligne de commande, soit dans , la configuration compilée du noyau est sauvegardée (avec le nom donné ci-dessus) dans le dossier. En même temps, la configuration est sauvegardée dans le fichier  dans le dossier   mais ce n'est pas ce fichier qui est réutilisé lors de la prochaine exécution de.

Installer le noyau et le disque virtuel de démarrage dans le dossier
Spécifier l'option  lors de l'invocation de genkernel, demandera à genkernel d'installer les images du noyau et du système de fichiers virtuel de démarrage (initramfs) dans le dossier. Afin d'exécuter  d'une manière appropriée, définir ce qui suit dans le fichier  :


 * Le premier paramètre parle de lui-même.


 * Le second paramètre dit à genkernel de sauvegarder la configuration du noyau compilé dans.


 * The last two options tell genkernel to automatically update the grub configuration. In practice, the following happens:
 * If a previous kernel image with the same name already exist, it is renamed by appending to its name. A symlink  is automatically created that points to it.
 * The new kernel takes the place of any kernel with the same name into . If it is the first time a kernel is compiled, a symlink kernel is automatically created that points to the new kernel.

After running, the directory might look like this:

Configurer le chargeur de démarrage
Les liens symboliques présentées plus haut peuvent être utilisés pour configurer le chargeur de démarrage, de telle manière que même si le nouveau noyau n'est pas amorçable, l'utilisateur puisse toujours redémarrer sur l'ancien.

To allow the kernel and intird provided by genkernel to run correctly, provide a minimum information in bootloader's configuration file:


 * Add  to the kernel parameters passed to the kernel image, where  points to the root partition (  is the number of the partition if a partition exists).
 * If splash is used, add a suitable mode line such as  to the parameters passed to the kernel and also add   or   depending on the verboseness required through the boot process.
 * Add the initrd information as required by the bootloader. Consult the Bootloader Configuration Chapter of the Gentoo Handbook for details on how to make the bootloader initrd-aware.

Voici à quoi le fichier  pourrait ressembler.

Preserving the working files
L'application genkernel sauvegarde automatiquement les changements des fichiers. Si les changements précédents doivent être sauvegardés, les actions suivantes sont à envisager.


 * The first file to preserve is the kernel configuration file in If the source has not changed prior to the recompilation of the kernel, the previously used name for this file will be used. So copying the previous configuration file under a different name helps in preserving the information while keeping the file available as a starting point for a new configuration.


 * The second important thing is to preserve the already bootable kernel and initramfs images. The way to accomplish this depends on the context:
 * If the last kernel compiled is bootable, running will rename this kernel (and similarly initramfs) image to  and create a new . This mean that even if the new kernel is not bootable, users will always be able to boot the old one.
 * If the last kernel compiled is not bootable and sources haven't changed since the user compiled a bootable one, prior to running, first delete the new kernel image and remove the suffix from the last bootable one. Without this, if the newly compiled kernel is not bootable for the second time, the bootable  will be kicked out by the renaming of the non bootable , giving the user an unbootable system. Use the same reasoning for initramfs.

Using previous kernel configuration while changing the sources
The previous configuration can be used through the MENUCONFIG variable in as follows:

From an installation CD
The utility can build kernel and initrd images that provide support for network booting, or netbooting. With any luck, users should be able to netboot any recent computer into the environment provided by the Installation CD.

La magie de la chose réside dans le script linuxrc de genkernel : il va essayer de monter le CD-ROM d'installation par NFS via le réseau. Partant de là, les scripts d'initialisation du CD-ROM d'installation seront utilisés comme si le CD était présent en local.

Building the kernel and initramfs with netboot support
Pour activer le support du démarrage par le réseau, activez les options suivantes lors de la configuration du noyau :

First, the kernel image must include the drivers for the system's Network Interface Cards (NIC). Normally, drivers for such devices will be compiled as modules. However, it is essential (for netbooting) that such drivers are compiled directly into the kernel image and not as modules.

Ensuite, nous vous suggérons d'activer IP: kernel level autoconfiguration et IP: DHCP support. Cela évitera une couche supplémentaire de complexité si l'adresse IP et le chemin NFS du CD-ROM d'installation peuvent être spécifiés par un serveur DHCP. Bien sûr, cela signifie que la ligne de commande d'appel du noyau sera la même pour toutes les machines.

Ces options indiquent au noyau d'envoyer une requête DHCP au démarrage.

Additionally, enable SquashFS because most modern Gentoo Installation CDs require it. Support for SquashFS is not included with the generic kernel source tree. To enable SquashFS, apply the necessary patches to the generic kernel source or install gentoo-sources.

Une fois que le processus de compilation est terminé, créez une archive compressée (.tar.gz) qui contient les modules du noyau. Cette étape n'est nécessaire que si la version de votre noyau ne correspond pas à la version de l'image située sur le CD-ROM d'installation.

Pour créer une archive contenant tous les modules :

Selon votre méthode de démarrage par le réseau, vous devrez exécuter certaines des étapes suivantes :

Créer une image etherboot.

To create an OpenBoot/SPARC64 TFTP image:

Le fichier est l'image à démarrer.

Finally, copy this kernel to the TFTP server. The details are architecture-dependent and are beyond the scope of this guide. Please refer to the documentation for the specific platform of interest.

NFS setup
Pour mettre en place un partage NFS qui contient le CD-ROM d'installation, utilisez un périphérique de bouclage (loop device) pour y monter l'image ISO et copiez le contenu du CD dans le partage NFS. En bonus, le script initrd de genkernel désarchivera tous les fichiers .tar.gz situés dans le répertoire. Tout ce qu'il vous reste à faire est de copier votre archive  dans le répertoire.

En supposant que  soit un partage NFS.

Copiez dans

DHCP setup
The netboot images will ask the DHCP server on the network for an IP as well as a  option. Both can be specified per host using a MAC address to identify machines:

Netbooting instructions
Le démarrage par le réseau est encore une fois très spécifique à la plate-forme utilisée. Ce qui est important, c'est de spécifier les paramètres   et   sur la ligne de commande du noyau. Cela activera la carte réseau et montera le CD-ROM d'installation via NFS. Voici quelques astuces pour certaines plates-formes :

For etherboot, insert the etherboot disk into the drive and reboot. The kernel command line was specified when the image was constructed. With Sparc64, press + at the boot prompt and then enter:

For PXE, Configurez pxelinux (qui fait partie de syslinux), puis créez un fichier qui contient ces lignes:

Introduction
Si vous avez installé un disque virtuel initial (initramfs) avec genkernel, vous devriez assurément regarder les options diverses et variées de boot que vous pouvez (ou devez) définir dans la configuration de votre chargeur de démarrage. Les plus courantes sont citées ici pour référence.

Loading LVM or software-RAID
If the system uses LVM or software-RAID, the initramfs has to be built using the  and   options. Do not forget to enable support during boot as well. This can be done using the dolvm and domdadm options.

Booting in single-user mode
Si, pour une raison ou une autre, le démarrage échoue, récupérer le système en démarrant le mode utilisateur unique reste possible. Ceci ne chargera que les services réellement nécessaires et offrira à l'utilisateur un shell de récuppration root.

compile failed: Kernel not found
This failure can be experienced when attempting to compile a kernel for one architecture with a kernel file that has a target of a different architecture than the target. This could be as simple as a machine running an kernel attempting to compile for a  target.

This can be experienced when booting from a x86_64 LiveCD on a system that is capable of operating in 64-bits, however the target to be installed or repaired is 32-bits. After the compilation process begins, will attempt to automatically detect the architecture for the target based on the currently running kernel. If the currently running kernel is 64-bit, then, unless it is told otherwise, will presume it should be looking for a 64-bit kernel.

Suppose then that the kernel's file has x64 disabled. The command will execute and the resulting kernel binary will be placed in the associated  directory. When goes to install (move and rename) the kernel it cannot find the kernel because it expected a 64-bit kernel.

The solution to this failure is to set 's  option to, in this case, the  architecture. The final command could look like this:

To override the architecture choice permanently, modify the ARCH_OVERRIDE variable in the file.