Compile Kernel Module

使用 porteus 的时候,发现网卡不支持,找了一下发现有内核驱动可以用,那就需要编译一下内核的模块。

这里有一个帖子写了如何编译内核,主要步骤是先给内核打 aufs 的补丁,然后就是正常的 make config && make && make modules_install 了。

我这只是编译一个网卡驱动,操作步骤大概如下,把内核解压放到 /mnt/sda1/kernel 下面,然后把网卡驱动代码放到 /mnt/sda1/kernel/linux-4.16.3/drivers/net/wireless/rtl8821ce 下面。

# cd /mnt/sda1/kernel/linux-4.16.3/
# modprobe configs && zcat /proc/config.gz > .config
# make oldconfig
# make prepare
# make modules_prepare
# export srctree=/mnt/sda1/kernel/linux-4.16.3
# ln -s /mnt/sda1/kernel/linux-4.16.3 /usr/src/linux
# cd drivers/net/wireless/rtl8821ce
# make

然后在这个目录下面会产生一个 rtl8821ce.ko 的文件。

如果是遇到自己用的内核有一个模块没编译,那可以用下面的方式

# after make modules_prepare
# make modules SUBDIRS=drivers/firmware/efi/

这样会在 drivers/firmware/efi/ 目录下面产生一个 xx.ko 之类的文件。

把上面产生的 ko 文件放到你的 linux 的对应目录就可以使用 modprob 加载了,例如 /lib/modules/4.16.3-porteus/kernel/drivers/net/wireless/8821ce.ko