制作自己的openwrt刷机包_OpenWRT的ROM固件内置软件包修改与定制
1、下载Feeds
Feeds是OpenWrt环境所需要的软件包(opk)资源管理组件,在make menuconfig中配置built-in的软件包时会依赖Feeds。Feeds需要连接互联网才能执行更新操作。
在执行更新之前可以通过查看’feeds.conf.default’文件,来检查哪些文件需要包含在环境中,例如:
src-git packages https://github.com/openwrt/packages.git;for-14.07
src-git luci https://github.com/openwrt/luci.git;luci-0.12
src-git routing https://github.com/openwrt-routing/packages.git;for-14.07
src-git telephony https://github.com/openwrt/telephony.git;for-14.07
src-git management https://github.com/openwrt-management/packages.git;for-14.07
src-git oldpackages http://git.openwrt.org/14.07/packages.git
#src-svn xwrt http://x-wrt.googlecode.com/svn/trunk/package
#src-svn phone svn://svn.openwrt.org/openwrt/feeds/phone
#src-svn efl svn://svn.openwrt.org/openwrt/feeds/efl
#src-svn xorg svn://svn.openwrt.org/openwrt/feeds/xorg
#src-svn desktop svn://svn.openwrt.org/openwrt/feeds/desktop
#src-svn xfce svn://svn.openwrt.org/openwrt/feeds/xfce
#src-svn lxde svn://svn.openwrt.org/openwrt/feeds/lxde
#src-link custom /usr/src/openwrt/custom-feed
其中不需要使用的可以用#号注释掉。
下载或更新feeds,执行如下命令:
$ ./scripts/feeds update -a
安装feeds包,只有安装之后,在后面的make menuconfig时,才可以对相关配置进行勾选,执行如下:
$ ./scripts/feeds install -a
如果更新了feeds的配置文件,需要添加新的软件包用于生成系统。需重复操作update和install。
执行完下载更新操作后,会在/feeds文件夹下出现与feed名称对应的文件夹,例如:
feeds
├── luci
│ ├── applications
│ ├── build
│ ├── contrib
│ ├── i18n
│ ├── INSTALL
│ ├── libs
│ ├── LICENSE
│ ├── Makefile
│ ├── modules
│ ├── NOTICE
│ ├── po
│ ├── protocols
│ ├── THANKYOU
│ └── themes
│ ├── info
│ └── location
├── management
│ ├── freecwmp
│ ├── freenetconfd
│ ├── libev
│ ├── libfreecwmp
│ ├── libmicroxml
│ ├── libnetconf
│ ├── libssh
│ ├── shflags
│ └── shtool
├── oldpackages
│ ├── admin
│ ├── devel
│ ├── ipv6
│ ├── lang
│ ├── libs
│ ├── multimedia
│ ├── net
│ ├── skels
│ ├── sound
│ └── utils
└─── packages
├── admin
├── CONTRIBUTING.md
├── devel
├── ipv6
├── lang
├── libs
├── LICENSE
├── multimedia
├── net
├── README.md
├── sound
└── utils
每个文件夹下还有子文件夹,这层的子文件夹是对软件进行分组归类的,把软件分成多类,以便于方便查找。而且归类的名称与make menuconfig中的归类名称对应,如果在make menuconfig中选软件包时不知道在哪一类时,可以先到此文件夹中查找,找到后就能在menuconfig中的对应位置找到,并选择编译ipk或built-in。
2、配置要Built-in的软件包
使用make menuconfig进行配置,通过文本对话框进行选项配置,最主要的配置项有:
Target system(目标系统类型)
Package selection(软件包选择)
Build system settings (编译系统设置)
Kernel modules (内核模块)
[*]表示:这个包裹选中编译,并安装在firmware中;
[M]表示:这个软件包选中编译,但并不安装在firmware中。
在退出Menuconfig的时,会提示是否保存配置,选择保存退出。
3、修改默认配置文件
防火墙firewall初始化配置及其他相关文件位置:package/network/config/firewall/files/
package/base-files/files/lib/functions/uci-defaults.sh文件是用来初始化设置网络参数的脚本,可以根据需要修改初始化的网络参数。target/linux/ar71xx/base-files/etc/uci-defaults/02_network脚本文件为编译系统时放在系统/etc/uci-defaults/路径下的网络初始化执行脚本。
4、编译
执行make V=s,进行编译。
编译到软件包阶段时会经历如下过程:
根据menuconfig中的软件包配置,并参考Feeds相关配置,下载软件源码;
解压源码到/builtd_dir/相应的Platform文件夹中;
执行/feeds/中指定feed文件夹下对应软件名的Makefile,该路径下一般包含/files,Makefile,/patches
/files文件夹下一般包含某些配置文件,或者被Makefile所使用的文件,例如安装php5软件包时,php.init文件就在这个文件夹下,如果需要在软件built-in时就指定php.ini文件,就可以在这里进行修改。
/patchs包含对软件相关调整的patch文件。
框架计划
5、固件完全定制示例
现以生成ar9331平台的OpenWRT内置安装lighttpd、php5的最小系统固件为例:
下载并更新feeds;
在menuconfig中选择以下软件包:lighttpd
lighttpd-mod-cgi
lighttpd-mod-fastcgi
lighttpd-mod-alias
lighttpd-mod-access
libsqlite3
php5
php5-cgi
php5-fastcgi
php5-mod-ctype
php5-mod-pdo
php5-mod-sqlite
php5-mod-pdo-sqlite
php5-mod-session
php5-mod-tokenizer
php5-mod-sqlite3
php5-mod-sockets
php5-mod-json
修改/feeds/oldpackages/lang/php5/files/php.ini文件extension=sqlite3.so
extension=ctype.so
extension=pdo.so
extension=pdo_sqlite.so
extension=session.so
extension=tokenizer.so
取消这几行的注释,以启用相关扩展功能。
修改feeds/packages/net/lighttpd/files/lighttpd.conf文件,找到如下几项,并按需求修改:server.modules = (
"mod_access",
"mod_alias",
"mod_cgi",
"mod_fastcgi"
)
index-file.names = ( "index.php", "index.html", "default.html", "index.htm", "default.htm" )
#cgi程序的默认扩展名由以下配置决定,可以自己添加自己的扩展名:
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" )
#添加后给相应扩展名的文件分配执行程序:
cgi.assign = ( ".php" => "/usr/bin/php-cgi" , ".cgi" => "/bin/sh")
如果使用FastCGI,做如下配置,如果只用CGI,可以跳过这一步:fastcgi.server = (
".php" => (
"localhost" => (
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/local/bin/php"
)
)
)
这一步可以跳过,为了节省系统编译时间,可以修改barrier_breaker/target/linux/ar71xx/image/Makefile文件,此文件中包含了最后生成image镜像的路由器型号,全部注释掉,只留下自己需要的,能节省大量编译时间;
这一步也可以跳过,根据需要修改下面两个文件:
target/linux/ar71xx/image/Makefile$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET,gl-inet-v1,GL-INET,ttyATH0,115200,0×08000001,1,8Mlzma))
可以只保留需要的,其余可以全部注释掉;
tools/firmware-utils/src/mktplinkfw.c.id = "GL-INETv1",
.hw_id = HWID_GL_INET_V1,
.hw_rev = 1,
.layout_id = "8Mlzma",
根据Flash大小,修改8Mlzma位置,单位是MB(兆字节)。
默认的wifi参数设置,在文件package/kernel/mac80211/files/lib/wifi/mac80211.sh件中,有这样一段代码:cat <
config wifi-device radio$devidx
option type mac80211
option channel ${channel}
option hwmode 11${mode_band}
$dev_id
$ht_capab
# REMOVE THIS LINE TO ENABLE WIFI:
#option disabled 1
config wifi-iface
option device radio$devidx
option network lan
option mode ap
option ssid OpenWrt
option encryption none
EOF
这段代码是出厂时,对wifi的设置,也就是/etc/config/wireless文件的模板,可以根据需要进行修改。
目录package/base-files/files/下的文件是文件系统中最基本的组成文件,这些文件都可以根据需要进行修改与ding
源码中package/base-files/files/lib/functions/uci-defaults.sh,该脚本包含了系统设置的默认值,根据需要修改值
比如修改默认的LAN口IP设置:ucidef_set_interface_lan() {
local ifname=$1
uci batch <
set network.lan='interface'
set network.lan.ifname='$ifname'
set network.lan.force_link=1
set network.lan.type='bridge'
set network.lan.proto='static'
set network.lan.ipaddr='192.168.6.1'
set network.lan.netmask='255.255.255.0'
set network.lan.ip6assign='60'
EOF
}
执行make编译OpenWRT;
编译后生成的镜像文件保存在开发目录bin文件夹下
OpenWRT编译后的rootfs目录在“build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/”,可以直接在该目录下看到编译完的文件系统中的所有文件。
制作自己的openwrt刷机包_OpenWRT的ROM固件内置软件包修改与定制相关推荐
- OpenWRT的ROM固件内置软件包修改与定制
为什么80%的码农都做不了架构师?>>> 1.下载Feeds Feeds是OpenWrt环境所需要的软件包(opk)资源管理组件,在make menuconfig中配置buil ...
- 制作自己的openwrt刷机包_OpenWrt简要刷机教程
准备工作 1. 下载openwrt中文固件到PC.(当然其他英文固件也可) 2 找到路由器的RST键. 3 找到路由器刷机口---姑且称之为"WAN口" 4. 关闭路由器的电源 ...
- 制作自己的openwrt刷机包_手机刷机包如何制作?自己如何制作刷机包?
展开全部 一.32313133353236313431303231363533e78988e69d8331333433633964 准备ROM包 说明: 该工具支持ROM卡和线包,支持general. ...
- note edge android 6.0 root,三星Note Edge N9150刷机包带ROOT权限固件ZCU1BOH2线刷Rom
最新官方优化流畅系统救砖包三星galaxy Note Edge N9150刷机包带ROOT权限固件N9150ZCU1BOH2线刷Rom 推荐使用(安卓软件园刷机精灵),内置了数万ROM刷机包一键在线刷 ...
- android 4.3刷机包,联想B8080-F官方固件刷机包4.3rom线刷包(Root权限+驱动)
联想B8080-F平板YOGA手机:支持联通3G网络,还支持联通移动2G网络,单卡手机配置为: 处理器:四核心(高通骁龙 MSM8268 ARM Cortex-A80 ) 内存RAM:2048MB 电 ...
- 360手机论坛刷机包 360手机ROM下载 360手机官网刷机包 360手机刷机包分享下载
360手机论坛刷机包 360手机ROM下载 360手机官网刷机包 360手机刷机包分享下载 参考:360手机-360刷机360刷机包twrp.root 360刷机包360手机刷机:360rom.gi ...
- 三星I9220刷机包 新蜂ROM V4.1 高级设置 全透明天气插件
ROM介绍: [V4.1版本特性] 1.系统浏览器升级全新内核,极速.省流 2.修复部分bug [V4.0版本特性] 1.增加授权管理Kinguser 2.删除权限管理 3.删除google+ 4.更 ...
- 小米4Linux刷机包,小米4官方固件rom系统刷机包下载_小米4原版系统升级包
小米4手机的官方固件rom刷机包已经出来了,并且在官网上也可以看到,也有很多人都已经下载了,今天在这里就是把官方的固件包整理在一起方便大家下载了,这些固件包都是小米官方原版的miui刷机包,非常的实用 ...
- 红米4鸿蒙系统刷机包,红米4官方固件rom系统线刷刷机包_红米4线刷官方系统升级包...
下面把咱们的这个红米4手机专用的官方的固件rom系统包也来分享一下了,不知道有没有机友需要的,相信很多机友给手机系统进行升级的时候还是借助于手机里自带的升级功能来进行升级的,很少有机友单独下载线刷包来 ...
最新文章
- 对于未来的多种可能,这几位中国科学家想说
- 下一代 MES,智能制造的骨架
- python string库_《python标准库》--string
- C++ sizeof与strlen
- 第一次spring,第三天。
- boost / vs2017 编译 boost 1.68.0 的过程说明
- java ssm框架详解_Java的SSM框架怎样才算真正掌握?
- 电饼锅的样式图片价格_2020年三明治机/电饼铛推荐选购指南,电饼档那个牌子好?有哪些好用的三明治机/早餐机/电饼铛?...
- set注意点map遍历
- Qt split字符串分割
- 学画画软件app推荐_路由器管理软件哪个好?6款路由器管理APP推荐_软件评测
- js获取两个数组不同的元素并返回不同元素组成的数组,并对不同的元素添加一个新的属性
- 朋友借我10万并把房产证交给我,写了借条,并在借条上写明了用此房产做抵押,有效吗?
- 数据类型、变量和数组
- 2018年小美赛C题参赛经历
- 网络安全技能竞赛之Web安全之综合渗透测试
- java中hash值什么意思_到底什么是hash?它起什么作用?
- 2021中国开源年会无锡城市分会场开源点亮无锡
- 国产手机均价下跌,苹果逆势增长,iPhone仍是消费者最爱
- 面试系列之-如何选择外包与自研公司
热门文章
- STM32-(08):USART通信基础
- iomanip I/O流类库操纵符
- Linux服务器操作习惯培养
- flask 开启debug 以及development模式
- Wannafly挑战赛27
- 访客管理系统 - 天天访客
- iOS 9公测开启 智能预测/省电模式亮相
- scott.emp视图或表不存在,解决scott用户解锁问题
- 解决audio: Failed to create voice `goldfish_audio'错误
- 自动在副屏/虚拟屏启动100%鲜橙汁 | 可用于上班摸鱼