Debian

Grains personnalisés dans Ubuntu / Debian - comment, quand et pourquoi

Grains personnalisés dans Ubuntu / Debian - comment, quand et pourquoi

. Si vous essayez cela comme un passe-temps, ou parce que vous voulez apprendre très bien une nouvelle compétence - lisez la suite.

Cependant, avant de commencer, nous essaierons d'expliquer les situations lorsque cela se pose et comment y faire face. Notez qu'il s'agit d'un sujet étendu qui a besoin de beaucoup plus en termes d'espace que nous ne le fournirons ici. Vous apprendrez les bases, ce dont vous avez besoin, que faire et ce que vous réaliserez.

Pour plus d'informations, comme d'habitude, Google est votre ami; De plus, la documentation résidant dans l'arbre source du noyau répondra à de nombreuses questions. Alors, commençons par le début, avec une dernière note: si besoin se produit, nous publierons plus d'articles liés à la compilation du noyau concernant d'autres distros.

Quand vous aurez besoin de compiler votre propre noyau

.g. Debian Stable, Centos), parce que votre noyau ne prend pas en charge une fonctionnalité / pilote dont vous avez besoin, ou simplement parce que vous sentez que vous voulez essayer le dernier et le meilleur.

Un avertissement, cependant: Si vous voulez exécuter un noyau de saignement, assurez-vous qu'il sera compatible avec d'autres composants clés de votre système (comme GLIBC), n'oubliez pas que plus récent signifie moins de tests et (probablement) plus d'instabilité; Les agents de noyau de votre distribution font généralement du bon travail en rétablissement de nouvelles fonctionnalités aux noyaux plus anciens et plus stables, alors assurez-vous que vous avez vraiment besoin de saignement. Notre conseil n'est pas d'utiliser ces noyaux (les grains à long terme feraient une exception ici) sur les systèmes de production. Comme dit, faites confiance aux mainteneurs de votre distribution.

La deuxième situation est que vous sentez que vous utilisez un noyau gonflé, avec beaucoup de composants inutiles. Alors que le noyau ne charge que des modules correspondant à un matériel existant, une empreinte mémoire plus petite du noyau aide généralement à la vitesse et au démarrage.

# lspci -vv # lsusb # hwinfo # cat / proc / cpuinfo 

Les commandes ci-dessus vous aident à mieux connaître votre matériel. Notez ce que vous avez trouvé et assurez-vous d'exécuter les commandes LS * ci-dessus comme racine, pour plus d'informations.

Une autre situation serait que vous voudrez aider à tester le noyau en exécutant les dernières dernières. Les mêmes avertissements que ci-dessus s'appliquent: faites-le sur les systèmes de test, restez en contact avec en amont au cas où vous trouverez un bug (LKML.L'organisation est la liste de diffusion principale du noyau - un trafic élevé) et essayez d'être aussi utile que possible lorsqu'on lui a demandé des informations.Cela ne peut pas être suffisamment stressé: lisez la documentation, soit parce que vous vous trouvez dans une situation désagréable, que vous souhaitez signaler un bug ou simplement avoir des questions.

Ensuite, vous voudrez peut-être être l'enfant cool sur le bloc et exécuter le dernier et le meilleur, peut-être en jetant un coup d'œil à la source (à condition que vous soyez dans ceci et que vous avez des connaissances C et ASM) et même soumettre des correctifs. Vous voudrez peut-être regarder d'abord si votre distribution n'offre pas déjà un package de noyau plus récent, par exemple, vous pouvez installer les noyaux de Debian Experimental sur un système de test, si vous modifiez vos sources.Liste en conséquence. Encore une fois, travaillez avec les responsables si vous tombez sur un bug.

Terminologie

Avant de plonger davantage dans ce sujet quelque peu arcanique, nous devons clairement dire clairement des termes de base; Ceci est essentiel pour comprendre les parties clés des tests et de la compilation du noyau.

