How-to : patch kernel qui boost les performances

[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).

reuh …

oui, c’est ce qu’explique Pinaraf ici http://linuxfr.org/comments/1183330.html#1183330
Néanmoins systemd bien que prometteur est dans les dépôts experimental.

J’explique aussi ici http://www.debian-fr.org/how-to-patch-kernel-qui-boost-les-performances-t30651.html#p308917 qu’on peut faire la même chose en userspace sans avoir à patcher le noyau.

Le but de ce fil c’était surtout de tenter ce patch pour voir. : )

@+…

Bonjour, je déterre un peu le topic, vu que je suis en train de tenter une compilation. Pour l’instant, j’en suis à make oldconfig (je n’ai pas fait le make localmodconfig) et je vois que ce qui est préconisé est de faire un yes"" |make oldconfig

Je voudrais être sur, cette commande fait répondre “Yes” à toutes les questions ou fait elle répondre “choix par défaut” ?
Parce qu’en fait pas mal de choix par défaut sont en fait “Non” ou “Module”. La je tente en y allant à l’entrée sur chaque question, mais j’aimerais avoir plus d’infos sur cette commande.

Merci.

Hello.

[quote]NOM
yes - Afficher indéfiniment une chaîne de caractères jusqu’à ce que le
processus soit tué.

SYNOPSIS
yes [CHA NE]…
yes OPTION

DESCRIPTION
Répéter indéfiniment toutes les CHAÎNEs indiquées ou « y » si aucun
paramètre n’est fourni.
[/quote]

Donc à priori ça répond par defaut aux nouveaux paramètres qui n’étaient pas dans l’ancienne config. Si quelqu’un peut confirmer …

@+…

La commande yes, j’avais pas fais gaffe, j’avais lu de travers et interprété ça comme “réponds yes à toutes les questions”.

Après avoir lu le man et vu que yes “” n’imprime donc rien, j’aurais tendance à confirmer.

Salut salut,

J’ai une question de débutant : si on met à jour les sources par un git pull, doit-on repatcher, tout retélécharger pour patcher, ou ne rien faire du tout ?

Merci.