How-to : patch kernel qui boost les performances

reuh …

@Emralegna : je pense que le copié/collé engendre des problèmes d’encodage un truc du genre … c’est pour ça que j’ai viré le code du patch du premier post pour y joindre le fichier autogroup.patch.txt

@Cyrion : http://lmgtfy.com/?q=dpkg-gencontrol%3A+erreur%3A+le+paquet+linux-image+n%27est+pas+dans+le+fichier+de+contr%C3%B4le
Tu tombes ici probleme-de-compilation-du-noyau-t17369.html

En bref, installe kernel-package

@+…

@i M@N : ce paquet est bien installé…
kernel-package:
Installé : 12.033
Candidat : 12.033
Dans le doute j’ai tout recommencé depuis le départ, mais ça donne exactement la même chose…

@ iM@N : ok ça j’ai compris. Mais est-ce que le choix du kernel est fait pour la bonne config de manière automatique ? (32 bits, 64 bits, amd64…)
Je ne suis pas encore familier avec les téléchargements à partir de git. Ca ne veut pas dire que je vais faire la manip, en tant que noob j’attend un peu, mais j’aimerais bien savoir comment ça marche.
++

i M@N : Il y a-t-il un moyen d’automatiser le rajout de la date de compilation dans cette commande ?

Pour se construire un petit script d’automatisation de la construction du kernel ça pourrait être plus pratique.

Merci.

Merci. :slightly_smiling:

Salut,

[quote=“i M@N”]Hello.
@Slystone : c’est la 2.6.37-rc2
[/quote]
Pas tout à fait, c’est la 2.6.37-rc2-git(x) hier la 4, aujourd’hui la 5 en date du 19/XI

J’ai une question… Qu’as-tu répondu aux questions de

@Cyrion : bah écoute je sais pas …

[quote=“lol”]J’ai une question… Qu’as-tu répondu aux questions de

en fait j’ai repris la config du 2.6.32-5 et j’ai répondu y (&& yes “” | make localmodconfig). Faut que je modifie mon premier post, c’est pas clair j’ai fait un copié/collé à l’arrache de mon .bash_history et j’avais tatonné pas mal.
En fait c’est plus comme ça que j’ai fait :

sudo aptitude install git-core libncurses5 libncurses5-dev kernel-package fakeroot build-essential git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6 cd linux-2.6 && patch -p1 < ../autogroup.patch cp /boot/config-`uname -r` .config && yes "" | make localmodconfig && yes "" | make oldconfig make menuconfig # set CONFIG_SCHED_AUTOGROUP=y in ~/linux-2.6/.config make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-`date +%Y%m%d` kernel-image kernel-headers cat /etc/initramfs-tools/modules echo vesafb | sudo tee -a /etc/initramfs-tools/modules echo fbcon | sudo tee -a /etc/initramfs-tools/modules cat /etc/initramfs-tools/modules cd sudo dpkg -i linux-*.deb

Par contre j’essaye sur le 2.6.36 et ça fonctionne pas, j’arrive pas à appliquer le patch on dirait qu’il manque plein de fichiers dans linux-2.6.36/drivers/tty par rapport au 2.6.37-rc2 (aussi bien depuis le git qu’avec les sources de kernel.org) :

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.36.y.git linux-2.6.36 #wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2 #tar -xvf linux-2.6.36.tar.bz2 cd linux-2.6.36 patch -p1 < ../autogroup.patch

