PDA

Afficher la version complète : Tuto compilation kernel opensuse 10.3-64



New2008
18/01/2008, 19h19
******* Cree Le 18/01/2008 *******

Je ne sais pas si c'est la section approprie pour poster ce tuto...

Aujourd'hui, je me suis dit, tiens pourquoi ne pas recompiler le kernel de l'opensuse 64 juste pour voir si ca fait quelques choses, pour infos ma config est la suivante : Opensuse 64 bits Version 10.3 DVD avec kde installe et la majorite des outils de developpement.

Voici les etapes :

1/ installer les sources officiels du dvd, resultas dans /usr/src/linux-2.6.22.5-31

2/ Lancer la console administrateur (pour la console, un outil formidable existe sous linux, a installer d'urgence si ce n'est pas le cas, c'est le programme mc qui permet de gerer facillement les repertoires et fichiers...)

3/ taper cd /usr/src/linux-2.6.22.5-31

4/ dans le repertoire /boot, il y'a le fichier de configuration du kernel avec les parametres d'origine, pour le recuperer et ne pas avoir a en recreer un car ce serait tres fastidieux, taper la commande : cp /boot/config-2.6.22.5-31-default .config

5/ taper ls, vous devriez trouver le fichier .config

6/ taper make xconfig

A partir de la, il est possible de modifier tous les parametres du kernel, ajouter ou enlever des modules, ce n'est pas vraiment le but, mieux vaut laisser la majorite des parametres par defaut, mon intention n'est pas de me prendre la tete, je veux simplement optimiser le kernel pour mon processeur qui est un P4 double coeur 3.4 ghz ancien model, donc dans la section cpu, j'ai simplement coche P4, SMP et activer MT64 parce c'est gere par le cpu...

Ensuite, j'ai modifie la section powersave pour qu'il demarre l'ordinateur en mode performance maximale, kpowersave demarre avec le kernel natif dans un autre mode, ayant un ord desktop, je me trouvais avec le cpu bride a 2400 au lieu de 3400 ghz et bien que j'ai change la config dans kpowersave, l'ordinateur demarrait toujours dans ce mode, il est probablement possible d'intervenir dans le module pour changer les params mais j'ai prefere intervenir directement dans le kernel...

7/ apres avoir sauvegarde, taper make

La compilation a pris beaucoup de temps, mais il est toujours possible de faire autre chose, perso j'ai ecoute de la musique et mate quelques clips videos...

*******************

Quand la compilation se termine, reste a lancer les commandes pour l'installation, mais avant il faut savoir qu'il est toujours possible que vous ayez fait une erreur quelques part et que donc le systeme peut ne pas redemarrer du tout, ne venez pas vous en plaindre, en ce qui me concerne tout a bien marche, j'avais un garde fou, en effet j'avais fait une sauvegarde de la partition linux avec savepart (freeware) un excellent programme mais qui malheureusement ne fonctionne que sous dos ou windows...

Voici les commandes pour l'install :

8/ make modules_install

9/ make install

Assurez vous que le kernel a bien ete cree dans le rep /boot notament en verifiant la date, l'acien kernel est renomme en *.old

Derniere etape, relancez le systeme, lors du redemarrage, au lieu de lancer kdm, opensuse s'arretera en mode console, connectez vous en mode root, vous allez devoir recompiler et reinstaller les drivers de nvidia, suivez les instructions de l'installateur et surtout a la derniere etape, empechez la creation d'un nouveau fichier xorg.conf pour ne pas ecraser l'ancien qui fera l'affaire...
Relancez une nouvelle fois le systeme, cette fois opensuse devrait redemarrer kdm sans probleme...

***

Ajout : Eventuellement creer un rpm en tapant 'make rpm', vous trouverez l'archive installable dans :

/usr/src/packages/RPMS/<arch>/

Je me suis refere pour la creation du rpm au tuto suivant (pas teste pour le moment...) http://wiki.alionet.org/doku.php?id=howto:compilation_noyau

***

Conclusion : rien que le fait d'avoir place powersave en mode performance maximale a fait que le systeme est beaucoups plus rapide et plus reactif au demarrage. pour le reste, avec le nouveau kernel, ca se sent particulierement dans les acces disques, la difference est tres visible sous le gestionnaire de fichier de kde ou la creation d'appercu image par exemple est beaucoups plus fluide pour des milliers d'images... le kernel par defaut etait compile en mode generique probablement pour etre compatible avec la majorite des processeurs 64 intel et amd, en activant MT64, j'ai constate de visu que le cpu est beaucoups plus reactif, bizarrement compiz demarre beaucoup plus vite et je n'ai pas encore teste les autres applications graphiques...

Donc bilan positif en ce qui me concerne...

Est ce que ca vaut le coup de prendre le risque, oui sans hesiter mais seulement si vous etes sur de ce que vous faites et que vous pouvez eventuellement reparer manuellement ou avec un ghost en cas de problemes...

A vous de voir...


******* Ajout Le 03/02/2008 *******

Je viens de recuperer le kernel 2.6.24 issu du site officiel www.kernel.org, j'avais egallement trouve un package kernel pour opensuse 64 mais je ne l'ai pas utilise finallement car yast signale des dependances de toutes sortes, j'ai donc decide de compiler le kernel original, comme pour le premier post, voici les etapes :

1/ decompresser les sources officiels dans /usr/src/ (resultas ajout rep linux-2.6.24)
2/ taper cd /usr/src/linux-2.6.24
3/ recuperer le fichier .config et le placer dans le nouveau repertoire du kernel
4/ taper make xconfig

Je conseille de laisser les parametres par defaut sauf en ce qui concerne powersave et le cpu (voir le post ci-dessus), c'est a vous de voir, j'ai egallement trouve une option en rapport avec la mise en veille sur disque dur, je l'ai perso active (pour l'utiliser il faut taper en root : echo disk > /sys/power/state) et ca fonctionne, j'ai teste, contrairement a kpowersave qui propose l'option mais lors du reboot bypasse grub et lance directement linux, ici le menu grub est affiche et permet donc de lancer un autre systeme, j'ai egallement desactive plusieurs modules non gere par mon ordinateur (carte son, chipset...) je deconseille de faire de meme si vous ne connaissez pas votre materiel. La compilation dure beaucoups de temps...

