网上可以参考的资料实在是不多, 驱动裁剪绝对比添加更讲究, 这是本人花了不少时间总结的一点知识点, 后续还会持续更新, 点个赞吧~
删除驱动是一个费时耗力的工作, 由于内核工作的不确定性, 有时候不小心删除一个驱动或者什么code 就会导致内核起不来 !
所以要严格遵守裁剪流程, 做好每一次改动的备份!!!
Tips:
!!!首先要确保你会熟练的使用Git!!!
驱动裁剪流程
根据之前的分析, 仅仅是make ARCH=arm64 savedefconfig, 内核默认配置界面的改动是非常小的, 如果那几个改动的驱动需要的话, 完全可以直接手动添加到defconfig文件中.(可以确定, 只是少了6个CONFIG, 可以直接添加到文件末尾), 那么后面的流程基本可以确定了, 直接使用这个流程即可.
1. 没有对应硬件的驱动
这点毋庸置疑, 连硬件都没有, 驱动根本都加载不上去. 找到后直接删除即可.
尤其是开机log中显示, 挂载失败的.
2. 根据业务逻辑删除驱动
根据使用到的业务逻确认使用的硬件, 再去根据这个硬件来确认驱动的使用情况来进行删减.
3. 删除时的注意事项
尽量实现按照块进行删除, 也就是一次性删除一整个工作类型的驱动.
驱动删减使用流程指令
分为驱动删减和git备份
驱动删减
make ARCH=arm64 rockchip_linux_defconfig
make ARCH=arm64 menuconfig
make ARCH=arm64 savedefconfig
vim defconfig // 添加几个缺少的驱动rm rockchip_linux_defconfig
mv defconfig rockchip_linux_defconfig
cp rockchip_linux_defconfig arch/arm64/configs/
cd arch/arm64/configs
mv rockchip_linux_defconfig rockchip_linux_defconfig_backup
./build.sh kernel
// 测试, 查看是否正常使用, 测试ok就可以保存
cp rockchip_linux_defconfig /home/xhz/kernel_pruning/defconfigs
// 此时应该使用add提交到本地仓库
git提交备份阶段
为什么要使用git提交? 因为这会让你有后悔药, 防止修改了某些参数导致编译失败或者内核起不来, 可以及时回档, 就是这样...
git add .
git commit -m "//date注释,1:16..."
git push
文件查找命令
grep -rnw '/home/xhz/Neardi/Neardi-3588-SDK-Linux-V3.0/kernel/drivers' -e "lt8912"
中间的对比
配置好的defconfig文件可能需要添加之前缺少的几个项,
然后每次都对比看看差异大不大.
CONFIG_USB_WDM=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_NET_CDC_NCM=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y// 每次保存配置固定会缺失的几个选项, 还是挺有用的, 这种情况只能手动添加进去...
封面图: [doge]