[quote]iman@debian:~/linux-2.6.36$ patch -p1 < …/autogroup.patch
patching file include/linux/sched.h
Hunk #1 succeeded at 506 (offset -3 lines).
Hunk #2 succeeded at 575 (offset -3 lines).
Hunk #3 succeeded at 1905 (offset -31 lines).
patching file kernel/sched.c
Hunk #2 succeeded at 613 (offset 7 lines).
Hunk #3 FAILED at 2010.
Hunk #4 succeeded at 7753 (offset -230 lines).
Hunk #5 succeeded at 8283 (offset -230 lines).
Hunk #6 succeeded at 8308 (offset -230 lines).
1 out of 6 hunks FAILED – saving rejects to file kernel/sched.c.rej
patching file kernel/fork.c
Hunk #1 succeeded at 173 (offset -1 lines).
Hunk #2 succeeded at 902 (offset -4 lines).
patching file drivers/tty/tty_io.c
Hunk #1 FAILED at 3160.
1 out of 1 hunk FAILED – saving rejects to file drivers/tty/tty_io.c.rej
patching file kernel/sched_autogroup.h
patching file kernel/sched_autogroup.c
patching file kernel/sysctl.c
Hunk #1 succeeded at 384 (offset 2 lines).
patching file init/Kconfig
Hunk #1 succeeded at 652 with fuzz 2 (offset -76 lines).
patching file Documentation/kernel-parameters.txt
Hunk #1 succeeded at 1610 (offset -12 lines).
[/quote]

Enfin pour être tout à fait complet si j’arrive à faire tourner le kernel compilé 2.6.37-rc2 sur ma tour P4, sur le netbook MSi Wind ça ne fonctionne pas ou assez mal puisqu’il y a une régression avec ce kernel au niveau du driver graphique i915 intel et GDM se lance aléatoirement : c’est soit GDM soit écran noir.
Par ailleurs il semble manquer certains modules comme pour le son (logique puisque c’est du RC).

La dépêche sur linuxfr.org : http://linuxfr.org/2010/11/18/27604.html

EDiT : haha! il suffit que je cherche un peu plus et je trouve le patch pour le 2.6.36 : http://patchwork.kernel.org/patch/337311/
Je le joins à ce post (autogroup-2.6.36.patch.txt) et j’uploade ici : http://imanweb.free.fr/uploaded/autogroup-2.6.36.patch
Et donc la procédure devient :

##git/tar ... c'est vous qui voyez! #git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.36.y.git linux-2.6.36 #wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2 #tar -xvf linux-2.6.36.tar.bz2 cd linux-2.6.36 patch -p1 < ../autogroup-2.6.36.patch cp /boot/config-`uname -r` .config && yes "" | make localmodconfig && yes "" | make oldconfig make menuconfig # set CONFIG_SCHED_AUTOGROUP=y in ~/linux-2.6.36/.config make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-`date +%Y%m%d` kernel-image kernel-headers cat /etc/initramfs-tools/modules echo vesafb | sudo tee -a /etc/initramfs-tools/modules echo fbcon | sudo tee -a /etc/initramfs-tools/modules cat /etc/initramfs-tools/modules cd sudo dpkg -i linux-*.deb

@+…
autogroup-2.6.36.patch.txt (12.4 KB)

Cool, merci des infos.
Pour ma part j’ai envoyé “entrée” à chaque question. Je pense que ça sélectionne le choix par défaut.
Le noyau patché-compilé fonctionne bien chez moi. Je ne vois évidemment aucune différence…

Mais c’est toujours sympa de compiler.

Et j’ai découvert make localmodconfig qui est bien pratique et permet de créer un noyau assez léger. Elle est nouvelle cette commande, non ?

J’en ai profité pour me faire un linux-kbuild-2.6.37 au passage.

Je mettrais bien tout ça sur le wiki, mais j’ai un peu la flemme de lire tout ce qui concerne le patch pour VRAIMENT comprendre. Encore qu’il n’est pas bien long ce patch…

reuh …

Oui, équivalent au yes “” | make localmodconfig, perso taper entrée pendant 5 minutes ça me lasse! XD

Pour moi Firefox, Nautilus sont plus réactifs.

Oui c’est nouveau depuis le 2.6.32.

Tu peux expliquer ce que tu as fait pour le compiler stp?
Et d’abord il sert à quoi exactement le linux-kbuild?

@+…

Le linux-kbuild est un paquet d’une centaine de ko nécessaire à l’installation des kernel-headers (linux-headers-2.6.36-trunk-686 par exemple).

