乾以易知,坤以简能
易则易知,简则易从

自己动手编译OpenWrt树莓派(Raspberry Pi)固件

因为爱好,陆续入手了树莓派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”里看看。

OpenWrt Configuration
OpenWrt Configuration

选择相应的硬件后就可以开始编译了,输入编译命令。编译是一个漫长的过程,一般需要6~7个小时。

 make -j1 V=s

未经允许不得转载:易知简行 » 自己动手编译OpenWrt树莓派(Raspberry Pi)固件