Build Your Own Kernel Headers for uConsole_CM4

 

为 uConsole_CM4 构建自定义内核头文件

前言

自从我拿到 uConsole 后,我就一直在与糟糕的 WiFi 信号作斗争。似乎一些 CM4 用户也遇到了类似的问题。虽然论坛上已经有不少相关讨论,但我想分享一下我的解决方案。

使用 USB WiFi 适配器的解决方案

我决定尝试使用“支持”的 USB WiFi 适配器,目标是找到一个即插即用的适配器。然而,市场上并没有太多符合我要求的选择。

最终,我选择了 COMFAST CF-812AC(使用 RTL8812CU 芯片组),主要因为它价格合理且支持 2.4GHz 和 5GHz 双频段,非常适合网络嗅探。

然而,ClockworkPi 使用了自定义的内核,这个内核并不支持该适配器!

幸运的是,可以通过编写 Linux 驱动来解决问题,但新的挑战在于——ClockworkPi 并不提供其自定义内核的头文件。

构建自定义内核头文件

1. 安装必要的软件包

首先,安装编译内核所需的软件包:

sudo apt install crossbuild-essential-arm64 build-essential gcc-aarch64-linux-gnu flex bison libncurses-dev libssl-dev libelf-dev

2. 克隆树莓派内核仓库

接下来,克隆树莓派的官方内核仓库,ClockworkPi 正是基于该内核进行定制的:

注意:这是一个庞大的仓库,克隆过程可能需要一些时间。

git clone https://github.com/raspberrypi/linux.git
cd linux

3. 切换到特定的提交

将本地仓库切换到已被打上补丁的特定提交:

git reset --hard 3a33f11c48572b9dd0fecac164b3990fc9234da8

4. 应用 ClockworkPi 的补丁

下载并应用 ClockworkPi 的补丁:

wget https://raw.githubusercontent.com/clockworkpi/uConsole/master/Code/patch/cm4/20230630/0001-patch-cm4.patch
git apply 0001-patch-cm4.patch

5. 开始构建内核头文件

现在开始构建内核头文件。需要注意的是,构建过程可能需要较长时间(6 小时以上!):

KERNEL=kernel8 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
KERNEL=kernel8 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j2

6. 安装模块

创建模块目录,清理目录内容,然后安装模块:

mkdir ./modules
rm -rf ./modules/*
INSTALL_MOD_PATH=./modules make modules_install
sudo cp -r modules/lib/modules/5.10.17-v8+/build /lib/modules/5.10.17-v8+/

结语

至此,你应该已经成功安装了内核头文件。如果你也想在 Kali Linux 上使用同款芯片组进行监听,可以参考 rtl88x2bu_mon 项目。