Compiler le noyau avec les configurations par défaut


8

Hypothèses:

  • La plateforme:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • Le noyau téléchargé est le dernier stable de kernel.org.

  • Nous laissons les valeurs par défaut (ne faire aucun changement) dans les options de make menuconfig.
  • Tapez simplement make, make install, grub-updateet redémarrez.

Maintenant, suivant ces hypothèses, devons-nous encore apporter des modifications supplémentaires aux fichiers ou compiler des pilotes supplémentaires pour assurer un redémarrage sans erreur?

Si oui, de quoi dépendent ces changements?

EDIT 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Réponses:


7

Il n'est pas recommandé juste à nu make menuconfig. La configuration requise dépend de trois choses:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Donc la configuration "par défaut" recommandée à mon avis est:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Voir aussi Configuration du noyau pour les distributions . Le premier paragraphe:

La configuration d'un noyau était autrefois un processus assez simple, ne nécessitant que la connaissance du matériel à prendre en charge. Au fil du temps, les choses sont devenues plus complexes en général, mais les distributions ont ajouté leurs propres ensembles de dépendances à des fonctionnalités spécifiques du noyau - dépendances qui peuvent être difficiles à comprendre pour les utilisateurs réguliers. Cela a conduit Linus Torvalds à présenter une proposition RFC pour ajouter des options de configuration du noyau spécifiques à la distribution.


1
Pour le dire plus succinctement: il n'y a pas de configuration de noyau "par défaut" ou "exactement ce que Linus voulait". Si vous venez de télécharger et de compiler sans rien configurer, vous vous retrouverez avec un noyau cassé et / ou à peine fonctionnel.
bahamat le

La configuration par défaut est exactement cela. C'était ce que Linus exécutait à l'époque. Obtenez la configuration de votre distribution et utilisez-la comme point de départ.
vonbrand

merci pour la réponse, j'essaie de suivre un livre writing linux driversavec le noyau 2.6. I Ma configuration Fedora 24 a de nombreuses valeurs invalides pour le noyau 2.6. Des suggestions sur la configuration à utiliser pour installer le noyau 2.6?
gideon

3

Le vrai matériel / distributions ne fonctionnera probablement pas correctement avec defconfig

Comme mentionné dans cette réponse , tout ce qui n'est pas fourni par le distributeur ou le fournisseur de matériel échouera très probablement de manière subtile ou moins subtile, par exemple:

  • il se peut que vous ne développiez pas la prise en charge des pilotes pour certains éléments matériels essentiels
  • les packages de la distribution peuvent s'appuyer sur une fonctionnalité du noyau que vous n'avez pas créée et qui a échoué

De plus, en plus des configurations spécifiques, il est normal que les vendeurs appliquent de grands ensembles de correctifs sur le noyau vanilla, même Ubuntu le fait par exemple.

Pour Ubuntu / Debian en particulier, j'ai décrit comment compiler le noyau pris en charge à partir des sources sur: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Modifier cette base de noyau stable est la chose la plus saine que vous puissiez faire dans ce cas.

QEMU fonctionne avec defconfig

Une chose qui defconfigfonctionne bien cependant, c'est de démarrer sur QEMU, testé sur le noyau v4.20, QEMU 2.12.

Voici un exemple entièrement automatisé avec Buildroot .

Comme indiqué sur ce lien, vous avez besoin des options suivantes pour démarrer à partir du disque:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

bien qu'ils ne soient pas nécessaires pour initrd.

Pour la compilation croisée vers un autre arc, par exemple aarch64, vous avez besoin de:

make ARCH=arm64 defconfig

Mais comme expliqué ici , bien que arm64 démarre sur QEMU, il génère un noyau super gonflé, et vous voudrez probablement déployer quelque chose de plus minimal, par exemple comme décrit ici .

Que make defconfigfait exactement?

Nous pouvons facilement voir quel fichier de configuration a été utilisé avec une version détaillée:

make V=1 defconfig

qui sort sur v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

d'où nous concluons que le fichier utilisé doit être arch / x86 / configs / x86_64_defconfig .

Voir aussi: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpmontre également d'autres cibles liées par défaut intéressantes comme alldefconfiget savedefconfigqui peuvent être utiles.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.