总结一下OpenWRT编译经验

不问归期 提交于 2019-12-04 15:03:00
1.如何为固件增加软件包
软件包索引存储在feeds文件夹中,luci.index packages.index以及xwrt.index就是几乎所有软件包的索引


实例:从Openwrt trunk 移植 aria2 到 Openwrt backfire
察看trunk源码,在packages.index文件中搜索关键字"aria2",发现aria2软件包的描述
  1. Source-Makefile: feeds/packages/net/aria2/Makefile
  2. Package: aria2
  3. Submenu: File Transfer
  4. Version: 1.15.1-1
  5. Depends: +libc +USE_EGLIBC:librt +USE_EGLIBC:libpthread +libopenssl +zlib +libxml2 +libstdcpp
  6. Menu-Depends:
  7. Provides:
  8. Section: net
  9. Category: Network
  10. Title: lightweight download utility
  11. Maintainer: OpenWrt Developers Team <openwrt-devel@openwrt.org>
  12. Source: aria2-1.15.1.tar.bz2
  13. Type: ipkg
  14. Description:  aria2 is a lightweight multi-protocol & multi-source command-line download
  15. utility
  16. http://aria2.sourceforge.net/
  17. OpenWrt Developers Team <openwrt-devel@openwrt.org>
  18. @@
复制该段,粘贴到backfire固件源码的package.index文件中。
观察以上字段,有Source-Makefile: feeds/packages/net/aria2/Makefile 
因此,该软件的makefile就存放在feeds/packages/net/aria2中,将该文件夹复制到backfire固件的feeds/packages/net中
然后在终端中执行
  1. scripts/feeds install -a
  2. make menuconfig
如果没有问题,你应该可以发现在Network -> File Transfer分类中出现了aria2,选中它,编译就可以了

实例:从Openwrt trunk 移植 Transmission的Luci界面 到 Openwrt backfire
这个软件包是Luci软件包,因此,它的索引在luci.index中
在trunk源代码的luci.index中搜索关键字"Transmission",有
  1. Package: luci-app-transmissio
  2. Submenu: 3. Applications
  3. Version: 1
  4. Depends: +libc +USE_EGLIBC:librt +USE_EGLIBC:libpthread +PACKAGE_luci-app-transmission:transmission-daemon
  5. Menu-Depends:
  6. Provides:
  7. Build-Depends: lua/host
  8. Section: luci
  9. Category: LuCI
  10. Title: LuCI Support for Transmission
  11. Maintainer: LuCI Development Team <luci@lists.subsignal.org>
  12. Source: luci-.tar.gz
  13. Type: ipkg
  14. Description: LuCI Support for Transmission
  15. http://luci.subsignal.org/
  16. LuCI Development Team <luci@lists.subsignal.org>
  17. @@
将该段复制粘贴至backfire的luci.index中
察看trunk固件的feeds/luci/luci/Makefile,搜索关键字"transmission",有

  1. $(eval $(call application,transmission,LuCI Support for Transmission,\
  2.     +PACKAGE_luci-app-transmission:transmission-daemon))
将这段复制到backfire源代码的相同文件中
进入backfire源代码的dl文件夹中,解压luci的源代码包
同样解压trunk版的luci源代码包
从trunk版luci源代码包中将applications/luci-transmission文件夹复制到backfire版luci代码中
同样的,po文件夹中的是对应各个页面的翻译,我们需要从trunk版luci代码的po/zh_cn文件夹里,将transmission.po复制过来,这是一个文本文件,有必要可以对其进行翻译。
重新打包源代码从而覆盖旧的版本即可


2.修改默认中文界面
从Openwrt源代码的dl文件中找到luci源码包,解压它
进入该源码包的libs/web/root/etc/config,修改luci

  1. option lang auto
修改为
  1. option lang zh_cn
重新打包源码,覆盖原有的源码包


3.修改默认开启无线、修改无线名
打开package/mac80211/files/lib/wifi/mac80211.sh
在该文件的最下面,将
  1. option disabled 1
改为
  1. option disabled 0

另外,修改option ssid后的内容可以修改无线名称

4.为固件增加fullflash分区
打开target/linux/ar71xx/files/drivers/mtd/tplinkpart.c

  1. #define TPLINK_NUM_PARTS      5
改为
  1. #define TPLINK_NUM_PARTS    6
(即在原有的数值上加1)


然后在文件中找到以下内容
  1. parts[0].name = "u-boot";
  2.     parts[0].offset = 0;
  3.     parts[0].size = offset;
  4.     parts[0].mask_flags = MTD_WRITEABLE;
  5.     parts[1].name = "kernel";
  6.     parts[1].offset = offset;
  7.     parts[1].size = rootfs_offset - offset;
  8.     parts[2].name = "rootfs";
  9.     parts[2].offset = rootfs_offset;
  10.     parts[2].size = art_offset - rootfs_offset;
  11.     parts[3].name = "art";
  12.     parts[3].offset = art_offset;
  13.     parts[3].size = TPLINK_ART_LEN;
  14.     parts[3].mask_flags = MTD_WRITEABLE;
  15.     parts[4].name = "firmware";
  16.     parts[4].offset = offset;
  17.     parts[4].size = art_offset - offset;
在 parts[4].size = art_offset - offset 后面换一行,添加这段
  1. parts[5].name = "fullflash";
  2. parts[5].offset = 0;
  3. parts[5].size = master->size;

5.修改默认主机名
打开package/base-files/files/etc/config/system
修改option hostname后面的内容
时区和LED设置也在这个文件中




做完以上操作后,需要删除bin和bulid_dir来重新编译
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!