Jump to content

Archived

This topic is now archived and is closed to further replies.

tuXXX

[noyau] les options, leurs significations

Recommended Posts

Oui, le * remplace n'importe quoi...

Donc * représente tous les fichiers...

aze* représente tous les fichiers commencant par "aze"

...après, il y a aussi les crochets, etc...

EDIT : oui, c'est possible que ce soit /media/dvd ...

Share this post


Link to post
Share on other sites

Bon, je pense que j'ai fini le topic pour les noyaux...

Je le poste ici avant de le faire en vrai...

Je n'ai pas mis en forme définitive (cela devrait ressembler à mes autres topic "tuto")

Si vous avez des remarques, dites-le !!! Je fait ça pour que tout le monde soit d'accord :chinois:

Share this post


Link to post
Share on other sites

[Noyau] Topic général

---------------------

Alors il est souvent question de recompiler le noyau sous linux, de manière à en avoir un qui corresponde le plus près possible au système, que ce soit pour les périphériques que pour le processeur et la mémoire.

Je vais donc essayer de rendre cette opération la plus simple possible, tout en essayant de ne pas être redondant avec les autres topic dédiés concernant une distribution précise.

Mon but ici est notamment de donner des explications par rapport aux différentes options des noyaux, et je supposerait que tous les outils nécessaires pour compiler sont là (make, gcc, ncurses, etc...).

Je supposerait également que le noyau choisi est un 2.6, les noyaux 2.4 n'étant plus à jour (même si malheureusement certains drivers ne sont compatibles uniquement pour ces versions)

Sommaire

->Installation du noyau

->Installation d'un patch

->Configuration du noyau

->Un module? Mais queskecé?

->Part I : General setup

->Part II : Processor & System

->Part III : File format, system et devices

->Part IV : Kernel Hacking & Others

->Sauvegarde

->Compilation

->Installation

->Trucs et astuces

Installation du noyau

---------------------

Je vais ici expliquer comment installer les sources d'un noyau correctement, ainsi que le patcher.

Si vous utilisez les "kernel-source" de votre distribution, vous pouvez passer cette partie :transpi:

Tout d'abord, télécharger le noyau sur [http://www.kernel.org] kernel.org, il vaut mieux en général prendre celui qu'ils appellent "latest stable version".

Une fois que ceci est fait, il faut décompresser ce fichier (qui est au format .tar.bz2) dans le répertoire /usr/src

CODE

$ cd /usr/src

$ tar -xvjf linux-2.6.X.tar.bz2

Maintenant que le noyau est décompressé, il va falloir faire un lien symbolique vers lui à /usr/src/linux:

CODE

$ ln -s linux-2.6.X linux

Et vous pouvez vérifier :

CODE

$ ls -l /usr/src/linux

/usr/src/linux -> /usr/src/linux-2.6.X

maintenant, il suffit d'aller dans ce répertoire pour être prêt pour les étapes suivante :craint:

Installation d'un patch

-----------------------

Il existe des patches de noyau, qui modifient certains fichiers afin d'optimiser certaines partie du code.

Par exemple, le patch "mm" d'Andrew Morton, disponible sur kernel.org, incluant par exemple il y a peu un patch pour les P4 "HT" (entre beaucoup d'autres !!! Il suffit de regarder le "Changelog" pour voir la quantité de modifications)

Une fois le patch téléchargé et décompressé ("bunzip2 2.6.X-mmY.bz2" par exemple), il faut patcher le noyau avec la commande suivante :

CODE

$ patch -p1 < 2.6.X-mmY

Voilà ! le noyau est patché et prêt à être compilé !

Configuration du noyau

----------------------

Il y a plusieurs manières de configurer un noyau, mais la plus intéressante est le "make menuconfig", c'est donc cela que bous allons faire :smack:

Mais avant, il faut s'assurer que plus rien ne reste des configurations précédentes, de même que les modules qui pourraient rester...

CODE

$ make clean

$ make mrproper

C'est bon, vous pouvez maintenant faire le fameux "make menuconfig" (c'est ici qu'il faut avoir toutes les librairies, notamment ncurses.), il existe aussi "make config", que je déconseille fortement (de toute façon, vous abandonneriez avant la 100eme question :non: ) et "make xconfig", qui est plus abordable, mais mois pratique à mon goût.

CODE

$ make menuconfig