Veuillez noter que chaque fois que vous voyez une commande dans ce document en commençant par l'invite '$' Cela signifie que la commande devra être exécutée comme un utilisateur normal et quotidien; Chaque fois que vous voyez le '#' Invite, cela signifie que la commande doit être exécutée comme racine (nous utilisons sudo, mais ce n'est pas obligatoire). Le répertoire actuel, sauf indication contraire, est celui qui maintient votre arbre source, dans ce cas, Linux-2.6.

Ce que vous devez installer

Obtenir la source du noyau

Si vous souhaitez installer la source à partir de votre distribution, utilisez

# apt-get install linux-sourcece-

où peut être rassemblé de l'émission:

uname -r 

Utilisez-le si vous souhaitez modifier votre noyau existant (ajout de conducteurs, tailleur, etc. ). Sinon, tu veux le noyau de vanille. Vous pouvez l'obtenir à partir de www.noyau.org (nous suggérons WGET ou CURL ici en tant que gestionnaires de téléchargement) ou, si vous voulez le dernier, vous utiliserez Git. Nous vous recommandons de stocker la source dans le répertoire personnel de votre utilisateur et la commande pour obtenir le dernier arbre principal est (voir Man Git):

$ git clone git: // git.noyau.org / pub / scm / linux / noyau / git / torvalds / linux-2.6.git linux-2.6 

Dans le passé, nous avons trouvé le mini-Howto à http: // Linux.yyz.États-Unis / Git-Howto.HTML pour être utile; Découvrez également KernelNewbies.org . La commande ci-dessus créera un dossier dans votre répertoire actuel nommé Linux-2.6, qui peut être mis à jour plus tard par CD à lui et en émettant un simple

faire propre; tirage git 

Maintenant, après avoir la source, nous devrons configurer le noyau .

Configuration et construction

Si vous avez un existant .Fichier de configuration (le fichier qui contient les options de construction du noyau - ce qui se passe et ce qui ne le fait pas), copiez-le dans Linux-2.6 (From / boot / config- or / proc / config.GZ - la configuration actuelle). Si vous ne souhaitez pas modifier le .config, il suffit de problème

$ make oldconfig 

Sinon, lisez la suite. Si vous souhaitez modifier la configuration existante, émettez

$ faire menuconfig 

(Recommandation: vous pouvez utiliser Make Config pour de nombreuses questions sur les options dans le noyau, ou faire XConfig, qui nécessite des bibliothèques QT, pour un menu plus agréable et graphique), et sélectionnez «Chargez un fichier de configuration alternatif» et appuyez sur Entrée .config, le nom par défaut du fichier de configuration, ou saisissez un autre nom de fichier déjà enregistré dans Linux-2.6.

Après cela, commencez à parcourir les menus pour faire des modifications nécessaires à la règle de base ici est «Si vous ne savez pas ce que c'est, ne le plaisante pas», du moins jusqu'à ce que vous ayez une expérience. À la fin, dans le menu supérieur, sélectionnez «Enregistrer un fichier de configuration alternatif», appuyez sur Entrée pour le nom par défaut (.config - recommandé) puis «sortir» d'en bas. Si vous voulez commencer à zéro, oubliez l'étape «Chargez un fichier de configuration alternatif» et continuez. Lors de votre prochaine compilation du noyau, après avoir nettoyé et mis à jour l'arborescence, utilisez `` Making OldConfig 'comme ci-dessus pour utiliser l'ancienne configuration. Ok, maintenant nous avons la configuration adaptée à nos besoins qui attend juste pour être construite. La construction d'un noyau est aussi simple que de la configurer (!). Just Type Kak et la sortie devrait ressembler ci-dessous:

$ faire des scripts hostcc / Basic / fixdep hostcc scripts / kconfig / confre.o scripts expédiés / kconfig / zconf.languette.c Scripts expédiés / kconfig / zconf.lex.c Scripts expédiés / kconfig / zconf.hacher.c hostcc scripts / kconfig / zconf.languette.o hostld scripts / kconfig / conf chk include / linux / version.h upd include / linux / version.h chk incluent / généré / utsrelease.h upd inclut / généré / utsrelease.H CC Noyau / limites.S Gen Inclut / généré / Bounds.H CC Arch / x86 / Kernel / ASM-Offsets.s… 

