Compilation noyau : vos conseils pour un kernel au top

[quote=“antalgeek”]

j’aime beaucoup cette idee, il y a quelques options que j’ai beaucoup explorées et si cette idée germe un jour je veux bien contribuer[/quote]
puisqu’il y a déjà deux candidats plus moi, je vais ouvrir un fil sur le sujet, ds un premier tps sur “pause café”.
Ds un avenir plus ou moins long, on pourra commencer à éditer qq chose de concret sur “trucs et astuces”, si ça prend forme.

3, si j’arrive à apporter qq lumières…

linux.developpez.com/guide/a12859.html

Ça ?

oui, c’est une copie de celui de Casteyde.
Et pourquoi, ns n’en ferions pas ns aussi une copie ? :laughing:
Je plaisante mais je pense que l’on peut encore “affiner” les réponses.
Enfin, à vs de voir, j’ai ouvert un fil en tête de gondole.

Bon, pour un noyau minimal 2/3 remarques:

  • peu de chance que la recompil accélère de plus d’une seconde le boot sur disque dur. Sur clé usb, sur cd, ou sur disquette, par contre, un noyau petit est préfèrable, et on peut gagner quelques secondes (peu) à le réduire. C’est surtout sur l’utilisation des ressources que ça peut jouer.
  • utilisez ccache pour accélèrer vos compils:
    debian-administration.org/articles/129
    le tuto n’est pas complet. Pour être parfait, il faut mettre export PATH=/usr/lib/ccache:$PATH dans le .profile (ou le .bashrc je ne sais jamais) de l’user qui fait les compils (en général, root). On peut vérifier qu’il utilise bien le ccache aprés une compilation en faisant ccache -s .
    Avec ccache, les temps de recompilation sont énormément raccourcis.
  • le “kernel panic” est lié en général à une seule chose: le noyau ne sait pas accèder à / .
    Si l’on écarte les erreurs de config fstab, cela veut dire qu’au moment du boot, il manque au noyau >le module de l’ide, du sata, ou autre qui gère le disque< ou/et >le module du format de la partition sur laquelle est / < (ceci étant, ext2 suffit pour booter sur une ext3)
    Donc, pour que le noyau boote, il faut que ces modules qui lui permettent d’accèder à / soit dispos >soit dans un initrd< (c’est l’option -initrd de make-kpkg) >soit en dur dans le noyau< .
    L’idéal pour se passer d’initrd est de démarrer avec un noyau debian standard, de noter les modules qui peuvent intervenir dans la chaine d’accés à /, de les mettre en dur, et de tester le boot sans initrd.
    Pour le reste, il peut y avoir des améliorations de performances - je crois - si on met en dur la carte réseau et les modules iptables qu’on souhaite utiliser, mais pour le reste des peripheriques, c’est kif kif.
  • pour épurer, il faut bien sûr désactiver tous les pilotes de matèriel qu’on a pas sur sa machine, et mettre en module tout ce qui concerne l’usb et éventuellement le pcmcia.
    Enfin voilà…

A noter, si on a oublié --initrd dans le make-kpkg, on peut génèrer ponctuellement l’initrd avec mkinitramfs (pour les derniers noyaux) ou mkinitrd (pour les récents), mais c’est juste pour essayer le noyau parcequ’aprés il faudra bien le recompiler avec --initrd, pour que le paquet dans /usr/src soit correct et soit reinstallable sans qu’on ait à recréer l’initrd.

Voilà, c’est exactement de ces explications que l’on a besoin mais quand on abordera la partie car d’ici là, on ne se souviendra pas forcément de ce qui est écrit ici aujourd’hui.
Je ne veux pas encore extrapoler mais il faudra procéder avec méthode, sinon ça sera le cafouillage et l’opération tombera vire à l’eau.
De ttes façons, Matt, on aura besoin de toi, que tu le veuilles ou non. :laughing:

