Dans un environnement chroot, est-il possible de construire un module de noyau sans avoir le noyau installé, uniquement les en-têtes?
Cela ressemble à quelque chose que vous ne voudriez pas faire, mais dans mon cas, je le fais. J'ai un script qui automatise la création d'un environnement pour le démarrage sur réseau qui inclut également le fichier initrd.img créé par mkinitramfs et copié sur le serveur TFTP par la suite.
Par exemple, si le PC cible comprend également une carte radeon, je souhaite utiliser fglrx. Si c'est nvidia, je veux le paquet nvidia. Ceux qui exécutent/personnalisent le script de construction peuvent ne pas avoir ces cartes installées physiquement sur mon PC.
Oui.
Pour Ubuntu, vous avez vraiment besoin que le linux-headers-*
packagé soit installé pour la cible souhaitée. Voici un exemple de fichier Makefile qui définit KDIR sur un emplacement d’en-tête personnalisé:
obj-m := example.o
KDIR := /usr/src/linux-headers-4.2.0-18-generic
PWD := $(Shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
Cela devrait fonctionner de la même manière dans un chroot.