|
今天突然发现,在编译Openwrt时,如果固件的大小选择过小,而实际过程中编译时添加的软件包过多过大则会导致编译不出想要的固件,如下图:
出现这种情况目前本人已知的有两个原因:
一.编译HG255d时target/linux/ramips/image目录下的MakeFile中屏蔽了固件的输出
打开hg255d的固件生成选项
- cd target/linux/ramips/image
- vi MakeFile
复制代码
搜索hg255d,将带有hg255d的两行前面的注释符#去掉重新编译就好了
二.编译过程中所选择生成的固件太小,软件过大
这里以703N,使用trunk源码编译为例(trunk与backfire需要更改的文件不一样)
新版本trunk,703N编译8M固件需要更改以下两个文件:
(1)修改mktplinkfw.c文件
- cd /turnk/tools/firmware-utils/src/mktplinkfw.c
在mktplinkfw.c中找到703N的相关属性,
.id = "TL-WR703Nv1",
.hw_id = HWID_TL_WR703N_V1,
.hw_rev = 1,
.layout_id = "8Mlzma",(改成8,因为我们的SOM9331板子Flash为8M)
(2)修改Makefile文件
- cd /trunk/ target/linux/ar71xx/image/Makefile
在该目录Makefiel中找到以下内容
$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))
将4改成以上的8;参考下图
修改完成以上两个文件后,即可make V=99进行编译。
Backfire源码需要改动的文件,第一个与trunk一样,第二个文件位于
openwrt/backfire/target/linux/ar71xx/files/arch/mips/ar71xx目录下,找到对应的设备型号进行更改即可。
按照上面的方法修改后重新编译完成,在bin/ar71xx目录下会有固件产生,固件名必包含编译的路由器型号,如果没有这两个文件,说明编译失败,有可能为编译时候选择的包太多,需重新选择后进行编译。编译成功后如下图:
|
|