Et, après un certain temps, selon la configuration de votre machine et du noyau, cela sera fait. Si vous voulez accélérer un peu les choses, utilisez le drapeau -jn pour faire, où n est le nombre de processeurs / cœurs + 1. Soyez prudent cependant, cela peut exposer des bogues dans le noyau ou construire une infrastructure, donc si quelque chose ne va pas, essayez à nouveau en utilisant simplement la marque sans drapeau. Si après avoir lu le manuel du GCC (et si vous êtes toujours sain d'esprit), vous vous sentez aventureux et souhaitez modifier certains indicateurs spécifiques au matériel ou vous sentez que l'optimisation du code, utilisez la page manuelle de Make pour savoir comment (principalement les coptes et les CFLAGS ). Cependant, les optimisations plus grandes que -O2 sont risquées.

Soyez prudent et attendez-vous à une rupture, le noyau peut se compiler sans problème, mais il peut agir bizarre. N'oubliez pas de taper toutes les commandes comme utilisateur normal. Pas besoin de construire en tant que racine et les développeurs du noyau froncent les sourcils sur l'idée.

Installation

Installons maintenant les modules: cela doit être fait en tant que racine, car les modules sont installés dans / lib, et l'utilisateur normal n'a pas d'accès en écriture là-bas. Donc,

# faire modules_install 

fait exactement cela, et cela doit être fait avant d'installer le noyau afin que les modules et le noyau installé soient synchronisés. Utiliser

# faire l'installation 

Pour installer le noyau sur / démarrer, puis

# depmod 

et se préparer à créer un INITRAMFS (Système de fichiers RAM initial), qui est un système de fichiers temporaire chargé en RAM dans les premières étapes de démarrage, et est utilisé pour fournir des pilotes de base et d'autres installations afin que le système de fichiers racine soit monté. Plus d'informations peuvent être trouvées dans la page Initrd de Wikipedia. La commande nécessaire pour la tâche est la mise à jour-Initramfs (ceci est également invoqué chaque fois qu'un nouveau noyau est installé, déclenché par le gestionnaire de packages) qui peut créer un initRamfs (-c) ou mettre à jour un existant (-u) . La commande complète est

# Update-Initramfs -C -K 

La version est celle que vous verrez après les finitions «Making modules_install» (la dernière ligne de sa sortie sera «Depmod»).Si vous souhaitez avoir le numéro de version exact et plus long, afin que vous puissiez dire aux développeurs quel «moment git» que vous avez utilisé, sélectionnez «Configuration générale» → «Ajouter automatiquement les informations de version à la chaîne de version» après avoir émis Menuconfig. La sortie sur mon système Ubuntu ressemble à ainsi de suite:

Mise à jour-Initramfs: génération / démarrage / initrd.IMG-3.1.0-RC3 +… 

Mettez à jour votre plan pour que cela remarque votre nouveau noyau avec

# Update-Grub 

Sur ma machine de test Debian, la sortie ressemble à ceci:

Générer de la planche.CFG… Image d'arrière-plan trouvée: / usr / share / images / base de bureau / bourse de bureau.PNG Found Linux Image: / boot / vmLinUz-3.0.0-1-AMD64 Found initrd image: / boot / initrd.IMG-3.0.0-1-amd64 Found Linux Image: / boot / vmLinUz-3.0.0-RC6-AMD64 Found initrd image: / boot / initrd.IMG-3.0.0-RC6-AMD64 Found Linux Image: / boot / vmLinUz-2.6.39-07727-gbd1bfe4 Found initrd image: / boot / initrd.img-2.6.39-07727-gbd1bfe4 Found Linux Image: / boot / vmLinUz-2.6.39-2-AMD64 Found initrd image: / boot / initrd.img-2.6.39-2-AMD64 Found Linux Image: / boot / vmLinUz-2.6.39-RC7-AMD64 Found initrd image: / boot / initrd.img-2.6.39-RC7-AMD64 Found Linux Image: / boot / vmLinUz-2.6.38.5 Found initrd image: / boot / initrd.img-2.6.38.5 Image Linux trouvée: / boot / vmlinuz-2.6.38.4-00001-GFAA8EE7 Found initrd image: / boot / initrd.img-2.6.38.4-00001-GFAA8EE7 Found Linux Image: / boot / vmLinUz-2.6.38.4 Found initrd Image: / boot / initrd.img-2.6.38.4 Found Linux Image: / boot / vmLinUz-2.6.38-2-AMD64 Found initrd image: / boot / initrd.img-2.6.38-2-AMD64 Found Linux Image: / boot / vmLinUz-2.6.32-5-AMD64 Found initrd image: / boot / initrd..6.32-5-AMD64 Found memtest86 + image: / memtest86+.Bin Found Memtest86 + Image multiboot: / memtest86 + _multiboot. 

Bien sûr, votre sortie ne sera pas exactement la même, mais le contour devrait être le même; Enfin, n'oubliez pas: si vous le souhaitez, modifiez / etc / par défaut / grub pour modifier certaines options avant la mise à jour et, avec les doigts croisés, redémarrez votre machine pour tester le nouveau noyau.

Si quelque chose ne va pas

Les situations les plus habituelles lorsque votre nouveau noyau est inutilisable est que vous ne pouvez pas le démarrer en premier lieu, ou qu'il bottise et qu'il n'a pas de pilote essentiel (par exemple les pilotes de réseautage). Habituellement, Update-Grub fait un bon travail en écrivant le fichier de menu Grub, mais vous voudrez peut-être le vérifier de toute façon. Si vous passez de la planche, il est probable que vous soyez trop zélé et que vous vous êtes épousé un pilote essentiel pour le système, comme les pièces liées au disque (ATA, SATA, SCSI…), ou peut-être NFS, si vous avez une racine montée sur NFS. Démarrez un noyau de travail et reconfigurez-le, en utilisant Google et d'autres sources possibles, comme l'IRC .

Il y a de fortes chances que quelqu'un tombe déjà sur votre problème dans le passé et vous avez des chances de trouver une réponse. Si le problème est plus sérieux et que vous êtes convaincu que vous lisez sur la netiquette et comment publier sur la liste de diffusion du noyau, demandez bien. Il y a beaucoup de gens gentils et serviables là-bas, mais ils ont tendance à ne pas être si nice lorsque vous n'avez pas fait vos devoirs et / ou perdre leur temps. Si vous avez un séparé / démarrage, gardez à l'esprit qu'il n'est généralement pas très grand et qu'il pourrait se remplir rapidement des grains. Aussi / lib / modules ont tendance à accumuler beaucoup d'espace dans /, alors assurez-vous de faire du nettoyage de temps en temps. N'oubliez pas que le noyau est un logiciel complexe et que de nombreuses causes peuvent être à l'origine de vos problèmes. Si vous n'avez eu aucun problème à suivre ce guide, vous êtes prêt pour une configuration de noyau Linux plus avancé.

Synchronisation de votre appareil photo avec PC en utilisant RSYNC
RSYNC peut être utilisé de plusieurs manières. Ce petit utilitaire a obtenu son nom de R Emote Sync Hronisation Words. Cependant, le mot télécommande ...
Page chmod- manuelle
Nom Chmod - Modifier les bits de mode de fichier Synopsis Chmod [Option]… Mode [, mode]… Fichier… Chmod [Option]… Fichier en mode octal… Chmod [Option...
Page manuelle cksum
Nom CKSUM - Vérification et comptez les octets dans un Synopsis de fichier CKSUM [Fichier]… CKSUM [OPTION] Description Imprimer CRC Checksum et Byte C...