« ConfigurationNoyauLinux » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(4 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{Archive | Linux configure maintenant correctement et automatiquement son noyau.}} | |||
Le noyau est essentiellement le logiciel de plus bas niveau qui tourne (la virtualisation exceptée). Le configurer nécessite du bon sens, et des connaissances. | Le noyau est essentiellement le logiciel de plus bas niveau qui tourne (la virtualisation exceptée). Le configurer nécessite du bon sens, et des connaissances. | ||
Pour info: http://www.gentoo-wiki.info/Kernel/Configuring | Pour info: http://www.gentoo-wiki.info/Kernel/Configuring | ||
= | = Configuration = | ||
* Parcourir le materiel, et vérifier que le materiel est activé (les disques, les bus, les cartes réseau, etc...) avec {{c|lspci}}, et notament l'option {{c|-k}} . On peut chercher avec la touche {{c|/}} (slash). | * Parcourir le materiel, et vérifier que le materiel est activé (les disques, les bus, les cartes réseau, etc...) avec {{c|lspci}}, et notament l'option {{c|-k}} . On peut chercher avec la touche {{c|/}} (slash). | ||
* Parcourir l'arbre de {{c|menuconfig}}, et essayer de comprendre à quoi ça correspond. C'est dur parfois, mais l'aide (touche {{c|?}}) aide beaucoup. | * Parcourir l'arbre de {{c|menuconfig}}, et essayer de comprendre à quoi ça correspond. C'est dur parfois, mais l'aide (touche {{c|?}}) aide beaucoup. | ||
= Checklist de | = Checklist de configuration = | ||
* General | * General | ||
** Kernel {{c|.config}} support | ** Kernel {{c|.config}} support | ||
Ligne 27 : | Ligne 22 : | ||
*** INET: socket monitoring interface | *** INET: socket monitoring interface | ||
*** Network packet filtering framework (Netfilter) -- C'est iptables! D'ailleurs dans les options pour ça, on doit trouver de choses intéressantes, comme par exemple le module owner. | *** Network packet filtering framework (Netfilter) -- C'est iptables! D'ailleurs dans les options pour ça, on doit trouver de choses intéressantes, comme par exemple le module owner. | ||
**** Activer la target LOG, le module conntrack, ... | |||
*** 802.1Q VLAN Support -- Peut-être, enfin c'est pas con | *** 802.1Q VLAN Support -- Peut-être, enfin c'est pas con | ||
* File systems - mount pour vérifier le type des partitions. | * File systems - mount pour vérifier le type des partitions. | ||
* Kernel hacking | * Kernel hacking | ||
** Magic SysRq key -- permet dans certaines situation de limiter la casse en cas de plantage. (Rappel : ordre des touches = REISUB) | ** Magic SysRq key -- permet dans certaines situation de limiter la casse en cas de plantage. (Rappel : ordre des touches = REISUB) | ||
'''Attention''': les disques SATA utilisent souvent des transports SCSI. Ainsi, il faut activer SATA '''et''' SCSI dans la configuration. | |||
= Compilation = | |||
* Se placer dans {{c|/usr/src/linux}} qui est un symlink vers le noyau le plus récent normalement (voir le use flag symlink) | |||
* {{c|make nconfig}} (anciennement {{c|menuconfig}}) pour configurer le noyau | |||
* vérifier que {{c|/boot}} est bien monté, sinon il va installer le noyau dans le bon dossier, mais sur la mauvaise partition :p | |||
* compilation et installation : | |||
make && make install && make modules_install | |||
Une bonne idée, c'est d'utiliser screen avec un fenêtre qui contient {{c|make nconfig}} du noyau en cours : ça permet de savoir ce qui a été choisi pour cette machine la dernière fois. | |||
= Mise à jour du noyau = | |||
Après avoir installé un paquet linux pour un nouveau kernel, il faut le configurer. Pour cela, il faut aller dans le dossier /usr/src/linux... adéquat et exécuter | |||
make oldconfig | |||
Ensuite, il faut éventuellement faire {{c|make nconfig}} si l'on s'est trompé sur un paramètre, puis compiler et installer le nouveau noyau comme précédemment. | |||
Les liens symboliques /usr/src/linux, /boot/config, /boot/System.map et /boot/vmlinuz sont gérés par {{c|eselect}} de la manière suivante : | |||
eselect kernel list | |||
Available kernel symlink targets: | |||
[1] linux-3.0.4-hardened-r5 | |||
[2] linux-3.2.2-hardened-r1 * | |||
eselect kernel set 2 | |||
= Installation = | |||
'''AVANT TOUT, VERIFIER QUE LA PARTITION /boot EST MONTÉE !''' | |||
En temps normal, la commande suivante suffit à installer le noyau : | |||
make install && make modules_install | |||
En période de crise (comprendre: installation de serveur), il faut être plus expressif et dire ENSUITE (en remplaçant $VERSION par le truc qui va bien) | |||
cd /boot | |||
ln -s config-$VERSION config | |||
ln -s System.map-$VERSION System.map | |||
ln -s vmlinuz-$VERSION vmlinuz | |||
Le /boot/grub/grub.conf est censé ressembler à : | |||
# Which listing to boot as default. 0 is the first, 1 the second etc. | |||
default 0 | |||
# How many seconds to wait before the default listing is booted. | |||
timeout 30 | |||
title Gentoo Linux | |||
root (hd0,0) | |||
kernel /boot/vmlinuz root=/dev/sda3 | |||
title Gentoo (rescue) | |||
root (hd0,0) | |||
kernel /boot/vmlinuz root=/dev/sda3 init=/bin/bb | |||
title Gentoo Linux (old) | |||
root (hd0,0) | |||
kernel /boot/vmlinuz-old root=/dev/sda3 | |||
title Gentoo Linux (old, rescue) | |||
root (hd0,0) | |||
kernel /boot/vmlinuz-old root=/dev/sda3 init=/bin/bb | |||
Et maintenant : | |||
reboot | |||
= Problèmes divers = | |||
Si un pilote manque, le noyau peut crier dans {{c|/var/log/kern.log}}. Il faut alors voir si l'on n'a pas oublié quelque chose dans la configuration ({{c|lshw}}, {{c|lspci}} et {{c|lsusb}} sont utiles). Parfois, il s'agit d'un problème de Firmware. Par exemple, si une carte réseau refuse de passer UP et dit : | |||
# ifconfig eth0 up | |||
SIOCSIFFLAGS: No such file or directory | |||
# ip link set eth0 up | |||
RTNETLINK answers: No such file or directory | |||
Dans ce cas, {{c|/var/log/kern.log}} est explicite : | |||
can't load firmware file bnx2/bnx2-mips-06-6.2.3.fw | |||
Il suffit d'installer '''{{c|linux-firmware}}''' pour résoudre le problème ! | |||
emerge linux-firmware | |||
[[Catégorie:Root]] |
Version actuelle datée du 18 mars 2023 à 16:33
Le noyau est essentiellement le logiciel de plus bas niveau qui tourne (la virtualisation exceptée). Le configurer nécessite du bon sens, et des connaissances.
Pour info: http://www.gentoo-wiki.info/Kernel/Configuring
Configuration
- Parcourir le materiel, et vérifier que le materiel est activé (les disques, les bus, les cartes réseau, etc...) avec
lspci
, et notament l'option-k
. On peut chercher avec la touche/
(slash). - Parcourir l'arbre de
menuconfig
, et essayer de comprendre à quoi ça correspond. C'est dur parfois, mais l'aide (touche?
) aide beaucoup.
Checklist de configuration
- General
- Kernel
.config
support - Enable access to
.config
through/proc/config.gz
-- Très utile pour avoir la conf du noyau qui tourne. - Export task/process statistics through netlink -- Pour suivre l'utilisation du disque par iotop
- Enable per-task delay accounting -- idem
- Kernel
- Processor type and features -> Processor family
- Networking support
- Networking options -- Rien d'autre. Pas besoin de tant de choses que ça: prendre;
- TCP/IP networking
- INET: socket monitoring interface
- Network packet filtering framework (Netfilter) -- C'est iptables! D'ailleurs dans les options pour ça, on doit trouver de choses intéressantes, comme par exemple le module owner.
- Activer la target LOG, le module conntrack, ...
- 802.1Q VLAN Support -- Peut-être, enfin c'est pas con
- Networking options -- Rien d'autre. Pas besoin de tant de choses que ça: prendre;
- File systems - mount pour vérifier le type des partitions.
- Kernel hacking
- Magic SysRq key -- permet dans certaines situation de limiter la casse en cas de plantage. (Rappel : ordre des touches = REISUB)
Attention: les disques SATA utilisent souvent des transports SCSI. Ainsi, il faut activer SATA et SCSI dans la configuration.
Compilation
- Se placer dans
/usr/src/linux
qui est un symlink vers le noyau le plus récent normalement (voir le use flag symlink) make nconfig
(anciennementmenuconfig
) pour configurer le noyau- vérifier que
/boot
est bien monté, sinon il va installer le noyau dans le bon dossier, mais sur la mauvaise partition :p - compilation et installation :
make && make install && make modules_install
Une bonne idée, c'est d'utiliser screen avec un fenêtre qui contient make nconfig
du noyau en cours : ça permet de savoir ce qui a été choisi pour cette machine la dernière fois.
Mise à jour du noyau
Après avoir installé un paquet linux pour un nouveau kernel, il faut le configurer. Pour cela, il faut aller dans le dossier /usr/src/linux... adéquat et exécuter
make oldconfig
Ensuite, il faut éventuellement faire make nconfig
si l'on s'est trompé sur un paramètre, puis compiler et installer le nouveau noyau comme précédemment.
Les liens symboliques /usr/src/linux, /boot/config, /boot/System.map et /boot/vmlinuz sont gérés par eselect
de la manière suivante :
eselect kernel list Available kernel symlink targets: [1] linux-3.0.4-hardened-r5 [2] linux-3.2.2-hardened-r1 *
eselect kernel set 2
Installation
AVANT TOUT, VERIFIER QUE LA PARTITION /boot EST MONTÉE !
En temps normal, la commande suivante suffit à installer le noyau :
make install && make modules_install
En période de crise (comprendre: installation de serveur), il faut être plus expressif et dire ENSUITE (en remplaçant $VERSION par le truc qui va bien)
cd /boot ln -s config-$VERSION config ln -s System.map-$VERSION System.map ln -s vmlinuz-$VERSION vmlinuz
Le /boot/grub/grub.conf est censé ressembler à :
# Which listing to boot as default. 0 is the first, 1 the second etc. default 0 # How many seconds to wait before the default listing is booted. timeout 30 title Gentoo Linux root (hd0,0) kernel /boot/vmlinuz root=/dev/sda3 title Gentoo (rescue) root (hd0,0) kernel /boot/vmlinuz root=/dev/sda3 init=/bin/bb title Gentoo Linux (old) root (hd0,0) kernel /boot/vmlinuz-old root=/dev/sda3 title Gentoo Linux (old, rescue) root (hd0,0) kernel /boot/vmlinuz-old root=/dev/sda3 init=/bin/bb
Et maintenant :
reboot
Problèmes divers
Si un pilote manque, le noyau peut crier dans /var/log/kern.log
. Il faut alors voir si l'on n'a pas oublié quelque chose dans la configuration (lshw
, lspci
et lsusb
sont utiles). Parfois, il s'agit d'un problème de Firmware. Par exemple, si une carte réseau refuse de passer UP et dit :
# ifconfig eth0 up SIOCSIFFLAGS: No such file or directory # ip link set eth0 up RTNETLINK answers: No such file or directory
Dans ce cas, /var/log/kern.log
est explicite :
can't load firmware file bnx2/bnx2-mips-06-6.2.3.fw
Il suffit d'installer linux-firmware
pour résoudre le problème !
emerge linux-firmware