Tu parle de .bash_profile (.profile c’était pour sh ou tcsh je crois) je pense et je crois que c’est chez lui qu’il est le mieux.

Il faudrait faire quelque chose de très structuré à l’image de ce dont on parle. Un tableau avec des parties correspondant aux sections/ss sections, chaque cellule correspondant à une option du noyau (avec le lien accédant à notre doc sur l’option)

Je dirais plutôt qu’il faudrais recréer l’arborescence du menuconfig

Oui, ça semble incontournable.

Patientez, patientez, on va y venir mais évitez les discussions qui vont se perdre.
De plus, il est préférable de ne suivre que le fil qui est en post-it car on est entrain de polluer celui-là.

[quote=“ricardo”]Patientez, patientez, on va y venir mais évitez les discussions qui vont se perdre.[/quote]Bah en attendant que ça prenne corps (j’y crois peu), ce qu’on dit ici est toujours ça de pris.[quote=“ricardo”]De plus, il est préférable de ne suivre que le fil qui est en post-it car on est entrain de polluer celui-là.[/quote]Polluer ?
Mais c’est un fil ouvert, non ? Tant qu’on ne parle que de méthodes d’affinage de noyau, ça ne recouvre pas ton objectif de description des options, si ?

Ce fil a été ouvert par Joto@debian et on lui a franchement parasité. Du coup, le pauvre, il est parti. :cry:

[quote=“mattotop”]Bah en attendant que ça prenne corps (j’y crois peu), ce qu’on dit ici est toujours ça de pris.[/quote]Merci pour l’encouragement. :open_mouth:

Tu parle de .bash_profile (.profile c’était pour sh ou tcsh je crois) je pense et je crois que c’est chez lui qu’il est le mieux.[/quote]non non:
head ~/.profile sur une gentoo dit bien:

[code]roc@roc:~$ head .profile

/etc/profile: login shell setup

That this file is used by any Bourne-shell derivative to setup the

environment for login shells.

#[/code]Alors oui: .bash_profile a aussi cette fonction, mais que pour bash, et par exemple, il y a des gens qui aiment zsh ou dash.
Mon questionnement etait surtout de savoir si sudo ou fakeroot dans la compil noyau passait par un shell de login ou pas.

[quote=“mattotop”]Bon, pour un noyau minimal 2/3 remarques:

  • peu de chance que la recompil accélère de plus d’une seconde le boot sur disque dur. Sur clé usb, sur cd, ou sur disquette, par contre, un noyau petit est préfèrable, et on peut gagner quelques secondes (peu) à le réduire. C’est surtout sur l’utilisation des ressources que ça peut jouer.
  • utilisez ccache pour accélèrer vos compils:
    debian-administration.org/articles/129
    le tuto n’est pas complet. Pour être parfait, il faut mettre export PATH=/usr/lib/ccache:$PATH dans le .profile (ou le .bashrc je ne sais jamais) de l’user qui fait les compils (en général, root). On peut vérifier qu’il utilise bien le ccache aprés une compilation en faisant ccache -s .
    Avec ccache, les temps de recompilation sont énormément raccourcis.
  • le “kernel panic” est lié en général à une seule chose: le noyau ne sait pas accèder à / .
    Si l’on écarte les erreurs de config fstab, cela veut dire qu’au moment du boot, il manque au noyau >le module de l’ide, du sata, ou autre qui gère le disque< ou/et >le module du format de la partition sur laquelle est / < (ceci étant, ext2 suffit pour booter sur une ext3)
    Donc, pour que le noyau boote, il faut que ces modules qui lui permettent d’accèder à / soit dispos >soit dans un initrd< (c’est l’option -initrd de make-kpkg) >soit en dur dans le noyau< .
    L’idéal pour se passer d’initrd est de démarrer avec un noyau debian standard, de noter les modules qui peuvent intervenir dans la chaine d’accés à /, de les mettre en dur, et de tester le boot sans initrd.
    Pour le reste, il peut y avoir des améliorations de performances - je crois - si on met en dur la carte réseau et les modules iptables qu’on souhaite utiliser, mais pour le reste des peripheriques, c’est kif kif.
  • pour épurer, il faut bien sûr désactiver tous les pilotes de matèriel qu’on a pas sur sa machine, et mettre en module tout ce qui concerne l’usb et éventuellement le pcmcia.
    Enfin voilà…