Vous vous retrouvez donc devant une jolie interface (c'est pas mal, quand même...)

Donc on se déplace avec les flêches directionnelles, on choisit <Select> <Exit> ou <Help> et on utiliser la touche "Entrée".

Pour mettre une fonction en module, il faut appuyer sur la touche "M" (comme module, tient :yes: )

Pour intégrer une fonction au noyau, il faut appuyer sur "Y"

Et pour enlever totalement cette fonctionnalité, appyer sur "N"

Il est aussi possible d'appuyer sur "?" pour avoir l'aide au lieu de sélectionner <Help>

Un module? Mais queskecé?

-------------------------

Un module permet de rendre le systèle linux plus modulaire, et peut être chargé (quasiment) à n'importe quel moment.

Il s'agit d'un fichier binaire qui communique avec le noyau.

Cela permet d'alléger la taille du noyau, mais aussi de pouvoir ajouter plus tard des modules (par exemple pour des drivers vidéo)

Part I : General setup

----------------------

->Code maturity level options

QUOTE

1: [*] Prompt for development and/or incomplete code/drivers

2: [*] Select only drivers expected to compile cleanly

3: [*] Select only drivers that don't need compile-time external firmwware

Ici, il faut tout laisser :

Cela permet d'avoir accès aux drivers en développement (1), ne montrer que ceux qui compilent bien(2), et cacher ceux qui nécessitent un firmware spécifique(3) (ouais, enfin vous savez lire l'anglais :D )

->General setup

QUOTE

1: [*] Support for paging of anonymous memory (swap)

2: [*] System V IPC

3: [*] POSIX Message Queues

4: [ ] BSD Process Accounting

5: [*] Sysctl support

6: [*] Auditing support

7: [*] Enable system-call auditing support

8: [*] Support for hot-pluggable devices

9: [ ] Kernel .config support

10: [ ] Configure standard kernel features (for small systems) --->

1) Support pour la SWAP :chinois:

5) Pour activer certains contrôles du noyau "on the fly" (file:Documentation/sysctl/)

9) permet d'avoir le .config du noyau dans /proc... ça doit l'alourdir (mais ça semble assez pratique)

10) On va pas toucher à ça, on veut pas faire un noyau pour système embarqué...

->Loadable module support

QUOTE

1: [*] Enable loadable module support

2: [*] Module unloading

3: [ ] Forced module unloading

4: [*] Module versioning support

5: [*] Automatic kernel module loading

1) Active le support des modules :incline:

2) pouvoir enlever des modules (rmmod)

3) forcer à décharger les modules avec rmmod -f ...pas recommandé

4) ça peut être utile... donc tant qu'à faire...

5) utile pour charger automatiquement les dépendances des modules, obligatoire pour hotplug entre autres

Part II : Processor & System

----------------------------

->Processor type and features

QUOTE

1: Subarchitecture Type (PC-compatible) --->

2: Processor family (Athlon/Duron/K7) --->

3:[ ] Generic x86 support

4:[*] HPET Timer Support

5:[*] Symmetric multi-processing support

6:(2) Maximum number of CPUs (2-255)

7:[ ] SMT (Hyperthreading) scheduler support

8:[*] Preemptible Kernel

9:[*] Machine Check Exception

10:<*> Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4

11:[ ] check for P4 thermal throttling interrupt.

12:< > Toshiba Laptop support

13:< > Dell laptop support

14:< > /dev/cpu/microcode - Intel IA32 CPU microcode support

15:< > /dev/cpu/*/msr - Model-specific register support

16:< > /dev/cpu/*/cpuid - CPU information support

17: Firmware Drivers --->

18: High Memory Support (off) --->

19:[ ] Math emulation

20:[*] MTRR (Memory Type Range Register) support

21:[ ] Boot from EFI support

22:[*] Enable kernel irq balancing

23:[ ] Use register arguments

24: Performance-monitoring counters support --->

2) Changer en fonction du processeur

3) Seulement pour que les distribs soient largement compatibles

4) Pour activer le timer inclu dans le noyau...

5) Activer le support de plusieurs processeurs

6) Nombre précis de processeurs (chacun en plus du premier ajoute 8Ko au noyau inutilement)

8) A activer ([http://kerneltrap.org/node/view/3043] ICI pour un petit topo ;) )

18) Activer si plus de 1Go de ram, sinon off pour performances

20) Accélère les bus PCI et AGP

23) Peut permettre éventuellement des meilleures performances, auparavant invompatible avec les drivers vidéos ATI et nVIDIA, les drivers nVIDIA (>6106) supportent maintenant cette fonction, mais je ne sais pas pour les ATI

->Power management options (ACPI, APM)

QUOTE

1: [*] Power Management support

2: [ ] Software Suspend

3: [ ] Suspend-to-Disk Support

4: ACPI (Advanced Configuration and Power Interface) Support --->

4- 1: [*] ACPI Support

4- 2: [*] Sleep States

4- 3: <*> AC Adapter

4- 4: <*> Battery

4- 5: <*> Button

4- 6: <*> Fan

4- 7: <*> Processor

4- 8: <*> Thermal Zone

