SuperWRT是一基于Linux的无线路由器系统。
在SuperWRT之前已经有好多的第三方路由器系统,其中OpenWRT、DD-WRT、Tomato、RouterOS较为著名。当然还有一些基于它们开发的,或其它的小众系统。
SuperWRT希望走和之前的系统略有不同的路线,主要是下面几点:
更加稳定,仅提供必要功能,但保证更好的稳定性及性能。
友好的开发接口及扩展架构。
提供配套的集中管理平台。
SuperWRT系统环境
定制版本uboot
SuperWRT为了保证更友好升级特性,及全面的用户体验,开发了定制版本的uboot,SuperWRT系统需要与该uboot配合使用。
定制版本的uboot主要提供了以下特殊功能:
SuperWRT系统完整性校验。
传递设备硬件信息(SBI)给SuperWRT系统。
当系统升级失败后,通过读取系统配置,自动通过WAN连接重新尝试升级。
当系统启动失败后,通过读取系统配置,自动通过WAN连接下载恢复升级包并恢复系统。
其它的一些必要的升级及管理功能。
uboot中功能的使用,请参考:uboot使用说明
设备硬件信息
SuperWRT通过SBI(SuperWRT Board Info)存储设备硬件信息。通过使用SBI,SuperWRT系统及定制的uboot,可以适配不同的设备。
目前SBI通过在线定制uboot的系统,与uboot一起打包下载。
当然,SuperWRT系统也支持将SBI信息绑定在系统中。但目前我们不建议使用该方式,主要是因为,这样SuperWRT系统的版本必须针对该设备进行特殊打包处理,不利于后面的长期维护。
SuperWRT系统分区结构
SuperWRT默认使用firmware分区作为系统分区,使用该分区时,可以将linux kernel及rootfs放在一个分区内,在kernel后以8字节对齐方式加入rootfs。
SuperWRT也支持单独的kernel分区和rootfs分区,在升级时,如果发现没有firmware分区,会自动将系统文件拆分到kernel及rootfs分区。
SuperWRT的启动过程
提示:这里主要针对SuperWRT系统特殊的地方进行说明。
首先,通过芯片会运行定制版本的uboot。uboot会进行如下工作:
根据读取到芯片型号,自动进行相应配置(如:时钟频率,DDR,PCIE等)。
加载SBI信息,并进行相应初始化。
全部初始化工作完成后,进入uboot的主任务。
判断复位按键是否长按,如长按则等待,等待5s后,进入网页恢复系统功能。
判断用户是否按键中断系统启动,如是,则进行uboot命令行。
读取配置,判断是否需要使用WAN口升级系统。
解压linux内核到内存,并判断完整性,如正确则启动linux系统,将传递启动信息及SBI给linux系统。如文件破损,则读取配置,看是否有恢复文件URL及WAN连接信息使用,如有则使用WAN口恢复,如无,则进入网页恢复系统功能。
然后,启动时linux kernel会进行如下工作:
读取SBI信息,初始化相应的硬件。
如果使用firmware分区,则尝试定位rootfs位置,找到后设为rootfs用分区。
|