查看: 4015|回复: 0

编译Openwrt时,如何自动调节固件大小

[复制链接]

该用户从未签到

发表于 2016-1-27 12:40:51 | 显示全部楼层 |阅读模式
分享到:
今天突然发现,在编译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目录下会有固件产生,固件名必包含编译的路由器型号,如果没有这两个文件,说明编译失败,有可能为编译时候选择的包太多,需重新选择后进行编译。编译成功后如下图:

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-20 01:54 , Processed in 0.115633 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.