刘泉皓

没有最强的法术,只有最强的法师。

一步一步编译openwrt详细说明

24 Dec 2019 » memory

OpenWrt是一个开源路由系统项目,给了用户自己刷路由系统的简便方法。lede是基于OpenWrt的开源项目,打包维护了大量符合国情的功能,本文便是以lede为基础编译安装自己的路由系统。

我的硬件是gl.inet-usb150

img01

一、环境

1、 Openwrt/lede系统建议使用ubuntu14.04,我使用的vagrant安装,你也可以自己用virtualbox安装,后文称此系统为编译机,并且建议配置4G内存用于编译,因为我用1G内存编译失败,原因是内存不够。

这里我的步骤:

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代理。

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、安装依赖。

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系统。

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项目默认支持,所以直接选择我的硬件。

vagrant@vagrant-ubuntu-trusty-64:~$ make menuconfig 

选择以下两项,必选。使用上下键浏览选项;空格选择可选项,为*是编译到内核,为M是编译为模块;使用enter和esc进入退出选项组;使用左右键导航保存退出内核配置。

Target System ()
    Atheros AR7xxx/AR9xxx 选择
Target Profile
    GL.iNet GL-USB150 选择

img01

接下来都是可选的,其实可以跳过这里直接去看编译。

OpenWrt/lede的应用全部在LuCI/Applications下面,所有路由管理界面可以看到的都在这里。我下面选择了某些工具,例如删除pp*pftp,给s*r添加v2**y支持。

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、编译内核。

vagrant@vagrant-ubuntu-trusty-64:~$ proxychains4 -q make -j1 V=s

如果网络好,几十分钟后就可以编译成功了,编译的固件在bin/目录下。

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,所以直接有同步目录。

vagrant@vagrant-ubuntu-trusty-64:~/lede$ cp bin/targets/ar71xx/generic/openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin /vagrant/

四、更新路由固件

gl.inet-usb150默认就是OpenWrt系统,直接选择更新就行。

img03

点击“系统”——“备份/升级”,选择最下面的“刷写新的固件”,选择刚才编译好的openwrt-ar71xx-generic-gl-usb150-squashfs-sysupgrade.bin,点击“刷写固件…”,弹出新页面,点击“处理”,等待几分钟即可。

img04

最后OpenWrt/lede默认登录帐号是root,密码是password,如果你改过密码,并且刷写是没有清除配置,就用你自己的密码登录。

五、总结

整个流程就是这样了,编译一次就会发现很简单。如果需要别的功能或者要删除某功能,可以再次进入第三步第3节选择自己需要的功能重新编译。这时编译会很快,因为大量的依赖包已经下载到了本地。


知识共享许可协议    鄂ICP备 15002452号-5    鄂公网安备 42088102000048号