本帖最后由 guo4qing 于 2014-9-20 10:33 编辑
以我的wr720n为例子讲述
1.准备64位的ubuntu 14.04的iso 可以用虚拟机或者是硬盘启动该livecd都行 不需要安装
2.从https://downloads.openwrt.org/snapshots/trunk/ar71xx/下载官方编译好的https://downloads.openwrt.org/sn ... inux-x86_64.tar.bz2
2.解压 可以用ubuntu自带的归档管理器或者用tar -xpvjf ar71xx/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2
3.进入解压后的目录cd OpenWrt*
4.开始定制了 sudo make image PROFILE="TLWR720" PACKAGES="kmod-fs-ext4 kmod-fs-vfat kmod-fs-ntfs kmod-usb-storage block-mount luci luci-i18n-chinese kmod-rt2800-usb kmod-fs-cifs" FILES="files"
详细介绍用法了
PROFILE后面的是路由型号 这个不多说 输入make info就可以看到支持型号了
FILES的意思是 把files文件夹下面的所有文件(包括文件夹)拷贝到路由的系统里面去 一般就是配置文件
比如我 为了实现路由器默认开启wifi 需要在files下面建立etc/config/wireless文件 至于内容 呵呵 路由器正常开启wifi后 你们可以直接备份过来用
还有就是我让路由器 任何时候都支持telnet登陆 ssh太麻烦了 需要密码 而且登陆速度也太慢 而且我busybox已经集成了ftpd服务 不需要ssh传输文件
所以我在files目录下建立了bin文件夹 里面新建文件login1.sh 里面的内容么?
#!/bin/sh
exec /bin/ash --login
然后新建etc/init.d/telnet 文件
telnet修改如下
start_service() {
procd_open_instance
procd_set_param command "$PROG" -F -l /bin/login1.sh
procd_close_instance
}
这样以后 就算你设置了密码 telnet IP 也能轻松登陆了 哈哈
当然这些你们百度都是可以查到的
不过我要说的是 你们就算按照上面的命令定制
最后一定会失败的
为啥 因为空间不够了
所以我这个帖子要讲的是 如果干掉imagebuilder默认安装的那部分软件
比如dropbear firewall ip6tables odhcp6c
这四个软件我就认为是鸡肋
因为不用ssh所以干掉dropbear
反正这四个去掉之后 上面的定制就ok了
说下最终的命令了
sudo make image PROFILE="TLWR720" PACKAGES="-dropbear -ip6tables -odhcp6c kmod-fs-ext4 kmod-fs-vfat kmod-fs-ntfs kmod-usb-storage block-mount luci luci-i18n-chinese kmod-rt2800-usb kmod-fs-cifs" FILES="files"
没错 就是这样的
以前一直不知道 openwrt imagebuilder的PACKAGES=“”是可以用来删除默认软件的
只需要在你不想集成的软件前面加上“-”就行了
当然即便如此我没有装
当然这还没完 我发现最后firewall依然被安装了 所以我用了如下脚本给干掉了
IPKG_TMP="/media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/tmp/ipkgtmp"
IPKG_INSTROOT="/media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx"
IPKG_CONF_DIR="/media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/tmp"
IPKG_OFFLINE_ROOT="/media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx"
export PATH=$PATH:/media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/staging_dir/host/bin/bundled
mkdir -p /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/tmp/ipkgtmp
mkdir -p /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/bin/ar71xx /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/tmp
opkg -f /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/repositories.conf --force-depends --force-overwrite --force-postinstall --cache /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/dl --offline-root /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx --add-dest root:/ --add-arch all:100 --add-arch ar71xx:200 update
opkg -f /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/repositories.conf --force-depends --force-overwrite --force-postinstall --cache /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/dl --offline-root /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx --add-dest root:/ --add-arch all:100 --add-arch ar71xx:200 remove luci-app-firewall
opkg -f /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/repositories.conf --force-depends --force-overwrite --force-postinstall --cache /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/dl --offline-root /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx --add-dest root:/ --add-arch all:100 --add-arch ar71xx:200 remove firewall
rm -f /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/usr/lib/opkg/lists/*
rm -f /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx/usr/lib/opkg/info/*.postinst
mksquashfs4 /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/root-ar71xx /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.squashfs -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -b 256k -p '/dev d 755 0 0' -p '/dev/console c 600 0 0 5 1' -processors 1
cp /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.squashfs /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.squashfs-raw
mktplinkfw -H 0x07200103 -W 1 -F 4Mlzma -N OpenWrt -V r42429 -X 0x40000 -k /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/vmlinux-tl-wr720n-v3.bin.lzma -r /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.squashfs-raw -a 0x4 -j -o /media/ubuntu-kylin/d0cadeaf-3af8-4a0e-bddc-7436aa1d9037/openwrt/imagebuilder-snapshot-trunk-x64/bin/ar71xx/openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.
帖子就到这里了
呵呵 希望对大家多多能有帮助
如果想要编译编译8M的固件其实也很简单
直接使用sudo make image PROFILE="TLWR720" PACKAGES="-dropbear -ip6tables -odhcp6c kmod-fs-ext4 kmod-fs-vfat kmod-fs-ntfs kmod-usb-storage block-mount luci luci-i18n-chinese ***********************" FILES="files命令来执行
好 这一步完成后 如果集成软件太多 最后肯定报错 无法生成固件
没关系 我们最后再补上一条自己的命令
mktplinkfw -H 0x07200103 -W 1 -F 8Mlzma -N OpenWrt -V r42429 -X 0x40000 -k ./build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/vmlinux-tl-wr720n-v3.bin.lzma -r ./build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/root.squashfs-raw -a 0x4 -j -o ./bin/ar71xx/openwrt-8M-tl-wr720n-v3-squashfs-factory.
附上mktplinkfw的用法说明
Usage: mktplinkfw [OPTIONS...]
Options:
-H <hwid> use hardware id specified with <hwid>
-W <hwrev> use hardware revision specified with <hwrev>
-F <id> use flash layout specified with <id>
-k <file> read kernel image from the file <file>
-r <file> read rootfs image from the file <file>
-a <align> align the rootfs start on an <align> bytes boundary
-o <file> write output to the file <file>
-j add jffs2 end-of-filesystem markers
-N <vendor> set image vendor to <vendor>
-V <version> set image version to <version>
-X <size> reserve <size> bytes in the firmware image (hexval prefixed with 0x)
另外网上流行一种利用内核的kexec system call来实现的
一个固件加载另一个固件的方式来实现完全优盘切换固件
有兴趣可以研究下
https://www.right.com.cn/forum/f ... read&tid=129552
https://www.right.com.cn/forum/thread-115614-1-1.html
做好的openwrt固件 支持加载外置固件
理论上有了这个东西
可以免刷机切换openwrt ddwrt 石像鬼 固件
官方的固件么??
好吧 也可以
网上下载的bin固件 通过dd命令进行分离
可以得到uimage root.squashfs 两个文件
然后用unsuquash可以解压root.squashfs
至于uimage去掉64b的头就是完美的内核了
然后把解压的root重新打包为root.initramfs就行了 一般是cpio的gz压缩包
http://pan.baidu.com/s/1c0zpbX2
dtmm
希望wr720n更加强大
另外说下wr720n已经可以用来 和 百度网盘同步下载了
具体百度syncy 这货可以让openwrt和百度网盘绑定 从而实现文件下载 支持4G以上大文件 效率和速度都不错
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|