UBNT的稳定性一直不错,特别是3.6.1的版本,最新的4.0.4大数据传输后,第二天老死机,连接不上。此文就针对3.6.1进行讲解怎么分离固件和最终生成固件。

1、下载​SDK.UBNT.v3.6.1.4873.tar.bz2,进行解压

tar xvf​​SDK.UBNT.v3.6.1.4873.tar.bz2

2、进入​./apps/gpl/mkfwimage/src,运行make,生成mkfwimage、fwsplit。

​mkfwimage: 用于创建固件的格式,包含kernel、cramfs(rootfs)、RedBoot;

​fwsplit:用于分离固件,把固件进行逆向操作,得到固件各分区的内容。

​3、进入./kernel/linux-kernel-2.4/scripts/squashfs,运行make,生成mksquashfs。
mksquashfs:用于创建rootfs分区的格式文件;

但还缺少解压squashfs格式的程序,这个好办,只要apt-get install squashfs 就可以安装最新的squashfs程序包,用unsquashfs 命令,进行解压操作。

4、mkfwimage、fwsplit、mksquashfs、unsquashfs 四大工具都备齐,就可以按以下操作,进行固件的分离、解压、修改、再合并生成固件。

4.1、固件的分离

fwsplit NanoStation2-v3.6.1.build4866.bin

将得到NS2.ar2316.v3.6.1.4866.110330.1244.cramfs、NS2.ar2316.v3.6.1.4866.110330.1244.kernel、
​​​​NS2.ar2316.v3.6.1.4866.110330.1244.RedBoot和NS2.ar2316.v3.6.1.4866.110330.1244.txt 四个文件,其中前三个为分区文件,最后一个记录固件的分区位置。

4.2、​NS2.ar2316.v3.6.1.4866.110330.1244.cramfs就是rootfs系统,且为squashfs文件格式。用unsquashfs命令,进行解压,就可以看到root目录下的一切。

4.3、接下来就按自己的需求添加程序、修改配置,就不多说了。

4.4、把修改好的root​​目录,进行打包,参数参照./rootfs/create_image.sh:

​# finally make the image

${MKSQUASHFS} ${stagingdir} $img -be -all-root -noappend

chmod 755 $img

这样就生成了rootfs分区数据。

4.5、​修改NS2.ar2316.v3.6.1.4866.110330.1244.txt,把NS2.ar2316.v3.6.1.4866.110330.1244.cramfs
,替换成新生成的rootfs分区文件名。

4.6、合并​各分区,生成固件,参照./rootfs/Makefile:

$(MKFWIMAGE) -i $${FW_INFOFILE} -v $(VER_LS) -o ${VER_LS}$${LAYOUT_SUFFIX}.bin;​

​这里的$${FW_INFOFILE},指代的就是NS2.ar2316.v3.6.1.4866.110330.1244.txt配置文件;$(VER_LS),指代的是“NS2.ar2316.v3.6.1.4866.110330.1244”字符串,最后一个就是生成的固件名称。

PS:这样生成的固件头为“OPEN”字符串,可以对​​mkfwimage程序进行修改,把"OPEN"替换成“UBNT”,这样生成的固件头就和官方的更一致了。

最后送上修改好的固件:​https://pan.baidu.com/s/1miprlES

标签: none

添加新评论