Image Generator (Image Builder)
如果你想要下载一个预编译好的镜像文件,或者想要尝试整个编译过程,一个替代方案是使用镜像生成器(Image Generator)(以前被叫做Image Builder)。这是一个预编译好的OpenWrt编译环境,适用于在无需编译的条件下创建自定义镜像。
使用镜像生成器的原因可以是:
- 将包文件直接嵌入SquashFS中,以减少目标设备上的磁盘空间要求。
- 通过嵌入包文件和直接在SquashFS中配置文件的方式预编译镜像,可以在需要给许多设备刷固件的时候节约人力。
- 编译最小化固件,例如不包含Web界面的。
- 热爱学习
镜像生成器适用于生成OpenWrt固件镜像文件的程序。在编译OpenWrt的过程中镜像生成器是被强制创建(编译)出的,因为最后在创建镜像文件的时候它是必不可少的。它的位置在/openwrt/trunk/xxx,你可以用它配合你编译时候获得的包文件来创建更多的镜像文件。
不过你也可以简单地下载一个包括镜像生成器和一整个OpenWrt的包文件在内的压缩包。
下载
针对OpenWrt 10.03 'Backfire',镜像生成器随着目标镜像一起被编译好,并且可以在服务器上下载。注意镜像生成器必须对稳定版和测试版都有效,如果不是的话,你就需要自己动手编译它。
- 浏览OpenWrt下载目录 http://backfire.openwrt.org/10.03/ 或者
- 进入你的以你的设备CPU型号命名的目录,比如ar71xx
- 下载镜像生成器压缩包,在32位宿主系统上下载i686,64位则下载x86_64
- 解压并进入镜像生成器的目录
cd ~
wget http://downloads.openwrt.org/backfire/10.03/ar71xx/OpenWrt-ImageBuilder-ar71xx-for-Linux-i686.tar.bz2
tar -xvjf OpenWrt-ImageBuilder-ar71xx-for-Linux-i686.tar.bz2
cd OpenWrt-ImageBuilder-ar71xx-for-Linux-i686/
使用说明
make image命令会创建一个只包含必不可少包文件的最小化镜像,这个命令可以通过三个传递过去的参数控制:
PROFILE- 指定要编译的目标镜像的配置PACKAGES- 要嵌入镜像的包文件的列表FILES- 要包含进去的自定义文件的目录
查看下面的说明部分,在make命令结束后,生成的镜像会被放到bin目录中。
ls bin/
md5sums openwrt-wrt350n_v1-squashfs.bin
openwrt-brcm-2.4-squashfs.trx openwrt-wrt54g-squashfs.bin
openwrt-usr5461-squashfs.bin openwrt-wrt54g3g-em-squashfs.bin
openwrt-wa840g-squashfs.bin openwrt-wrt54g3g-squashfs.bin
openwrt-we800g-squashfs.bin openwrt-wrt54gs-squashfs.bin
openwrt-wr850g-squashfs.bin openwrt-wrt54gs_v4-squashfs.bin
openwrt-wrt150n-squashfs.bin openwrt-wrtsl54gs-squashfs.bin
openwrt-wrt300n_v1-squashfs.bin
(配置)Profiles
(预定义的配置)Pre-defined Profiles
运行make info来获得一个预定义配置的列表
make info
Current Target: "brcm-2.4"
Default Packages: base-files libgcc ... kmod-switch kmod-diag nvram
Available Profiles: Broadcom:
Generic, Broadcom WiFi (default)
Packages: kmod-brcm-wl wlc nas kmod-wlcompat
BroadcomMimo:
Generic, Broadcom WiFi (MIMO)
Packages: kmod-brcm-wl-mimo wlc nas kmod-wlcompat
None:
Generic, No WiFi
Packages:
USBGeneric:
Generic USB
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-ohci kmod-usb2 ...
WL500G:
ASUS WL-500g
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-ohci kmod-lp ...
WL500GD:
ASUS WL-500g Deluxe
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-uhci kmod-usb2 ...
WL500GP:
ASUS WL-500g Premium
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-uhci-iv ...
WL700GE:
WL-700gE
Packages: ppp ppp-mod-pppoe kmod-ipt-nathelper iptables ...
WLHDD:
WL-HDD
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-ohci ...
WRT54G3G:
Linksys WRT54G3G
Packages: kmod-brcm-wl kmod-usb-core kmod-usb-ohci kmod-usb2 ...
…将适合的配置传给make命令
make image PROFILE=WL500GP |
增加/修改配置
针对预编译包文件brcm47xx-for-Linux-i686的配置被放在target/linux/brcm47xx/profiles中。
记住,要添加一个新的配置,你只需要将一个新的配置文件放入profiles目录中。
这里描述了profiles/100-Broadcom-b43.mk配置文件看起来什么样
define Profile/Broadcom-b43
NAME:=Broadcom BCM43xx WiFi (default)
PACKAGES:=kmod-b43 kmod-b43legacy
endef define Profile/Broadcom-b43/Description
Package set compatible with hardware using Broadcom BCM43xx cards
endef
$(eval $(call Profile,Broadcom-b43))
(包文件)Packages
当编译一个镜像的时候PACKAGES变量指定了一个要被包含进去的包文件的列表。如果一个包文件的名字前面有一个前缀-,那么这个文件会被从镜像中排除出去。
make image PROFILE=WL500GP PACKAGES="nano openvpn -ppp -ppp-mod-pppoe" |
Backfire 10.03.1-rc5及之后的版本: 镜像生成器现在在主机上面使用opkg命令来检测要被安装的包文件和解决他们的依赖关系(当你在使用External Repositories时特别有用),所以下面的警告并不会生效!
Backfire 10.03到10.03.1-rc4:使用PACKAGES=将不会在你的配置中安装任何默认包。确保你包含进了libuci,没有uciOpenWrt不会工作。你的路由可以启动但是没有界面会被配置这真是个有效地让你的路由变砖的方法(一开始设这了boot_wait可以让你通过tftp恢复路由)。
小提示:现在在你路由器上面已经安装的包文件可以通过下面的命令来获得:
echo `opkg list_installed | awk '{ print $1 }'`
小提示:官方镜像中包含的包文件列表可以通过下面的命令获得(在一台Linux主机上面)
echo `wget -qO - http://backfire.openwrt.org/10.03/brcm-2.4/OpenWrt.config | sed -ne 's/^CONFIG_PACKAGE_\([a-z0-9-]*\)=y/\1/ip'`
小提示:如果你想要移除一些默认包文件(例如你不需要pppoe相关的包),修改inclide/target.mk文件中的DEFAULT_PACKAGES and DEFAULT_PACKAGES.router区块。
文件
一个包含自定义文件的想要加入的目录可以通过使用FILES变量来指定,如果有必要的话自定义文件会替换掉默认已经存在的文件。
mkdir -p files/etc/config scp root@192.168.1.1:/etc/config/network files/etc/config/ scp root@192.168.1.1:/etc/config/wireless files/etc/config/ scp root@192.168.1.1:/etc/config/firewall files/etc/config/ make image PROFILE=WL500GP PACKAGES="nano openvpn -ppp -ppp-mod-pppoe" FILES=files/ |
清理
想要清理临时编译文件和生成的镜像,使用make clean命令。
(附加仓库)External Repositories
Trunk修订版从r22978之后在镜像生成器中开始支持附加仓库,这个选项会成为最后的10.03.1 release的一部分。 味儿了增加附加包文件仓库,编译最上级目录中的repositories.conf文件,软件园可以以opkg原生配置格式指定。
针对早期版本的镜像生成器,附件的包文件可以下载到packages/目录中,镜像生成器会在索引创建期间将它们收入。
转自:http://wiki.openwrt.org/zh-cn/doc/howto/obtain.firmware.generate
Image Generator (Image Builder)的更多相关文章
- Storm系列(三):创建Maven项目打包提交wordcount到Storm集群
在上一篇博客中,我们通过Storm.Net.Adapter创建了一个使用Csharp编写的Storm Topology - wordcount.本文将介绍如何编写Java端的程序以及如何发布到测试的S ...
- Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä'
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more ...
- java.sql.SQLException: Access denied for user 'root'@'10.1.0.2' (using password: YES)
java.sql.SQLException: Access denied for user 'root'@'10.1.0.2' (using password: YES) at com.mysql.c ...
- java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.net.URLClassLoader.findClass(URLC ...
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)解决方案
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql. ...
- Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器
Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器 Mybatis-plus官网: https://mp.baomidou.com/ Demo ...
- SpringCloud微服务实战——搭建企业级开发框架(三十一):自定义MybatisPlus代码生成器实现前后端代码自动生成
理想的情况下,代码生成可以节省很多重复且没有技术含量的工作量,并且代码生成可以按照统一的代码规范和格式来生成代码,给日常的代码开发提供很大的帮助.但是,代码生成也有其局限性,当牵涉到复杂的业务逻辑 ...
- .net测试篇之测试神器Autofixture Generator使用与自定义builder
有了上一节自定义配置,很多问题都能解决了,但是如果仅仅是为了解决一个简单问题那么创建一个类显得有点繁重.其实AutoFixture在创建Fixture对象时有很多方便的Fluent配置,我们这里介绍一 ...
- mybatis generator使用总结
一.mybatis项目的体系结构 百度mybaits,可以进入mybatis的github:https://github.com/mybatis. mybatis是一个大大的体系,它不是孤立的,它可以 ...
随机推荐
- 在Windows下安装64位压缩包版mysql 5.7.11版本的方法
为了学习数据库,自己去网上下载了最新版本的Windows64位的mysql 5.7.11,但是花了很长的时间在安装的问题上,同时也借鉴了几位前辈的博文来帮助自己解决在安装过程中遇到的问题,安装成功之后 ...
- jmeter 建立一个网络服务的测试计划
如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...
- CSS3:不可思议的border属性&Web字体图标Font Awesome
CSS3:不可思议的border属性 转载至——译文:不可思议的CSS border属性 原文:Magic of CSS border property Web字体图标Font Awesome 转载 ...
- WPF: DatePicker
获取DatePicker:date_Start上显示的时间date_Start.SelectedDate 比较两个dateTime类型的时间: DateTime StartDate =Convert. ...
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- 网页html结构右侧栏固定,左侧自适应大小。
最近写了一个项目,写页面的结构,html树形结构是有header,container,footer部分,其中container部分是右侧栏是固定宽度,左侧是自适应宽度与屏幕高度. 第一次写的博客文章是 ...
- 9. shell环境
• printenv –打印部分或所有的环境变量 • set –设置 shell 选项 • export —导出环境变量,让随后执行的程序知道. • alias –创建命令别名 1.shell环境:s ...
- 328. Odd Even Linked List——多利用fake_head
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- spring aop编程
1.AOP,面向切面编程(aspect Oriental programing),使用aop,可以将处理切面aspect的代码注入到主程序,通常主程序的主要目的不是处理这些切面aspect,可以防止代 ...
- java面向对象编程——第八章 类的高级概念
8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...