4- 9: < > ASUS/Medion Laptop Extras

4-10: < > Toshiba Laptop Extras

4-11: [ ] Debug Statements

4-12: [ ] Power Management Timer Support

5: APM (Advanced Power Management) BIOS Support --->

6: CPU Frequency scaling --->

1) Active la gestion de l'énergie ... Indispensable

2) et 3) permet d'activer une sorte de "veille prolongée", activez si vous pensez l'utiliser.

4) support de l'ACPI

5) support de l'APM, seulement si l'ACPI ne marche pas/fait planter l'ordinateur

6) seulement pour les portables

->Bus options (PCI, PCMCIA, EISA, MCA, ISA)

QUOTE

1: [*] PCI support

2: PCI access mode (Any) --->

3: [ ] Vector-based interrupt indexing (MSI)

4: [ ] Legacy /proc/pci interface

5: [*] PCI device name database

6: [ ] ISA support

7: [ ] MCA support

8: < > NatSemi SCx200 support

9: PCMCIA/CardBus support --->

10: PCI Hotplug Support --->

1) Permet d'activer le support pour les ports PCI (utile, non?)

2) Choix du mode "Any" devrait convenir pour 99.99% des cas ;)

3) Moyennement utile

4) Anciennement utilisé pour voir les périphériques PCI, délaissé au profit de "lspci"

6) Pour les ports ISA => désactivé ;)

9) Si portable avec PCMCIA

10) Support du "PCI hotplug" de certaine CM, à ne pas confondre avec le système "Hotplug" qui permet de détecter les périphériques et de charger les modules correspondant. A désactiver.

Part III : File format, system et devices

-----------------------------------------

->Executable file formats

QUOTE

1: [*] Kernel support for ELF binaries

2: <*> Kernel support for a.out and ECOFF binaries

3: <*> Kernel support for MISC binaries

Tout laisser pour un maximum de compatibilité

->Device Drivers

Bon là je ne détaillerais pas tout... à vous de chercher et d'agir en fonction du matériel.

Si vous avez un doute, mettez en module, ça ne peut pas faire de mal ;)

QUOTE

1: Generic Driver Options --->

2: Memory Technology Devices (MTD) --->

3: Parallel port support --->

4: Plug and Play support --->

5: Block devices --->

6: ATA/ATAPI/MFM/RLL support --->

7: SCSI device support --->

8: Multi-device support (RAID and LVM) --->

9: Fusion MPT device support --->

10: IEEE 1394 (FireWire) support --->

11: I2O device support --->

12: Networking support --->

13: ISDN subsystem --->

14: Telephony Support --->

15: Input device support --->

16: Character devices --->

17: I2C support --->

18: Misc devices --->

19: Multimedia devices --->

20: Graphics support --->

21: Sound --->

22: USB support --->

3) Port parallèle ;) ça peut être utile, mais à vous de voir...

5) Activer "Loopback device support !!! (pour pouvoir monter les images CD .iso directement)

6) Activez en fonction de votre matériel...

8) Pour faire du raid software

12) Activez le driver correspondant à votre carte réseau. (le driver pour les cartes mères nVIDIA se trouve là : "Ethernet (10 or 100Mbit)">"Reverse Engineered nForce Ethernet support", appelé "forcedeth", activer les RealTek 8139 est généralement une bonne idée, au moins en module !

16) Pour modifier l'"agpgart" ... Possibilité de le désactiver pour laisser le driver de la carte 3D le faire tout seul... Le mettre dans un premier temps, histoire d'avoir un noyau qui marche ;)

17) à activer pour les cartes TV (notamment bt848) : "I2C Support"+"Bit Banging interfaces". Aussi utile pour les senseurs de la carte mère (température) pour lm_sensors. (mettre tous les Hardware Sensors en module ;) )

19) Activer pour avoir le support des cartes TV (en général 848 ou 878, regardez le "lspci") (il vaut mieux mettre en module pour pouvoir passer des paramètres)

20) Activer le framebuffer peut produire des effets négatif sur la stabilité ensuite, en plus c'est à peut près inutile en général.

21) Activer alsa absolument ! Ne pas oublier "OSS [*] API" . Et configurer pour la carte son (dans PCI devices)

22) Activer surtout ehci et ohci, uhci éventuellement (si carte Intel ou Via) (enfin au moins tout en modules). Activer aussi "USB Mass Storage support" pour avoir le support des clé USB (mettre en dur pour ne pas à avoir à charger le module!) ainsi que "USB Human Interface Device (full HID) support" pour les souris/claviers USB

->File systems

Mettre le maximum de systèmes de fichiers en dur afin de pouvoir booter n'importe où...

