编译 Linux 内核

最新硬件使用 strongpi_nand_defconfigsun8i-v3s-strongpi-spinand.dtb。同一套内核和设备树也可放入 TF 卡镜像,TF 卡根文件系统位置由 TF 版 U-Boot 的启动参数指定。

生成默认配置

export PATH=/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-

cd ~/v3s-workspace/kernel
make mrproper
make strongpi_nand_defconfig

检查蓝牙固件目录

RTL8723BS 蓝牙控制器在根文件系统挂载前初始化,因此固件需要内建到内核。默认配置使用内核目录的相对路径:

../strongpi-v3s-support/rootfs_overlay/lib/firmware

按本手册的工作区结构放置源码时,直接确认两个固件文件存在:

ls -l \
  ~/v3s-workspace/strongpi-v3s-support/rootfs_overlay/lib/firmware/rtl_bt/rtl8723bs_fw.bin \
  ~/v3s-workspace/strongpi-v3s-support/rootfs_overlay/lib/firmware/rtl_bt/rtl8723bs_config.bin

如果改变了默认工作区结构,可再用 scripts/config --set-str EXTRA_FIRMWARE_DIR <实际路径> 覆盖该配置并执行 make olddefconfig

编译内核、设备树和模块

make -j"$(nproc)" zImage dtbs modules

主要产物:

arch/arm/boot/zImage
arch/arm/boot/dts/sun8i-v3s-strongpi-spinand.dtb

安装内核模块到根文件系统覆盖层

当前 Wi-Fi 驱动以模块形式编译。修改过内核或驱动后,更新板级支持包中的模块:

make INSTALL_MOD_PATH="$HOME/v3s-workspace/strongpi-v3s-support/rootfs_overlay" \
    modules_install

后续重新编译 Buildroot,新的根文件系统才会包含这些模块。

修改配置

make menuconfig

保存配置:

make savedefconfig
cp defconfig arch/arm/configs/strongpi_nand_defconfig

保存前应确认 CONFIG_EXTRA_FIRMWARE_DIR 仍使用可移植的工作区相对路径。不要把个人主目录的绝对路径作为发布配置直接分发。