*** J'avais oublie : taper make pour compiler le kernel ***

les commandes pour l'install :

5/ make modules_install

6/ make install : comme un grand, cette commande a ajoute, le nouveau kernel dans le menu de grub, je pensais que j'allais devoir l'editer manuellement, et ben non, Assurez vous quand meme que le kernel a bien ete cree dans le rep /boot...

Lorsque j'avais recompile l'ancien kernel, j'avais perdu l'affichage de la progression visuelle du demarrage (le probleme etait en rapport avec le fbbuffer), pas de probleme avec le nouveau kernel, je dois egallement signale qu'apparement apparmor ne fonctionne pas, je m'en fous personnellement mais si vous l'utilisez a vous de voir...

Conclusion : Ca m'a l'air bien tout ca, tout fonctionne tres bien, cela dit si vous voulez la securite, mieux vaut peut etre attendre la prochaine version opensuse qui incluera certainement ce nouveau kernel sinon ca n'a rien de difficile, si vous etes bidouilleur comme moi alors suivez ces instructions...

******* Modification Le 14/02/2008 *******

Ajout modifs de quelques options lors de la compilation adapte a un system desktop...

Section Processor type and features, activation de 'Tickless System' et 'High Resolution Timer Support'.

Ensuite selection du processeur, dans mon cas Intel P4/older Netburst based xeon, activation de 'Symmetric multi-processing support' et 'SMT' et 'Multi-core scheduler support'...

Activation egallement de 'Preempt the Big Kernel Lock' et 'Preemptible Kernel (Low-Latency Desktop)'

Mon cpu etant un dual core, j'ai inscrit 2 dans 'under Maximum num-ber of CPUs'

Section 'Under Timer Frequency' j'ai choisi 1000 HZ apparement l'ideal pour un ord desktop

Section 'Under Block Layer' : Desactive...

Section (RAID and LVM) : Desactive

Sections 'Token Ring driver support' : Desactive

Section 'Watchdog Timer Support' : Desactive...

Section 'Under Kernel Hacking' : Desactive...

Section 'Instrumentation Support' : Desactive

Prenez garde a ce que vous desactivez, c'est une config a priori adapte a une configuration desktop classique. de toute facon, ce tuto s'adresse a des personnes motivees et avisees, en cas de doute abstenez vous...

Cette fois j'ai essaye l'option de creation du RPM pour la creation d'un package installable avec la commande make rpm, apres la creation reussi du package, j'ai ajoute le chemin de l'archive (/usr/src/packages/) dans le repositery de yast, mais impossible de l'installer avec yast avec un message qui indique ne pas trouver le package alors qu'il y est, donc j'ai deplace le rpm dans /root/packages en creant le repertoire packages, modifier le chemin vers celui ci et yast a bien voulu cette fois installer le kernel. cela dit il faut dans l'ordre :

- taper la commande mkinitrd pour recreer un nouveau ram disk pour chacun des noyaux detecte dans /boot, vous trouverez par exemple pour le kernel 2.6.24 le fichier initrd-2.6.24-default...

