是否可以在 chroot 下编译内核模块?

是否可以在 chroot 下编译内核模块?

在 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 中应该也可以同样工作。

相关内容