A noter, si on a oublié --initrd dans le make-kpkg, on peut génèrer ponctuellement l’initrd avec mkinitramfs (pour les derniers noyaux) ou mkinitrd (pour les récents), mais c’est juste pour essayer le noyau parcequ’aprés il faudra bien le recompiler avec --initrd, pour que le paquet dans /usr/src soit correct et soit reinstallable sans qu’on ait à recréer l’initrd.[/quote]

Me revoilà :slightly_smiling:
J’ai retenté à nouveau de compiler mon noyau aux petits oignons. A force de se documenter et à passer en revue toutes les options je vais finir par connaître tout par coeur :laughing:
J’ai exactement suivi les conseils de mattotop qui sont les plus justes que j’ai pu voir. Mon premier kernel panic a été justement d’avoir oublier de faire un initrd du noyau (P.S. : la commande n’est plus mkinitrd mais update-initramfs sur etch). Mais le second je ne sais pas d’où vient l’erreur. Voici ce qu’il en retourne, dans un premier temps, il s’arrête pendant près d’une minute sur ce message :

Avant de finalement me retourner l’erreur suivante :

Il semble lancer le busybox et retourne ensuite ceci :

Puis j’ai le teste “(initramfs)” où je peux ensuite faire des entrées.

J’ai bien vérifier que hda2 soit le bon chemin du HDD, il semblerait donc que le noyau ne détecte pas le disque dur…
Une explication ?
Sinon quelles sont les options à activer obligatoirement en dur pour avoir un noyau bootable sans initrd ? Y’a-t-il un gain de temps au boot si on utilise pas de initrd pour le noyau ?

Je désespère un peu de faire mon premier kernel configuré par mes petites mains (j’commence limite à avoir honte :blush: ). En fait, le plus important à mes yeux en configurant le noyau est de pouvoir activer les paramètres CPU (le point faible de ma config je trouve) notamment l’option d’activation du noyau préemptible. En me renseignant sur le net, j’ai vu qu’on disait que les noyaux 2.6.x activait automatiquement ce paramètre, or en regardant la config du noyau par défaut sur Debian le paramètre n’est pas activé.
Y’a-t-il un gain de réactivité en activant ce paramètre ?

Merci pour tout !

quote=“Joto@debian”
(P.S. : la commande n’est plus mkinitrd mais update-initramfs sur etch).[/quote]VU.[quote=“Joto@debian”]Mais le second je ne sais pas d’où vient l’erreur. Voici ce qu’il en retourne, dans un premier temps, il s’arrête pendant près d’une minute sur ce message :

Avant de finalement me retourner l’erreur suivante :

Il semble lancer le busybox et retourne ensuite ceci :

Puis j’ai le teste “(initramfs)” où je peux ensuite faire des entrées.