- ajouter manuellement dans /boot/grub/menu.lst l'entree du nouveau noyau ainsi que son initrd correspondant...

- ensuite rebooter...

Apres ca, le systeme est beaucoup plus reactif...

******* Ajout Le 17/02/2008 *******

Je viens de prendre connaissance de l'existence d'une faille majeure sur les kernel 2.6.17 a 2.6.24, le patch existe sur le site www.kernel.org. pour l'appliquer, transferer le patch qui se nomme 'patch-2.6.24.2.bz2' dans le repertoire du kernel linux.2.6.24 et taper la commande suivante a partir de celui ci :

bzip2 -dc patch-2.6.24.2.bz2 | patch -p1

Pour verifier la bonne version du kernel, taper la commande : make kernelversion

Si c'est bon, recompiler le tout, pour abreger, voici les etapes :

1/ Compiler et creer un package rpm (pour une raison logique, j'utiliserais desormais cette fonction car elle permet de creer une archive installable et desinstallable, en plus il est possible d'utiliser le package sur un autre ordinateur sans devoir tout recompiler...) :

make rpm

2/ Se positionner dans le repertoire du package cree : cd /usr/src/packages/RPMS/<arch>/

3/ Installer le package : rpm -ivh kernel-<version>.<arch>.rpm

4/ Tapez mkinitrd pour recreer l'initrd du nouveau noyau...

4/ Editer le menu de grub et ajouter la nouvelle entree du kernel...

voila voila


******* Ajout Le 25/03/2008 *******

Il me semblait bien que le kernel 2.6.24 etait plus lent que l'ancien notement lors de l'utilisation de plusieurs programmes en meme temps, egallement lorsque j'active compiz qui met plus de temps a demarrer, j'ai trouvé la cause sur le forum de gentoo, il s'agissait en fait d'une nouvelle option du kernel qui est active par defaut, vous trouverez cette option a desactiver d'urgence section :

General setup / Fair group CPU scheduler

J'ai personnellement recompilé le noyau et voila que c'est aussi reactif sinon plus que l'ancien kernel...

C'est ce qui s'appelle une regression de performance regrettable, cette option devrait etre desactive par defaut...

A titre d'informations...

voila voila

**************

J'esperes que ce tuto sera utile a quelqu'un, en tous cas je le garde sous le coude comme aide memoire...

**************

Eärendil
18/01/2008, 23h46
Merci pour ces indications.
Je voulais simplement savoir si ça valait ou pas le coup de passer une partie des choses en modules : vu la capacité actuelle de la RAM, est-ce que ça vaut vraiment le coup ?
Et si oui, est-il utile de passer en modules des modules qui se chargeront de toute façon dès le démarrage ? Où est l'intérêt éventuel de cela ?

D'autre part, je vois que les commandes que tu donnes sont :

make
make modules_install
make install
Alors que sous Gentoo, c'est :

make
make modules_install
cp arch/i386/boot/bzImage /boot/monkernel
Que fait donc au juste "make install" ? La copie du kernel ?

Pumpkin
19/01/2008, 11h56
New2008, si ce n'est déjà fait, tu peux en faire un article de wiki !
;)

New2008
19/01/2008, 16h44
Merci pour ces indications.
Je voulais simplement savoir si ça valait ou pas le coup de passer une partie des choses en modules : vu la capacité actuelle de la RAM, est-ce que ça vaut vraiment le coup ?
Et si oui, est-il utile de passer en modules des modules qui se chargeront de toute façon dès le démarrage ? Où est l'intérêt éventuel de cela ?

D'autre part, je vois que les commandes que tu donnes sont :

make
make modules_install
make install
Alors que sous Gentoo, c'est :

make
make modules_install
cp arch/i386/boot/bzImage /boot/monkernel
Que fait donc au juste "make install" ? La copie du kernel ?[/b]

A mon avis, c'est la seule solution pour un kernel generique supposé s'adapter a plusieurs configurations et chipset, si tout etait integre aux kernel, ca ferait probablement un enorme noyau qui mettrait du temps a se charger, par ailleurs je crois savoir ayant utilise pendant quelques temps une slackware que la taille du kernel etait limité en ce temps la, ca doit avoir changé entretemps je ne suis pas sur...

Cela dit il est vrai que le chargement des modules a egallement un cout temps, j'ai par exemple voulu integrer le module de ma carte son nomme sblive au kernel pour l'accelerer, si tu connais bien ton materiel (cpu, chipset, carte son, drivers ides ou sata...) il est possible de tout integrer au kernel et de se concocter un noyau tres optimisé pour ton architecture materiel...

Pour ce qui est de :

