因为爱好,陆续入手了树莓派2B、3B+、4B。入手树莓派4B后,老的2B、3B+就闲下来了,然后就想着能不能用树莓派3B+来刷一个OpenWrt做个旁路由玩玩。OpenWrt的官网有树莓派的固件下载,自然不用折腾,如果想有些可玩性,就需要做一些定制,比如Lean、Lienol两位大神的定制OpenWrt。由于定制的OpenWrt没有现成树莓派固件下载,只能自己动手编译,同时添加一些自己喜欢的功能组件。以下的内容都是参考网上大神们的,主要是为自己提供记录和备忘。
一、准备工作
(一)安装Ubuntu
编译OpenWrt树莓派固件需要在Linux环境下进行,建议使用 Ubuntu 14.04.6 LTS 64位的Server版(不建议使用Desktop版本)。下载地址如下:
http://releases.ubuntu.com/trusty/ubuntu-14.04.6-server-amd64.iso
Ubuntu可以安装在虚拟机上,如VirtualBox(https://www.virtualbox.org/)。Ubuntu安装好了以后,还要进行一些组件的更新,建议在系统装好后修改Ubuntu软件更新源。把软件更新源设置成国内的地址,这样更新起来更快一些,可以节省很多时间。
Ubuntu 的软件源配置文件是 /etc/apt/sources.list。在修改软件源配置文件之前,需要对原始配置文件做一个备份。输入如下命令:
cp /etc/apt/sources.list /etc/apt/sources.list.backup
软件源配置文件如何修改,可以参考清华大学的Ubuntu镜像站点。选择相应的Ubuntu版本,然后将配置信息拷贝覆盖到自己的sources.list文件里。 清华大学的Ubuntu镜像站点 如下:
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
(二)设置编译用户
编译OpenWrt不能使用root用户,因此需要新建一个普通用户用于编译。
1、新建一个名叫openwrt的用户:
sudo useradd -m openwrt -d /home/openwrt -s /bin/bash
2、设置新创建用户openwrt的密码:
sudo passwd openwrt
3、为新创建用户openwrt赋予sudo权限
由于新创建的用户,无法使用sudo命令,因此需要给新创建用户openwrt赋予sudo权限。赋予sudo权限需要修改/etc/sudoers文件,这个文件是个只读文件(只有r权限),因此在修改之前还要为文件增加可写权限(增加w权限),修改完成后再改为只读文件(去掉w权限)。
(1)修改/etc/sudoers文件权限
sudo chmod +w /etc/sudoers
(2)用编辑器打开/etc/sudoers文件
编辑器用vi、vim、nano都可以。
sudo vim /etc/sudoers
(3)修改/etc/sudoers内容
#User privilege specification root ALL=(ALL:ALL) ALL //在这一行后面增加一行 openwrt ALL=(ALL:ALL) ALL //这是新增加的,为openwrt赋予sudo权限
修改完成后,保存退出。
(4)将/etc/sudoers文件改回只读属性
sudo chmod -w /etc/sudoers
二、编译OpenWrt树莓派(Raspberry Pi)固件
在Ubuntu系统安装完成之后,可以开始编译OpenWrt了。网上有两个非常好的定制版本的OpenWrt,GitHub地址如下:
https://github.com/Lienol/openwrt https://github.com/coolsnowwolf/lede
下面以Lienol的OpenWrt为例进行编译。使用普通用户(之前新建的名叫openwrt的用户)进入Ubuntu系统。
更新编译所需的Ubuntu系统组件
输入命令:
sudo apt-get update
执行完成后,再输入命令:
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3.5 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
执行上面的命令可能需要一定的时间。因此,在前面我们对Ubuntu的更新源进行了一些设置,以便加快更新速度,节省一些时间。
从GitHub下载源码
输入下面的命令,从GitHub下载源代码。
git clone -b dev-19.07 https://github.com/Lienol/openwrt
设置编译配置文件
下载好源代码好后,进入openwrt目录。
cd openwrt
在openwrt目录下输入命令。
./scripts/feeds clean ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig
然后会显示相关参数配置界面。在下图红框所示的几个选项选择要编译硬件,当然是选择Raspberry Pi 3B+了。其他默认配置基本不用动,如果是要增删功能组件,可以到“LuCI”里看看。
选择相应的硬件后就可以开始编译了,输入编译命令。编译是一个漫长的过程,一般需要6~7个小时。
make -j1 V=s