为什么有些硬件OpenWrt不支持?
OpenWrt的kernel对该硬件支持完善,但缺乏相关的适配。只需要做简单适配flash layout、gpio、dts等。
OpenWrt的kernel对该硬件的驱动支持不完善 ,如缺乏相关的驱动、DTS支持。缺乏PHY驱动、无线网卡驱动、交换机驱动等。
OpenWrt的kernel不支持该平台,但官方的kernel或者主线kernel支持此硬件。全新的SOC芯片,例如:Apple M1芯片、RK3568、IPQ6018等。
从宏观角度上讲适配OpenWrt的原理
针对kernel,添加硬件驱动的支持,让外设跑起来。driver support,需要熟悉dts、硬件的datasheet、调试是关键。
针对kernel,添加arch级别的支持,让CPU跑起来。platform support,通常SOC厂商会提交相应patch到内核。
如何适配OpenWrt不支持的硬件?
适配OpenWrt的kernel,也可使用官方或者主线kernel。
适配Bootloader(U-boot) ,也可以使用机器自带的U-Boot。
适配configs、脚本、patch、Makefile等,如:生成Image的Makefile、 /etc/board.d、/lib目录的脚本、内核默认配置等。
适配的一般步骤 (rootfs模式)
研究官方文档
编译OpenWrt
配置交叉编译工具链
编译kernel
编译U-boot
构建刷机镜像
微调OpenWrt系统配置