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.