OpenWrt是一个开源路由系统项目,给了用户自己刷路由系统的简便方法。lede是基于OpenWrt的开源项目,打包维护了大量符合国情的功能,本文便是以lede为基础编译安装自己的路由系统。
我的硬件是gl.inet-usb150
。
一、环境
1、 Openwrt/lede系统建议使用ubuntu14.04
,我使用的vagrant
安装,你也可以自己用virtualbox
安装,后文称此系统为编译机
,并且建议配置4G内存用于编译,因为我用1G内存编译失败,原因是内存不够。
这里我的步骤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
liuxu:~/source/vagrant$ mkdir openwrt
liuxu:~/source/vagrant$ cd openwrt
liuxu:~/source/vagrant$ vagrant init ubuntu/trusty64
liuxu:~/source/vagrant$ cat Vagrant
...
config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
vb.memory = "4096"
end
#
...
liuxu:~/source/vagrant$ vagrant up
liuxu:~/source/vagrant$ vagrant ssh
vagrant@vagrant-ubuntu-trusty-64:~$
这样便连进编译机了。
2、 由于国情,网络各种无法连接,所以很多软件依赖包无法直接下载,你需要有能力访问外网,并在编译机里配置好,否则不会编译成功。我这里使用proxychains-ng,配合了某大众悉知的socks代理。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
vagrant@vagrant-ubuntu-trusty-64:~/proxychains-ng$ jobs
[1]+ Running nohup ./local.py -s ... -b 127.0.0.1 -l 1080 > /dev/null 2>&1 & (wd: ~)
vagrant@vagrant-ubuntu-trusty-64:~$ git clone https://github.com/rofl0r/proxychains-ng.git
vagrant@vagrant-ubuntu-trusty-64:~$ cd proxychains-ng/
vagrant@vagrant-ubuntu-trusty-64:~$ make
vagrant@vagrant-ubuntu-trusty-64:~$ make install
vagrant@vagrant-ubuntu-trusty-64:~$ sudo cp proxychains.conf /etc/
vagrant@vagrant-ubuntu-trusty-64:~/proxychains-ng$ tail -n3 /etc/proxychains.conf
# defaults set to "tor"
socks5 127.0.0.1 1080
vagrant@vagrant-ubuntu-trusty-64:~/proxychains-ng$ proxychains4 curl -I www.google.com
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/local/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.14-git-8-gb8fa2a7
[proxychains] Strict chain ... 127.0.0.1:1080 ... www.google.com:80 ... OK
HTTP/1.1 200 OK
Date: Tue, 24 Dec 2019 08:50:02 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2019-12-24-08; expires=Thu, 23-Jan-2020 08:50:02 GMT; path=/; domain=.google.com
Set-Cookie: NID=194=WpIqxmViapaVZst7M6snlu00geYVxpyYPckW5gKk3eopgdI9OfCuMajnvHLRSv-UsiDdNIgcCRKEdwdoYSottZHZOnQWlJmfSyO-vt-XhNwXZ6MCvSd6VJOhQjw91alRpdmeLw0DiGdE8zzAreewoCp0g4eZpyPDKVGOckiB9Xk; expires=Wed, 24-Jun-2020 08:50:02 GMT; path=/; domain=.google.com; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding
现在万事就绪,准备开始编译Openwrt/lede系统了。
三、编译OpenWrt/lede
1、安装依赖。
1
vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler
2、下载OpenWrt/lede系统。
1
2
3
4
5
vagrant@vagrant-ubuntu-trusty-64:~/proxychains-ng$ cd
vagrant@vagrant-ubuntu-trusty-64:~$ git clone https://github.com/coolsnowwolf/lede
vagrant@vagrant-ubuntu-trusty-64:~$ cd lede
vagrant@vagrant-ubuntu-trusty-64:~$ ./scripts/feeds update -a
vagrant@vagrant-ubuntu-trusty-64:~$ ./scripts/feeds install -a
3、选择内核编译选项。
这里其实很简单,因为我的硬件是gl.inet-usb150
,OpenWrt项目默认支持,所以直接选择我的硬件。
1
vagrant@vagrant-ubuntu-trusty-64:~$ make menuconfig
选择以下两项,必选。使用上下键浏览选项;空格选择可选项,为*
是编译到内核,为M
是编译为模块;使用enter和esc进入退出选项组;使用左右键导航保存退出内核配置。
1
2
3
4
Target System ()
Atheros AR7xxx/AR9xxx 选择
Target Profile
GL.iNet GL-USB150 选择
接下来都是可选的,其实可以跳过这里直接去看编译。
OpenWrt/lede的应用全部在LuCI/Applications
下面,所有路由管理界面可以看到的都在这里。我下面选择了某些工具,例如删除pp*p
和ftp
,给s*r
添加v2**y
支持。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
LuCI
Applications
luci-app-pp*p-server 取消
luci-app-s*r-plus
Include V2**y 选择
Network
ppp 取消
File Transfer
vsftpd 取消
P2P
Link libcryptopp statically 取消
VPN pp*pd 取消
Kernel modules
Network Support
kmod-ppp 取消
kmod-gre 取消
Other modules
kmod-gpio-button-hotplug 取消
4、编译内核。
1
vagrant@vagrant-ubuntu-trusty-64:~$ proxychains4 -q make -j1 V=s
如果网络好,几十分钟后就可以编译成功了,编译的固件在bin/
目录下。
1
2
vagrant@vagrant-ubuntu-trusty-64:~/lede$ ls -lh bin/targets/ar71xx/generic/openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin
-rw-r--r-- 1 vagrant vagrant 12M Dec 24 08:13 bin/targets/ar71xx/generic/openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin
把它复制到你的物理机上,我的是vagrant
,所以直接有同步目录。
1
vagrant@vagrant-ubuntu-trusty-64:~/lede$ cp bin/targets/ar71xx/generic/openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin /vagrant/
四、更新路由固件
gl.inet-usb150默认就是OpenWrt系统,直接选择更新就行。
点击“系统”——“备份/升级”,选择最下面的“刷写新的固件”,选择刚才编译好的openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin
,点击“刷写固件…”,弹出新页面,点击“处理”,等待几分钟即可。
最后OpenWrt/lede默认登录帐号是root
,密码是password
,如果你改过密码,并且刷写是没有清除配置,就用你自己的密码登录。
五、总结
整个流程就是这样了,编译一次就会发现很简单。如果需要别的功能或者要删除某功能,可以再次进入第三步第3节选择自己需要的功能重新编译。这时编译会很快,因为大量的依赖包已经下载到了本地。