OPENWRT 镜像生成器ImageBuilder 使用方法及说明

注意:官方网站下载的ImageBuilder 在编译固件时会出错,提示“权限不够”,在命令前加sudo 后提示“Error 126”错误!只能自己编译 ImageBuilder 来用!自编译 ImageBuilder 时,先在linux 环境下设置好再编译,编译后就会包含个性设置!

 

一、操作步骤:

1、 下载ImageBuilder 压缩包

http://downloads.openwrt.org/snapshots/trunk/ar71xx/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

也可自己编译;

 

2、 解压ImageBuilder 压缩包

tar -xjvf OpenWrt-ImageBuilder- ar71xx_generic-for-Linux-x86_64.tar.bz2

 

3、 进入解压后文件夹

cd Openwrt-ImageBuilder-ar71xx_generic-for-Linux-x86_64

4、 查看默认软件包和硬件支持列表

make info

 

make info

Current Target: “ar71xx(Generic)”  (ar71xx目前支持75种路由型号)

Default Packages: base-files libc libgccbusybox dropbear mtd uci opkg hotplug2 netifd kmod-leds-gpiokmod-gpio-button-hotplug kmod-wdt-ath79 swconfig kmod-ledtrig-default-onkmod-ledtrig-timer kmod-ledtrig-netdev kmod-ath9k wpad-mini uboot-envtoolsdnsmasq iptables ppp ppp-mod-pppoe kmod-ipt-nathelper firewall (默认有26个软件包,wr703n有28个包)
TLWR703:

TP-LINKTL-WR703N
kmod-usb-core kmod-usb2

 

5、 编译(8M固件增加39个软件包,x86增加55个包)

sudo make image PROFILE=x86PACKAGES=”block-mount librt luci luci-i18n-chinese luci-app-ddnsluci-proto-3g luci-app-hd-idle luci-app-p910nd luci-app-qos luci-app-sambaluci-app-upnp luci-app-wol  openvpnopenvpn-easy-rsa kmod-scsi-core kmod-scsi-generic kmod-fs-ext4 kmod-fs-ntfskmod-fs-vfat kmod-nls-utf8 kmod-nls-cp936 kmod-nls-cp437 kmod-usb-storage kmod-usb-storage-extraskmod-usb-ohci kmod-usb-uhci  kmod-usb2 kmod-usb-acmkmod-usb-serial kmod-usb-serial-ftdi kmod-usb-serial-pl2303 kmod-usb-serial-ch341kmod-usb-acm kmod-usb-printer kmod-video-core kmod-video-uvc mjpg-streamermotion ser2net badblocks e2fsprogs restorefactory coreutils transmission-daemontransmission-remote transmission-web vsftpd kmod-rtl8192se kmod-rt2800-usbkmod-rt2x00-usb kmod-rt2800-pci kmod-rt2x00-pci njit8021xclient njit8021xclient-webkmod-usb-hid” FILES=x86

 

本固件只适合已改机的8M/32M机器!
集成的软件有:luci,中文语言包,DDNS,硬盘休眠,openvpn,打印服务器,QOS,samba,upnp,relay,网络唤醒,USB挂载,硬盘格式支持(ntfs-3g/ext4/ntfs),UTF8编码,USB扩展支持,USB驱动,复位键支持,transmission下载工具,8187.3070等多种网卡驱动..

注意输入不要有错!前面输错了3个地方,找了很久!!!

 

编译前可以先从官方网站:http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/下载ipk文件并放到dl 文件夹里面以节省编译时间。放置文件出错一般是文件夹操作权限不够,除使用sudo命令外,还需要用chmod777 /home/submars/SDK 命令让文件夹获得最高的 777 权限。通过网络共享文件的方式复制到ubuntu中的文件(文件夹)只有普通用户权限,操作时需要sudo 命令提升权限!

 

编译过程中出现的错误和makefile文件中对应。

 

二、个性化设置方法:

1、在源码的menuconfig 菜单里设置好,再编译生成Imagebuilder,就会默认已经设置好的内容;

2、在Imagebuilder的根目录创建一个文件夹存放个性化的配置文件,然后在命令后面加上 FILES=文件夹名 就可以了。
rg. FILES = wr703n(常用的配置的文件的目录)

放在解压后的 imagebuilder 目录下就可以。
个性设置文件也可以直接复制Openwrt…/etc/config/*。

 

三、8M固件支持(新版本需要修改两个文件)
703n 最新SVN trunk版本更新很大,原来修改8m flash的结构体消失了

(1)/tools/firmware-utils/src/mktplinkfw.c 中代码:

static struct flash_layout layouts[] = {
{
.id               = “4M”,
.fw_max_len       = 0x3c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x140000,
}, {
.id               = “4Mlzma”,
.fw_max_len       = 0x3c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x100000,
}, {
.id               = “8M”,
.fw_max_len       = 0x7c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x140000,
}, {
.id               = “8Mlzma”,
.fw_max_len       = 0x7c0000,
.kernel_la       = 0x80060000,
.kernel_ep       = 0x80060000,
.rootfs_ofs       = 0x100000,
}, {
/* terminating entry */
}
};

static struct board_info boards[] = {
}, {
.id               = “TL-WR703Nv1”,
.hw_id               = HWID_TL_WR703N_V1,
.hw_rev               = 1,
.layout_id       = “4Mlzma”,     //只需将此处修改为8Mlzma
}, {
}

(2)在imagebuilder下面修改(如果用imagebuilder 来编译固件,需修改此处!)
/target/linux/ar71xx/image/Makefile

把703n最后的4Mlzma改成8Mlzma!

 

所有设置完成后用make defconfig检查,确保得到类似以下结果:

openssl-util………………………Open source SSL toolkit (utility) (PACKAGE_openssl-util) [Y/?] y

owipcalc………………………..Simple IPv4/IPv6 address calculator (PACKAGE_owipcalc) [N/m/y/?] n

OpenWrt提取系统镜像

前言:在路由器中flash了openwrt系统,并安装了许多软件及相关配置,现想将整个系统的镜像提取出来,并flash到另一台相同的设备中。

方法

1.先查看fireware分区所对应的mtd设备

## 输入命令
cat /proc/mtd

## 输出以下结果
dev:    size   erasesize  name
mtd0: 00030000 00001000 "u-boot"
mtd1: 00010000 00001000 "u-boot-env"
mtd2: 00010000 00001000 "factory"
mtd3: 007b0000 00001000 "firmware"  ## 关键
mtd4: 00180d87 00001000 "kernel"
mtd5: 0062f279 00001000 "rootfs"
mtd6: 003be000 00001000 "rootfs_data"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2.备份固件文件到/tmp目录


dd if=/dev/mtd3 of=/tmp/firmware_backup.bin

## 注意要及时从/tmp目录中拷贝到U盘或其他存储设备中,否则断电后会消失

  • 1
  • 2
  • 3
  • 4
  • 5

3.恢复、flash固件

恢复固件的方法:将firmware_backup.bin上传到/tmp目录中,然后执行


mtd -r write /tmp/firmware_backup.bin firmware

  • 1
  • 2
  • 3

此过程路由器将会重启

flash到其他设备的方法:直接在luci界面中升级固件选项flash即可。