用 Imagebuilder 自行编译 LEDE 系统(安装包)

前言

OpenWRT/LEDE 是一种基于 Linux 且面向路由器的操作系统,但市面上所有民用路由器即开即用,我们又何苦折腾?简而概之,我想要自由检索 Google Scholar ;百度搜索实在不忍直视;我想要给 Xbox One 加速,畅快的玩战地1、命运2、光晕;同时,下载期刊论文又不要校内IP,我偶尔也为玩农药,看吃鸡直播,因此我也不想开全局代理;我买了小米智能设备,但是我想对Siri说“早安”,于是自动开灯开空调。最重要的是,我有手机,有手表,有Kindle,有笔记本,还有台式电脑,不想像神经病一样一会开代理一会关代理,事实上,我就是想要免配置、自适应、无缝地在各个设备上自动选择合适的网络。

为了在路由器实现上述功能,我首先需要刷OpenWRT\LEDE系统,这里我就主要阐述LEDE的编译方法。此外,LEDE如果支持你的设备,可以直接下载,但是我自己编译是为了放心,也是为了实践,更是为了向里面加一点黑科技。

我使用 Netgear WNDR4300 路由器,在默认配置的基础上,增加如下特性:

  • 默认应用全部 128MB NAND 空间(默认设备只应用了其中32MB 空间,留下的可折腾空间根本不够用)
  • 集成 Qos 功能
  • 集成更详细的流量统计功能
  • 集成基于Nat6模块(默认为relay方式)
  • 集成中文界面
  • 集成网络硬盘服务器模块(支持NTFS、EXT和FAT格式的U盘或移动硬盘作为数据盘)
  • 集成BT下载客户端,挂机下载不需要开电脑
  • 集成梯子…

编译记录:

###第一天,LEDE说要有Linux操作系统,于是

###第二天,LEDE说要有必备软件,于是

Ubuntu 17.10 运行如下命令

1
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev

CentOS 运行如下命令

1
sudo yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel zlib-static make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt ncurses-libs sed sdcc intltool sharutils bison wget git-core openssl-devel xz

OpenSUSE 42.3 运行如下命令

1
sudo zypper install patterns-openSUSE-devel_basis zlib-devel-static git-core

第三天,LEDE说下载 ImageBuilder 工具包

OpenWRT\LEDE 默认只使用了 WNDR4300 128MB NAND 空间中的 32MB,浪费了剩余96MB,虽然可以通过overlay方式制定安装软件到剩余空间,但是麻烦…

1
2
3
4
5
6
7
8
9
10
cd ~
mkdir -p code/lede
cd code/lede

wget https://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/nand/lede-imagebuilder-17.01.4-ar71xx-nand.Linux-x86_64.tar.xz
tar -xf lede-imagebuilder-17.01.4-ar71xx-nand.Linux-x86_64.tar.xz
cd lede-imagebuilder-17.01.4-ar71xx-nand.Linux-x86_64

make info
sed -i s/'23552k(ubi),25600k@0x6c0000(firmware)'/'120832k(ubi),122880k@0x6c0000(firmware)'/ target/linux/ar71xx/image/legacy.mk

在这里可以根据当前最新版本号更新一下17.01.04这个字段,同时,若你的路由器不是WNDR4300,你也可以根据自己情况更新一下ar71xx这个字段。

为内置梯子做一些优化

打开

1
2
3
4

```bash
src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/LEDE/base/mips_24kc
src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/LEDE/luci

保存后关闭。

集成软件并编译

运行下面命令以编译LEDE系统:

1
make image PROFILE="WNDR4300V1" PACKAGES="ca-bundle ca-certificates luci-i18n-base-zh-cn luci-i18n-firewall-zh-cn luci-app-samba luci-i18n-samba-zh-cn block-mount kmod-usb-storage-extras kmod-fs-ntfs kmod-fs-vfat kmod-fs-exfat kmod-fs-ext4 vnstat luci-app-vnstat luci-i18n-vnstat-zh-cn qos-scripts luci-app-qos luci-i18n-qos-zh-cn ip6tables kmod-ipt-nat6 luci-ssl luci-theme-bootstrap luci-theme-openwrt transmission-daemon transmission-web luci-app-transmission luci-i18n-transmission-zh-cn ip-full ipset iptables-mod-tproxy libev libpthread libpcre libmbedtls libsodium libcares shadowsocks-libev*.ipk luci-app-shadowsocks*.ipk ChinaDNS*.ipk luci-app-chinadns*.ipk dns-forwarder*.ipk luci-app-dns-forwarder*.ipk" -j 4

根据自己的路由器,更换PROFILE的内容(见之前make info的结果)。

编译完成后,在bin/ar71xx目录下找到两个文件:

1
2
lede-17.01.4-ar71xx-nand-wndr4300-ubi-factory.img
lede-17.01.4-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar

img结尾的文件用来tftp刷机,tar结尾的文件用来在OpenWRT\LEDE系统升级。