Sans ce kbuild, impossible d’installer les headers donc impossible de compiler sur le noyau fraichement crée/installé ou d’installer les drivers propriétaires.

Pour créer un kbuild -> http://www.isalo.org/wiki.debian-fr/index.php/Compiler_linux-kbuild

Merci Berillions! :006

make localmodconfig depuis le 2.6.32… :108
nouveau… :mrgreen: J’ai raté des épisodes… :arrow_right:

[quote=“Berillions”][quote=“i M@N”]
Tu peux expliquer ce que tu as fait pour le compiler stp?
Et d’abord il sert à quoi exactement le linux-kbuild?
[/quote]

Le linux-kbuild est un paquet d’une centaine de ko nécessaire à l’installation des kernel-headers (linux-headers-2.6.36-trunk-686 par exemple).

Sans ce kbuild, impossible d’installer les headers donc impossible de compiler sur le noyau fraichement crée/installé ou d’installer les drivers propriétaires.

Pour créer un kbuild -> http://www.isalo.org/wiki.debian-fr/index.php/Compiler_linux-kbuild[/quote]
OK … mais alors explique-moi stp comment j’ai pu installer ~/linux-headers-2.6.36-20101119-10.00.Custom_i386.deb généré après la compilation comme décrite plus haut?
Ensuite explique-moi stp pourquoi j’ai pu installer le driver Nvidia propriétaire (96.43.19) avec un :

sudo sh /usr/src/NVIDIA-96.43.19.run -K -k 2.6.36-20101119 -s -n 2>1 > /dev/null

Par ailleurs êtes-vous sûr d’avoir besoin de ce linux-kbuild quand on compile un kernel depuis les sources de kernel.org?
Parce que des kbuilds j’en ai en pagaille dans mon paquet headers :

iman@debian:~$ find /usr/src/linux-headers-2.6.36-20101119/ -iname *kbuild /usr/src/linux-headers-2.6.36-20101119/include/video/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/sound/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/scsi/fc/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/scsi/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/drm/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/asm-generic/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/xen/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/mtd/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/netfilter_ipv4/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/hdlc/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/spi/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/usb/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/nfsd/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/netfilter_bridge/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/dvb/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/tc_act/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/can/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/netfilter/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/sunrpc/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/wimax/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/isdn/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/tc_ematch/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/netfilter_arp/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/netfilter_ipv6/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/byteorder/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/linux/raid/Kbuild /usr/src/linux-headers-2.6.36-20101119/include/rdma/Kbuild /usr/src/linux-headers-2.6.36-20101119/arch/x86/include/asm/Kbuild

Et aucun si je fais :

Puisqu’il est là :

iman@debian:~$ find /usr/src/linux-kbuild-2.6.32/ -iname *kbuild /usr/src/linux-kbuild-2.6.32/Kbuild

@+…

J’avoue être perplexe.

Il y a peu il n’était pas possible d’installer linux-header-2.6.35 sans linux-kbuild-2.6.35

Mais ce n’était pas un header compilé… C’était celui de dépôts.

reuh …

c’est bien ce qu’il me semble , en compilant un kernel avec les sources de kernel.org pas besoin de compiler un linux-kbuild

Sinon y’a une autre façon de profiter de l’autogroup sans avoir à patcher et compiler :
http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html

ajouter dans /etc/rc.local juste avant le exit 0 :

mkdir -p /dev/cgroup/cpu mount -t cgroup cgroup /dev/cgroup/cpu -o cpu mkdir -m 0777 /dev/cgroup/cpu/user echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

ajouter dans .bashrc :

if [ "$PS1" ] ; then mkdir -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1 echo $$ > /dev/cgroup/cpu/user/$$/tasks echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release fi

créer le fichier /usr/local/sbin/cgroup_clean et y placer :

#!/bin/sh #rmdir /dev/cgroup/cpu/$* ##pour ne pas que /dev/cgroup/cpu/user soit effacé lorsque tous les terminaux sont fermés [ "$1" != "/user" ] && rmdir /dev/cgroup/cpu/$1