J’ai bien vérifier que hda2 soit le bon chemin du HDD, il semblerait donc que le noyau ne détecte pas le disque dur…
Une explication ?[/quote]Es tu sûr que ce soit hda2 ? Au passage en 2.6.18, ou quand tu utilises les tous derniers pilotes PATA, tous les disques passent en sdX, même ceux qui etaient en hdX avant.
Essayes de booter avec root=/dev/sda2[quote=“Joto@debian”]Sinon quelles sont les options à activer obligatoirement en dur pour avoir un noyau bootable sans initrd ? [quote=“Joto@debian”]Je l’ai dit: les modules donnant l’accés à / .[/quote]Y’a-t-il un gain de temps au boot si on utilise pas de initrd pour le noyau ?[quote=“Joto@debian”]Léger: moins d’une seconde.[/quote]Je désespère un peu de faire mon premier kernel configuré par mes petites mains (j’commence limite à avoir honte :blush: ). En fait, le plus important à mes yeux en configurant le noyau est de pouvoir activer les paramètres CPU (le point faible de ma config je trouve) notamment l’option d’activation du noyau préemptible. En me renseignant sur le net, j’ai vu qu’on disait que les noyaux 2.6.x activait automatiquement ce paramètre, or en regardant la config du noyau par défaut sur Debian le paramètre n’est pas activé.[/quote]C’est normal, par défaut c’est une config serveur, pas desktop.
Sinon, tu pars d’une config standard, tu l’ajustes sur le CPU, puis tu évolues en coupant des morceaux petit à petit.[quote=“Joto@debian”]Y’a-t-il un gain de réactivité en activant ce paramètre ?[/quote]Oui, mais tu as aussi des blocages. C’est un choix.[quote=“Joto@debian”]Merci pour tout ![/quote]De rien.

[quote=“mattotop”]Au passage en 2.6.18, ou quand tu utilises les tous derniers pilotes PATA, tous les disques passent en sdX, même ceux qui etaient en hdX avant.[/quote]Mis à part la factorisation du code opéré il y a un avantage en terme de performance ?

hello
chouette je vai aussi y mettre mes bidouille qui je trouve on aporter un plus chez moi.

il y a quelque chose qu’il faut tenir compte c’est ce que l’utilisateur recherche, et ceci est très souvant négliger, et c’est a la fin qu’on ce tien il aurai fallut y penser.

donc moi ce que je cherche 1 la stabiliter 2 la ré-activer
3 la performance des jeux (il son pas nombreux mai bon)

pour la stabiliter c’est justement la le plus difficile on ne sais pas vraiment a quoi coresponde les options, j’ai donc pas mal fouiner sur le net. et voici 2 lien.
http://casteyde.christian.free.fr/system/linux/guide/online/c6913.html
http://www.linux-france.org/article/mininet/noyau/noyau-3.html
si vous vous placer a la racine du site citer ci dessus vous aurez plus de choix, car la ce sont les lien direct sur le sujet concerner.

pour la réactivités c’est la un casse tête et le seul moyen c’est de tester. toute foi il est évidant que , ce qui est charger 1 foit si c’est garder en cache cela a un meilleur re-activer. donc en dure c’est donc plus ré-actif . l’inconvénient c’est que evidemment sa prend plus de place et on ne peux pas y supprimer, contrairement aux module.

pour les jeux. il faut donc que sa soie en dure et non pas en module. et des option comme le kernel a 1000mhz sont de mise.

il faudrait donc que cela propose des choix a l’utilisateur avec des priorités.

enfin quand vous compiler faites plusieurs répertoire avec comme la souligner mattotop, la possibilités apres la première compile de pouvoir la réutiliser.
ensuite utiliser screen pour lancer plusieurs compilation en meme temps avec des niveaux de priorité différent (nice -n)
je doit être a peux pres disons a ma 110 compile bah oui j’ai bien faire bosser mon pc quand je suis pas là, il suffit de les préparer avant 8) :laughing:

Merci mattotop pour tes précieux conseils j’ai enfin réussi à avoir un noyau configuré par mes soins qui soit bootable ! Bon au bout d’une dizaine de compilation presque :laughing:
Malheureusement, j’ai une erreur qui apparaît en message lors du boot :

Je suis très étonné… cela voudrait dire qu’il ne détecte plus mon swap ?
Sinon en activant l’option du kernel préemptible, j’ai notablement un plus en réactivité, mais je n’ai pas encore eu le temps de vérifier si cela était stable.
Sinon temps de boot je trouve qu’il y a un léger mieux, pas eu le temps de chronométrer la différence.