为什么有些硬件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系统配置