(Ext2, Ext3, Reiserfs, JFS, XFS), ainsi que le NTFS éventuellement (pas en écriture! voire aide).

Activer aussi "SMB file system support" dans "Network File Systems"

Activer également "NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)" sous "Native Language Support" afin de pouvoir accéder tranquillement aux données des disques ntfs et fat de windows.

Part IV : Kernel Hacking & Others

---------------------------------

->Profiling support

Moyennement utile, "If unsure say N" :incline:

->Kernel hacking

QUOTE

1: [*] Kernel debugging

1-1: [ ] Check for stack overflows

1-2: [ ] Stack utilization instrumentation

1-3: [ ] Debug memory allocations

1-4: [*] Magic SysRq key

1-5: [ ] Spinlock debugging

1-6: [ ] Page alloc debugging

1-7: [ ] Compile the kernel with debug info

2: [ ] Kernel lock metering

3: [*] Sleep-inside-spinlock checking

4: [ ] Compile the kernel with frame pointers

5: [*] Use 4Kb for kernel stacks instead of 8Kb

1-4) Permet d'activer les combinaisons de touches "Alt"+"Sys"+[lettre] ... afin de ne pas faire de reset trop violent.

5) Permet d'utiliser des piles de 4K au lieu de 8 afin de faire tourner plus de threads et de réduire la "pression" de l'interface graphique sur le système. Vous pouvez activer sans problème si vous avez une carte nVIDIA (et les drivers >6106), je ne sais pas pour ATI mais il semble que ce soit bon (à tester quand même sans avant;) )

->Security options

Pour rendre encore plus sécurisé linux... A priori c'est inutile sauf si vous savez ce que vous faîtes...

->Cryptographic options

Pour crypter un système de fichiers... à vous de voir mais à piori c'est moyennement utile...

->Library routines

Activer CRC32c pour permettre le chargement de certains modules...

Sauvegarde

----------

Une fois que tout est bien configuré, je vous consille de faire "Save Configuration to an Alternate File" Car il ne sauvegarde pas toujours très bien (et puis, pour pouvoir recharger après un "make clean mrproper")

Personnellement, je sauvegarde avec le noyau en 0.config (puis 1.config pour le suivant, etc...)

Il va sans dire qu'il est préférable de reconfigurer à chaque fois le noyau... Même si copier le fichier de config marche dans 99% des cas... Il peut y avoir des nouvelles options, ainsi que disparition d'anciennes.

(Je vous conseille aussi d'utiliser les touches numériques au-dessus des lettres, et non le pavé numérique, je me suis déjà fait avoir : ça a quitté le make menuconfig quand je tapais des chiffres et tout ça sans sauvegarder, bien sûr ;) )

Ensuite, il suffit de quitter en disant de sauvegarder la configuration.

Compilation

-----------

Comme il est écrit dans le README... la méthode pour compiler le noyau est la suivante :

CODE

$ make

$ make modules_install

($ mount /boot)

$ cp ../linux/arch/i386/boot/bzImage /boot/kernel-2.6.X

Puis configurer :

*lilo: modifier /etc/lilo.conf et lancer "lilo"

*grub: modifier /boot/grub/grub.conf ou /boot/grub/menu.lst

Rebooter, et c'est bon !!!

Trucs et astuces

----------------

Modifier le nom du noyau:

Il est parfois utile de modifier le nome du noyau (par exemple pour fair plusieurs version...Il vaut mieux séparer les modules, et donc avoir des noms différents)

Il faut pour cela modifier le Makefile et changer le paramètre EXTRAVERSION. Cette chaîne de caractère sera ajoutée au numéro du noyau, que ce soit pour le "uname" ou pour le répertoire où sont stockés les modules.

Utiliser les "Magic SysKeys":

Quand tout à l'ai planté, au lieu de rebooter sauvagement le PC, il est possible d'utiliser les "Magic SysKeys". Cela consiste à appuyer simultanément sur "Alt", "Sys" (Impr.écran) et une touche du clavier.

Alt+Sys+S : resynchronise les systèmes de fichiers montés afin de vider notamment les caches

Alt+Sys+U : remonte les systèmes de fichiers en écriture seulement

Alt+Sys+B : reboote l'ordinateur

Il faut faire ces 3 commandes l'une après l'autre, dans un interval d'au moins 1 seconde (le temps que ça agisse)...

Si l'ordinateur redémarre après avoir appuyé sur "B", il n'y aura pas de problèmes sur les systèmes de fichiers...Sinon il faudra faire un restet brutal.

Share this post


Link to post
Share on other sites

salut

vraiment tres bien ton topic Tuxx.

je sens que je vais esssayer de recompiler mon noyaux tres prochainement grace a toi :-D

Share this post


Link to post
Share on other sites

×
×
  • Create New...