OpenWrt Image Builder 制作带插件的HG255D固件记录

前几天写了一个编译Openwrt ipk包的博客《Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)》,那篇文章是以WNDR4300为例,使用恩山上大神编译的纯净版固件,然后自己下载ss和luci的github源码使用openwrt SDK编译出ipk安装包,然后又在openwrt官网上找到ss和luci相关的依赖安装,实现了最新版的ss和luci界面,并支持UDP转发的ss代理。

但是WNDR4300昂贵的价格注定了它应用范围不会太广,只在家里用用都觉得奢侈。而将同样的功能移植到华为 hg255d这个又老又便宜的路由器上才是生产力。

首先华为hg255d具备16m ROM和32m RAM,已经具备了只能路由器的最低配置,完全可以跑Openwrt和ss插件。同样300m的路由器比如极路由1s要一百多快,而且刷好ss版的要更贵

其次我试过使用网山大神给的纯净版固件,不过内核版本都不一致,luci的依赖包kmod-iptable-tproxy安装不上,没有图形界面可用性就大大降低了。

最后其实最重要的是,刷好op的hg255d在某宝二手的售价仅为25人民币,想想这么点钱就能买一个能装插件的智能路由器,而且还能开发USB、多拨等功能,实在是太超值了。

所以一方面为了获得最新的ss和luci插件,另一方面避免固件内核不一致带来的烦恼,非常需要自己动手编译一套固件。

在我的操作过程中发现ImageBuilder编译固件的过程要比SDK编译ipk包容易的多,也不容易出错,但是想要把ss这样的功能直接编译进固件里面,还是需要学会SDK编译ipk包的方式,编译固件的主要目的不是为了添加新的软件,而是为了解决ipk包的依赖,因为openwrt官网上给出的依赖包内核版本经常变化,不能通用。

下文会以Openwrt CC 15.05 为例,具体介绍如何在Ubuntu环境下交叉编译纯净版固件,向固件中添加依赖库,制作整合ss等功能固件的方法

首先我们先通过SDK编译最新版的ss及其luci ipk安装包,具体方法可以看我之前的一篇文章:《Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)

然后我们就有了shadowsocks-libev_2.5.5-2_ramips_24kec.ipk,luci-app-shadowsocks_1.3.6-1_all.ipk两个文件,先留着备用,当然没有这两个文件也不耽误我们编译固件,可以略过此步。

下面说一下各版本固件的作用:

纯净版固件:用于观察ss或者其他第三方程序的依赖包,为编译完整版做基础。也可以做普通上网用

依赖包版固件:因为ss等插件频繁更新,而固件我们只想编译一次,所以这个版本的固件只编译进ss的所有依赖包,方便以后opkg升级ss使用

完整版ss固件:方便别人安装使用,一劳永逸的固件。

下面我们编译一个纯净版固件,尽可能少的安装依赖和服务,力图将ROM大小降到最低,满足日常上网要求即可的高稳定性低资源消耗的纯净版本。

第一步:登录openwrt官网,根据CPU型号找到hg255d编译工具的下载界面,也就是:https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt305x/


其中,packages是我们安装ipk时寻找依赖包的地方

ImageBuilder是今天的主角,用来生成bin固件的

SDK是编译Github上c源码成ipk包的 

下面我们就下载ImageBuilder准备生成固件吧,首先下载这个tar包,在windows上随意下载,linux上可以直接使用wget下载,不过国内的网速实在很慢,很容易失败,这个tar包大小在1.5G左右,尽量使用断点续传工具加国外代理进行下载。

下载之后放到Ubuntu系统上,使用tar xjf Openwrt-ImageBuilder-15.05-ramips-rt305x.Linux-x86_64.tar.bz2解压这个tar包,由于这个包1.5G那么大,需要等个两三分钟,不要以为是死机了,耐心的等等就好。差一点的电脑可能要登上5分钟或更久。

解压完成之后,直接cd进解压完毕的文件夹中,现在我们有两件很重要的事情需要做

1、将ImageBuilder的Makefile放开对HG255d的支持

2、选择合适依赖包编译进固件

