Configurer le noyau?
Phiphi
-
Phiphi -
Phiphi -
Bonsoir a tous!
en fait, je suis sur que la doc est abondante sur le net, et que l'aide de make xconfig est assez explicite, mais est ce que qqn connaitrait une addresse sur laquelle on peut comprendre qques subptilité de la configuration de son noyau ?? du genre quelles sont les options INDISPENSABLES, celles qu'il faut mettre en dur, l'intéret de mettre des choses en modules ou en dur suivant ce qu'on recherche (performance, rapidité au boot, etc etc)
Bref, j'aimerai me compiler un noyau assez "épuré" pour qu'il soit rapide au boot : j'ai pas 40 000 cartes réseau ni son...
mais parfois il y a des trucs que meme avec la doc, je sais pas si je peux les enlever... et comme je vais pas tester toutes les combinaisons possibles de configuration du kernel...
merci d'avance!
Phiphi
en fait, je suis sur que la doc est abondante sur le net, et que l'aide de make xconfig est assez explicite, mais est ce que qqn connaitrait une addresse sur laquelle on peut comprendre qques subptilité de la configuration de son noyau ?? du genre quelles sont les options INDISPENSABLES, celles qu'il faut mettre en dur, l'intéret de mettre des choses en modules ou en dur suivant ce qu'on recherche (performance, rapidité au boot, etc etc)
Bref, j'aimerai me compiler un noyau assez "épuré" pour qu'il soit rapide au boot : j'ai pas 40 000 cartes réseau ni son...
mais parfois il y a des trucs que meme avec la doc, je sais pas si je peux les enlever... et comme je vais pas tester toutes les combinaisons possibles de configuration du kernel...
merci d'avance!
Phiphi
A voir également:
- Configurer le noyau?
- Configurer un chromecast - Guide
- Configurer audacity pour enregistrer le son de l'ordinateur - Guide
- Configurer chromecast usine - Guide
- Configurer chromecast wifi - Guide
- Configurer et restaurer - Guide
3 réponses
Salut!
Tout ce qu'il faut mettre en dur c'est ce qui sert à lancer le noyau c'est à dire essentiellement la gestion du lecteur de disque dur, processeur, ram. Après les modules ce sont surtout des périphériques peu importants. En général si on a pas envie de se casser le crâne à la configuration on suit l'option par défaut cepedant il faut rester vigilant car certaines options ne sont pas compatibles toutes plateformes. Si tu souhaites épurer à fond alors il faudra bidouiller le noyau pour y supprimer tous les drivers et y laisser que le système pure, ensuite tu t'arrangera pour compiler tes drivers et les installer "à la main".
Tout ce qu'il faut mettre en dur c'est ce qui sert à lancer le noyau c'est à dire essentiellement la gestion du lecteur de disque dur, processeur, ram. Après les modules ce sont surtout des périphériques peu importants. En général si on a pas envie de se casser le crâne à la configuration on suit l'option par défaut cepedant il faut rester vigilant car certaines options ne sont pas compatibles toutes plateformes. Si tu souhaites épurer à fond alors il faudra bidouiller le noyau pour y supprimer tous les drivers et y laisser que le système pure, ensuite tu t'arrangera pour compiler tes drivers et les installer "à la main".
La configuration est peut-etre la partie la plus difficile dans la compilation du noyau si on ne prend pas une configuration existante que celle du Mandrake. Il y a pleins de doc, voici quelques liens, mais je ne sais pas si ca repond avec suffisamment de detail a tes questions:
http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html
http://www.linux.it/~rubini/docs/kconf/
http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#CONFIGURATION-2-4
De facon generale, c'est toujour bien de demarrer avec une bonne config qui marche comme celle du systeme (Mandrake, Fedora, ..., normalement disponible dans /boot/config-<version>). Typiquement ca contient les choses necessaires en dur et le reste en modules. Apres on peut dans le xconfig nettoyer et adapter ca. Mais il faut attention si on prends une config pour 2.4, ca marche extremement mal pour 2.6 !
La premiere chose a faire, c'est facile, on met le bon processeur (P4 par exemple) et aussi le bon mode pour "High Memory Support", si tu as <=1Gb de ram tu peux mettre ca a off, c'est plus efficace que le 4 Gb ou 64 Gb. Ici la config par default n'est pas optimise car pour une distribution Linux il faut rester compatible avec beaucoup de machines.
Apres dans le filessystem il faut mettre le "ext3" en dur et pas en modules, comme tu l'as decouvert recemment, pour eviter de devoir creer l'init-ramdisk. Je ne sais pas pourquoi c'est en module dans les configs par default (en Redhat/Fedora, Mandrake et apparemment Debian). Peut-etre il y a une raison profonde de ca ? Cependant, chez moi ca marche depuis longtemps tres bien comme ca.
Pour les modules associes a ta hardware tu peux bien sur virer toutes les cartes reseau que tu n'as pas, comme de controlleur scsi, pcmcia (si ce n'est pas pour un laptop), carte son (si tu sais identifier le bon driver pour ta carte), etc.
Pour etre sur pour les modules que tu as besoin, tu peux regarder les modules charges avec "/sbin/lsmod". De preference il faut faire ca apres tu as utilise toutes les options de ton ordinateur, equipement (c.-a-d. apres avoir mis la cle memoire, disque usb, camera numerique, grave de cd, demarre le reseau en ethernet, modem rtc, modem adsl, utilise le scanneur, ...) pour que toutes les modules susceptibles d'etre importants pour ton ordinateur soient charges. Si tu imprimes l'affiche de lsmod ca sera plus qu'utile devant l'ecran de xconfig. Les textes help dans le xconfig donnent toujours le nom du module en question.
Si on nettoies ca arrive assez vite qu'on enleve trop de choses car on s'en est pas apercu que certaines choses etaient importantes (par exemple l'emulation de disque scsi pour les cles memoire en usb).
Pour les different file-systemes tu peux aussi nettoyer (par exemple file systeme pour Amiga, Apple, etc.). Par contre certains des pseudo filesystems sont eventuellement important (selon le system). Ici /proc est indispensable et le "virtual memory file systeme" est tres utile car ca fait le ramdisk elastique /dev/shm (voir le sujet apropos de "fichiers dans le ram").
Pour le reseau on peut bien sur enlever les drivers de cartes reseau qu'on n a pas, mais il faut garder pas mal de choses pour de protocoles, methodes etc. En particulier les modules d'ipfilter sont indispensables pour faire plus tard le firewall. Avec scsi c'est similaire, tu peux enlever de drivers pour de hardware (controlleur) mais il y a de protocoles a garder, notamment la simulation scsi pour les cles usb, disque usb, ...
Pour la question de mettre de choses en modules ou en dur, j'avais essaye a une epoque de mettre ma carte reseau en dur et ca marchait a peu pres correctement. Cependant qu'on j'ai achete une seconde carte reseau ca a cree de vrai problemes (attribution aleatoire entre "eth0" et "eth1" et chaos pendant le boot quand les cartes sont configures, meme de problemes avec les interrupts). Donc pour deux cartes reseau il faut les garder en modules et mettre dans le /etc/modprobe.conf les bons alias pour eth0, eth1. Comme ca on a le choix d'attribution des devices avec les cartes (sauf si on a deux cartes utilisant le meme driver, la ca sera determine par le systeme). De facon generale, un module a l'avantage qu'on peut essayer un "rmmod" et "modprobe" pour remettre a zero le driver (plantage du modem, de la carte reseau, ...). Si c'est compile en dur il faut rebooter pour ca. L'inconvient d'un module c'est qu'il faut prevoir les bons truc dans /etc/modprobe.conf (pour un noyau 2.6) ou /etc/modules.conf (pour 2.4).
Pour les controleurs scsi il y en a quelqu'uns ou c'est obligatoire de rester en module. Par exemple chez moi le driver aic7xxx ne fonctionne simplement pas quand je le mets en dur. Quand je le charge comme module il a besoin de 10 secondes pour detecter correctement le controleur scsi.
Pour finir, avec le "nettoyage" de la config tu peux reduire le temps de compilation et de l'espace disque dans le repertoire de modules: /lib/modules/<version>/ . La taille du noyau est deja assez modeste car beaucoup de choses sont en modules. De plus tu peux rendre le noyau un peu plus efficace (bon processeur etc.) mais ca ne va pas accelerer le boot de facon significative. Pour sa il faut enlever de services (daemons) qui sont demarres pendant le boot. Souvent il y a pas mal de trucs (sendmail, imap, nfs, ...) qui tournent et qu'on n'a pas vraiement besoin, en fait pour la securite il faudrait minimiser ca (mais avec un bon firewall ca ne joue pas tellement). Pour un boot rapide le Suse est tres bien (10-15 secondes mieux que Redhat/Fedora, je ne sais pas par rapport a Mandrake).
Apres il y a les noyaux hors de la ligne standard avec des patchs de certains developpeurs (comme -ac... par Alan Cox, -mm... par Andrew Morton, ...). Regardes a:
http://www.kernel.org/
http://ftp.fr.kernel.org/pub/linux/kernel/people/
http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html
http://www.linux.it/~rubini/docs/kconf/
http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html#CONFIGURATION-2-4
De facon generale, c'est toujour bien de demarrer avec une bonne config qui marche comme celle du systeme (Mandrake, Fedora, ..., normalement disponible dans /boot/config-<version>). Typiquement ca contient les choses necessaires en dur et le reste en modules. Apres on peut dans le xconfig nettoyer et adapter ca. Mais il faut attention si on prends une config pour 2.4, ca marche extremement mal pour 2.6 !
La premiere chose a faire, c'est facile, on met le bon processeur (P4 par exemple) et aussi le bon mode pour "High Memory Support", si tu as <=1Gb de ram tu peux mettre ca a off, c'est plus efficace que le 4 Gb ou 64 Gb. Ici la config par default n'est pas optimise car pour une distribution Linux il faut rester compatible avec beaucoup de machines.
Apres dans le filessystem il faut mettre le "ext3" en dur et pas en modules, comme tu l'as decouvert recemment, pour eviter de devoir creer l'init-ramdisk. Je ne sais pas pourquoi c'est en module dans les configs par default (en Redhat/Fedora, Mandrake et apparemment Debian). Peut-etre il y a une raison profonde de ca ? Cependant, chez moi ca marche depuis longtemps tres bien comme ca.
Pour les modules associes a ta hardware tu peux bien sur virer toutes les cartes reseau que tu n'as pas, comme de controlleur scsi, pcmcia (si ce n'est pas pour un laptop), carte son (si tu sais identifier le bon driver pour ta carte), etc.
Pour etre sur pour les modules que tu as besoin, tu peux regarder les modules charges avec "/sbin/lsmod". De preference il faut faire ca apres tu as utilise toutes les options de ton ordinateur, equipement (c.-a-d. apres avoir mis la cle memoire, disque usb, camera numerique, grave de cd, demarre le reseau en ethernet, modem rtc, modem adsl, utilise le scanneur, ...) pour que toutes les modules susceptibles d'etre importants pour ton ordinateur soient charges. Si tu imprimes l'affiche de lsmod ca sera plus qu'utile devant l'ecran de xconfig. Les textes help dans le xconfig donnent toujours le nom du module en question.
Si on nettoies ca arrive assez vite qu'on enleve trop de choses car on s'en est pas apercu que certaines choses etaient importantes (par exemple l'emulation de disque scsi pour les cles memoire en usb).
Pour les different file-systemes tu peux aussi nettoyer (par exemple file systeme pour Amiga, Apple, etc.). Par contre certains des pseudo filesystems sont eventuellement important (selon le system). Ici /proc est indispensable et le "virtual memory file systeme" est tres utile car ca fait le ramdisk elastique /dev/shm (voir le sujet apropos de "fichiers dans le ram").
Pour le reseau on peut bien sur enlever les drivers de cartes reseau qu'on n a pas, mais il faut garder pas mal de choses pour de protocoles, methodes etc. En particulier les modules d'ipfilter sont indispensables pour faire plus tard le firewall. Avec scsi c'est similaire, tu peux enlever de drivers pour de hardware (controlleur) mais il y a de protocoles a garder, notamment la simulation scsi pour les cles usb, disque usb, ...
Pour la question de mettre de choses en modules ou en dur, j'avais essaye a une epoque de mettre ma carte reseau en dur et ca marchait a peu pres correctement. Cependant qu'on j'ai achete une seconde carte reseau ca a cree de vrai problemes (attribution aleatoire entre "eth0" et "eth1" et chaos pendant le boot quand les cartes sont configures, meme de problemes avec les interrupts). Donc pour deux cartes reseau il faut les garder en modules et mettre dans le /etc/modprobe.conf les bons alias pour eth0, eth1. Comme ca on a le choix d'attribution des devices avec les cartes (sauf si on a deux cartes utilisant le meme driver, la ca sera determine par le systeme). De facon generale, un module a l'avantage qu'on peut essayer un "rmmod" et "modprobe" pour remettre a zero le driver (plantage du modem, de la carte reseau, ...). Si c'est compile en dur il faut rebooter pour ca. L'inconvient d'un module c'est qu'il faut prevoir les bons truc dans /etc/modprobe.conf (pour un noyau 2.6) ou /etc/modules.conf (pour 2.4).
Pour les controleurs scsi il y en a quelqu'uns ou c'est obligatoire de rester en module. Par exemple chez moi le driver aic7xxx ne fonctionne simplement pas quand je le mets en dur. Quand je le charge comme module il a besoin de 10 secondes pour detecter correctement le controleur scsi.
Pour finir, avec le "nettoyage" de la config tu peux reduire le temps de compilation et de l'espace disque dans le repertoire de modules: /lib/modules/<version>/ . La taille du noyau est deja assez modeste car beaucoup de choses sont en modules. De plus tu peux rendre le noyau un peu plus efficace (bon processeur etc.) mais ca ne va pas accelerer le boot de facon significative. Pour sa il faut enlever de services (daemons) qui sont demarres pendant le boot. Souvent il y a pas mal de trucs (sendmail, imap, nfs, ...) qui tournent et qu'on n'a pas vraiement besoin, en fait pour la securite il faudrait minimiser ca (mais avec un bon firewall ca ne joue pas tellement). Pour un boot rapide le Suse est tres bien (10-15 secondes mieux que Redhat/Fedora, je ne sais pas par rapport a Mandrake).
Apres il y a les noyaux hors de la ligne standard avec des patchs de certains developpeurs (comme -ac... par Alan Cox, -mm... par Andrew Morton, ...). Regardes a:
http://www.kernel.org/
http://ftp.fr.kernel.org/pub/linux/kernel/people/
ok!
merci a vous deux pour toutes ces infos!!
kmf : je crois pas que je vais regarder tes deux derniers liens ;-) sur les noyaux "hors ligne standard" ;-)
je vais surtout me limiter a faire un truc qui mouline moins de paramètres inutiles! (quitte a recompiler en cas de nouveau matériel...mais ca c pas tous les jours :-/ )
Phiphi
merci a vous deux pour toutes ces infos!!
kmf : je crois pas que je vais regarder tes deux derniers liens ;-) sur les noyaux "hors ligne standard" ;-)
je vais surtout me limiter a faire un truc qui mouline moins de paramètres inutiles! (quitte a recompiler en cas de nouveau matériel...mais ca c pas tous les jours :-/ )
Phiphi