在 chroot 环境下,是否可以在不安装内核的情况下仅安装头文件来构建内核模块?
这听起来像是你不想做的事情,但就我而言,我愿意这么做。我有一个脚本,可以自动创建网络启动环境,其中还包括由 mkinitramfs 创建并随后复制到 tftp 服务器的 initrd.img。
例如,如果目标 PC 还包含 radeon 卡,我想要 fglrx。如果是 nvidia,我想要 nvidia 包。那些运行/自定义构建脚本的人可能没有将这些卡物理安装到我的 PC 中。
答案1
是的。
对于 Ubuntu,您实际上只需要linux-headers-*
为所需目标安装软件包。这是一个将 KDIR 设置为自定义标头位置的示例 Makefile:
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
这在 chroot 中应该也可以同样工作。