make : compilation du kernel
make modules_install : installation des modules...
make install : installation du kernel

les deux dernieres commandes peuvent se lancer dans n'importe quel ordre pour un meme resultas...

Pour la gentoo, ca a l'air d'etre particulier, la commande make install fait la meme chose, elle transfere simplement le nouveau kernel compilé vers /boot...

Pumpkin : je n'ai aucune experience d'edition d'article au format wiki, je suppose que ca se passe en ligne, n'ayant pas l'adsl pour le moment, cette solution serait trop couteuse en temps de connexion, mais si tu veux le faire en reprenant ce tuto, ca ne pose aucun probleme...

A+

Eärendil
19/01/2008, 18h11
Merci pour toutes ces indications.
Je demandais en effet s'il fallait ou non mettre des modules dans l'optique de ma Gentoo : par exemple, je me demandais si c'était une bonne chose de mettre en modules les sensors de température, étant donné que j'en aurait besoin tout le temps, avec un moniteur superkaramba ou autre.
Mais de toute façon, je pense que la RAM utilisée est la même si on a compile en dur une option ou si l'on garde tout le temps chargé le module correspondant ?...

PS: si ça t'intéresse, j'ai trouvé une petite merveille de documentation tout à l'heure, sur Gentoo-Québec.org (http://www.gentoo-quebec.org/index.php?page=docs)...

New2008
19/01/2008, 18h52
Merci pour toutes ces indications.
Je demandais en effet s'il fallait ou non mettre des modules dans l'optique de ma Gentoo : par exemple, je me demandais si c'était une bonne chose de mettre en modules les sensors de température, étant donné que j'en aurait besoin tout le temps, avec un moniteur superkaramba ou autre.
Mais de toute façon, je pense que la RAM utilisée est la même si on a compile en dur une option ou si l'on garde tout le temps chargé le module correspondant ?...

PS: si ça t'intéresse, j'ai trouvé une petite merveille de documentation tout à l'heure, sur Gentoo-Québec.org (http://www.gentoo-quebec.org/index.php?page=docs)...[/b]

Merci du lien, je telecharge en ce moment, la doc de la gentoo est toujours excellente, j'aurais bien essayé cette distrib si j'avais l'adsl, je vais tout le temps sur le forum anglais et francais d'un niveau technique assez pointu, peut etre si je trouve une version dvd 64 recente et complete (bien que je sois assez satisfait de l'opensuse), je tenterais le coup...

Malheureusement, il me semble lors de mes dernieres visites avoir constaté que la communauté gentoo n'est plus aussi reactive qu'avant, c'est bien dommage...

Pour le reste, je conseillerais l'utilisation des modules parce qu'il est facile de les charger et decharger a volonte alors que s'il sont integres au kernel ca occupera de la ram inutillement...

A+

Spyhawk
20/01/2008, 16h37
Tuto compil noyau : http://wiki.alionet.org/doku.php?id=howto:compilation_noyau

New2008
21/01/2008, 15h07
Intéressant ce lien, merci, j'ai principalement retenu la possibilité de créer directement un rpm, je vais ajouter cette info dans le tuto...

A+

New2008
03/02/2008, 19h00
UP, mise a jour

New2008
13/02/2008, 19h13
UP, mise a jour...

New2008
17/02/2008, 14h40
UP, (A chaque mise a jour, je modifierais le premier post en creant UP pour signaler, c'est d'ailleurs bizarre qu'a chaque modification du post initial, la date reste celle de la premiere creation, mais bon on fera avec)...

New2008
25/03/2008, 14h06
UP

Burn2
25/03/2008, 16h19
Sympa comme tuto. Je m'étais amusé à compiler moi même mais je n'ai plus trop le temps de me prendre la tête à le refaire. :) Dommage. En tout cas merci pour le topic.

New2008
26/03/2008, 14h08
Sympa comme tuto. Je m'étais amusé à compiler moi même mais je n'ai plus trop le temps de me prendre la tête à le refaire. :) Dommage. En tout cas merci pour le topic.[/b]

Merci, l'avantage de condenser les infos dans un seul post fait que ce n'est plus vraiment prise de tete, j'utilise cette page comme aide memoire, pour ca je la sauvegarde a chaque modif sous scrapbook accessible sous winxp et linux. En suivant ces etapes, il faut peu de temps pour recompiler un noyau alors que l'avantage est quand meme consequent, l'ord est beaucoups plus reactif qu'avec le kernel fourni d'origine avec opensuse, cela dit il est vrai que c'est risqué de se lancer la dedans, mais j'y trouve mon compte, je crois que ca vaut le coup, j'espere pour ceux qui essaieront egallement...

voila voila