rendre exécutable /usr/local/sbin/cgroup_clean :

Puis exécuter /etc/rc.local :

recharger .bashrc :

@+…

Merci, je vais tester ça sur mes Atom (fabriqués en Savoie) ce week-end.

Mais en 2.6.36, puces vidéo intel oblige…

Hello.

Toujours à la recherche de la bonne compil de ce 2.6.36 je me rends comte que le montage automatique des périphériques usb ne se fait plus!
Donc je tente sans le && yes “” | make localmodconfig et me contente d’un && yes “” | make oldconfig
Comme j’ai déjà patché et compilé hier je fais juste (uname -r = 2.6.32-5-686) :

cd linux-2.6.36 cp /boot/config-`uname -r` .config && yes "" | make oldconfig make menuconfig # set CONFIG_SCHED_AUTOGROUP=y in ~/linux-2.6.36/.config make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-`date +%Y%m%d` kernel-image kernel-headers cd sudo dpkg -i linux-*.deb

Pour ceux qui veulent la procédure entière :

##git/tar ... c'est vous qui voyez! #git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.36.y.git linux-2.6.36 #wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2 #tar -xvf linux-2.6.36.tar.bz2 cd linux-2.6.36 patch -p1 < ../autogroup-2.6.36.patch cp /boot/config-`uname -r` .config && yes "" | make oldconfig make menuconfig # set CONFIG_SCHED_AUTOGROUP=y in ~/linux-2.6.36/.config make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-`date +%Y%m%d` kernel-image kernel-headers cd sudo dpkg -i linux-*.deb

@+…

[quote=“i M@N”]Hello.

Toujours à la recherche de la bonne compil de ce 2.6.36 je me rends comte que le montage automatique des périphériques usb ne se fait plus!
[/quote]
[size=50](Bah, hier j’ai eu un kernel panic parce qu’ils ont changé l’emplacement et le nom de mon pilote ATA dans la liste :snooty: )[/size]

Si t’as bien coché USB Mass Storage et autres (bref, l’USB marche), alors il te manque peut être le support inotify :think: :

grep NOTIFY .config  
CONFIG_FSNOTIFY=y
# CONFIG_DNOTIFY is not set
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y

reuh …

wé … apparement le fait de faire le make localmodconfig n’a pas pris en compte le module usb_storage (peut-être parce qu’il n’était pas actif lors de la configuration, je n’avais aucun disque usb branché)
Donc comme j’explique juste avant en faisant juste un make oldconfig j’obtiens un kernel un peu plus gros de quelques megas mais au moins tout fonctionne et je peux le mettre direct sur le MSi Wind, pas besoin de recompiler spécialement pour lui. : )

Sur le 2.6.32-5-686 :

[quote]iman@debian:~$ cat mod-2.6.32-5-686.txt | grep usb
usb_storage 30541 1
usbcore 98377 4 usb_storage,uhci_hcd,ehci_hcd
scsi_mod 101401 6 usb_storage,firewire_sbp2,sg,sr_mod,sd_mod,libata
nls_base 4541 5 nls_utf8,nls_cp437,vfat,fat,usbcore[/quote]
sur le 2.6.36-20101120 :

[quote]iman@debian:~$ lsmod | grep usb
usb_storage 29995 0
scsi_mod 127168 4 sd_mod,usb_storage,firewire_sbp2,libata
usbcore 94238 4 usb_storage,uhci_hcd,ehci_hcd
nls_base 4521 9 hfsplus,hfs,ntfs,jfs,nls_utf8,nls_cp437,vfat,fat,usbcore[/quote]

@+…
config.txt (120 KB)

Vous savez que ce patch a très peu de chances d’être realesé un jour ? C’est quelque chose qui n’a pas sa place dans le noyau, il vaut mieux que ce soit mis en place en userland. Systemd, le futur système d’init qui va carburer et détruire tout ses concurrents au passage, gère déjà ça (un cgroup par processus fils qu’il crée je crois).