其中第一点尤为重要,要是没有处理ImageBuilder的Makefile,不管你编译多少次都编译不出能用的固件来的。方法也不麻烦,编辑如下文件:

nano target/linux/ramips/image/Makefile
搜索HG255D,去掉前面的注释符#,至于官方为什么要注释掉这一行,有一种说法是官方的版本只在lintel u-boot上测试过,如果刷在带原厂u-boot的HG255D上会出问题,这也许是官方没有提供HG255D固件下载的原因吧。


下面开始选择合适的依赖包。

为什么要选择依赖包呢,因为此时如果直接使用make是可以编译出openwrt固件来的,不过这样的固件几乎除了一个内核之外别的什么都没有,没有web界面的路由器后台。所以要把路由器后台的luci界面和一些其他和网络NAT有关的依赖包编译进去,语法格式是

make image PROFILE=HG255D 

# HG255D为路由器名字, 默认只有基础包
make image PROFILE=HG255D PACKAGES=”pk1 pk2 pk3 -pk4” 

# -pk4表示去掉pk4包

所以按照以往的经验,我这里给出一个基础依赖包的列表

make image PROFILE=HG255D PACKAGES="base-files busybox dropbear firewall fstools jsonfilter libc libgcc mtd netifd opkg procd swconfig ubox ubus ubusd uci usign kmod-lib-crc-ccitt kmod-ipv6 kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-nf-conntrack kmod-nf-conntrack6 kmod-nf-ipt kmod-nf-ipt6 kmod-nf-nat kmod-ppp kmod-pppoe kmod-pppox kmod-slhc kmod-gpio-button-hotplug kmod-spi-bitbang kmod-spi-gpio kmod-ath kmod-ath9k-common kmod-cfg80211 kmod-mac80211 libip4tc libip6tc libxtables libblobmsg-json libexpat libiwinfo libjson-c libnl-tiny libubox libubus libuci ip6tables iptables hostapd-common iw odhcp6c odhcpd ppp ppp-mod-pppoe iwinfo jshn libjson-script uboot-envtools base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools kmod-gpio-button-hotplug swconfig uboot-envtools kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-usbdev wget luci iptables-mod-nat-extra bind-dig dnsmasq-full kmod-leds-gpio wpad-mini kmod-usb-dwc2"
其中,最后三个包是openwrt指明单独要给hg255d路由器添加的,可以使用make info来查看

其实就是LED指示灯和USB接口的驱动

在列表中luci就是路由器后台的web管理界面,luci-ssl指https连接,会因为没有证书报站点不安全的异常,所以我们不用luci-ssl,用luci。

wget是用于http下载,下载一些ipk包的时候会用的上。

iptables用来做端口转发,十分必要

dnsmasq换成dnsmasq-full,方便以后用ipset做域名过滤,功能比dnsmasq强大的多。网上有人说要先去掉dnsmasq再安装如"-dnsmasq dnsmasq-full"但是我也没详细测试,因为在我打出的版本中,dnsmasq已经支持ipset了,或许并非是真正的dnsmasq-full,但是对于ipset来说已经够用了


其余的包都是系统必备的一些包,多数我也不清楚是做什么用的。kmod开头的经常会因为openwrt.org提供的内核版本发生变化,所以为了以后扩展方便,尽量把常用的kmod包都打进去

好了执行上面那一坨命令,开始编译,编译过程大概分一下几部:

1、从openwrt.org更新本地依赖包的列表

2、根据更新后的依赖包列表和上面要求编译的包名,去openwrt.org下载相应的ipk包

3、把指定的ipk包编译进固件中

速度视网速而定,一般三四分钟就可以搞定,多数时间都在下载,编译其实很快的。

编译中如果出现哪个包无法编译,直接把这个包从列表中拿走就行

比如我们在列表中加一个不存在的包“kmod-auth9k”就会报如下错误


这时候只要在列表中删掉它即可

正常编译的命令如下,注意列表上不要有换行


编译成功后的终端显示如下


然后就可以在/bin/ramips中找到编译好的固件,如下


然后我们的纯净版固件就这样做好了,整个过程比编译ipk简单。我编译出来的纯净版大小为5377KB,已经是比较大了,网上有很多纯净包甚至编译进ss的包菜3点几兆。所以说明我们的纯净包并不纯净,比如编译进了很多kmod和dnsmasq-full这样的程序。

现在把这个固件通过web后台或者tftp的方式刷进路由器看看长啥样


注意:在点击更新固件之后不要将路由器断电,大约要等10分钟左右,tftp会快一点,可以不停的ping 192.168.1.1,知道能稳定的ping通就算刷完了,可以浏览器打开192.168.1.1,这个固件因为没有配置LED指示灯,所以不插lan线所有灯都不亮属正常现象(包括电源指示灯都不亮)。

刷成功之后只有LAN灯亮,wifi默认关闭

下一步我们就要配置路由器后台的登录密码,不然没法用SSH登录路由器获取root权限,推荐用户名root,密码root

然后我们就可以通过SSH软件登陆路由器安装apk了,我使用的是Xshell5


可以看到纯净版没有安装ss。

下面我们将ss的ipk安装包通过winscp上传到路由器上尝试安装,并解决依赖。


先安装ss,再安装luci界面


从图中可以看出,安装ss非常顺利,不需要解决什么依赖(我在wndr4300上装需要解决两个依赖)在安装luci界面的时候提示安装ipset依赖,于是我们去openwrt官网下载ipset ipk安装包


放到路由器上去继续安装


然后发现ipset还需要依赖包libmnl,那我们就先安装libmnl,再安装ipset,再安装luci-Shadowsocks,如上图

luci安装好之后我们就可以试试能不能用啦


可以看到Shadowsocks-libev已经可以正常运行了


路由器后台也出现了Shadowsocks的服务按钮


点进去之后发现已经可以配置了,只是UDP转发还不能用,提示缺少iptables-mod-tproxy和ip两个包,那么我们继续下载安装


这其中发现还需要额外安装一个依赖包kmod-ipt-tproxy

现在应该都能用了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
华为HG255D刷机工具及固件大全,全套共计,40个固件,最新的神雕、博爱固件,内附刷机教程,亲测可用! 文件目录: ├ │ ├0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin │ ├1102-0x20000_hg255d-squashfs-tftp.checksum2.bin │ ├httpd-uboot.bin │ ├ralink.bin │ ├tftp.exe │ ├tftp2.exe │ ├Tftpd32.exe │ ├tftpd-uboot.bin │ ├u-boot-web.bin │ ├WinHex.exe │ ├不拆机更换HG255D的U-BOOT并刷OPENWRT.doc │ └固件IP.txt ├ │ ├(电信原版u-boot)h255d_tel_uboot.bin │ ├适合于电信原本的uboot的OpenWrt固件-.rar │ ├ │ │ ├新建 Microsoft Word 文档.doc │ │ ├ │ │ │ ├HG255d35.bin │ │ │ ├HG255dV100R001C01B035版本本地升级指导书.dot │ │ │ ├新建 文本文档.txt │ │ │ └中国升级页面.html ├ │ ├0219openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├0702-DreamBox-ramips-rt305x-hg255d-squashfs-tftp.bin │ ├0909-DreamBox-ramips-rt305x-hg255d-squashfs-litel.bin │ ├1019-DreamBox-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1119-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1123-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1128-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1201-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1204-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├1226-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade (1).bin │ ├131028-石像鬼-hg255d-by可乐.bin │ ├140708-纯净版-Flash_16M_openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├20121029-Dreambox-ralink-hg255d-squashfs-Alpha.bin │ ├2013-08-03-0840-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├2013-08-04-0920-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade.bin │ ├20130822-openwrt-hg255d-PIN码专用.bin │ ├2013-10-26-1538-openwrt-ramips-rt305x-hg255d-squashfs-sysupgrade多功能版.bin │ ├20131101-1615-op-hg255d-by可乐.bin │ ├HG255D dd-wrt固件.bin │ ├HG255D博爱固件-2015.bin │ ├OP-0402-Gargoyle.zip │ ├OP-0413汉化-Gargoyle初始密码 password .zip │ ├OP-0828迷你版.bin │ ├OP-最新版0413-Gargoyle初始密码 password .zip │ ├PandoraBox-ralink-hg255d-r189-20141020(hg255d

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值