酷安APP 发现科技新生活

MacOS编译OpenWrt固件(Windows适用)

沚水

2018-10-15 Google Pixel XL

!本文拒绝「看看号」收录。

本篇教程使用系统为 MacOS Mojave,但是主要编译过程在 docker 内进行,所以 Windows 用户可自行安装 docker 并跳过第一步。

1. 安装 Docker

我自己的笔记本配置为 i5-5200u,8G ram,运行 macOS Mojave 系统。出于简便性以及一点点洁癖,编译过程并不直接在本机环境进行,而是通过 docker 完成。
要注意的是,教程内涉及到网络连接的步骤请自行准备畅通的网络环境或是对应的国内镜像。
MacOS 中,我们可以很轻松地通过 HomeBrew Cask 安装:
brew cask install docker
安装完毕后,启动,登入账号即可。

2. 配置编译环境

按照下列步骤建立一个容器
docker pull ubuntu
#获取最新的官方 ubuntu 镜像
docker run -itd --name ow ubuntu
#从ubuntu镜像新建一个别名为ow的容器
这样,我们就建立了一个名为 ow ,专门用来编译固件的容器。
(由于 OpenWrt 的编译需要区分大小写的分区环境,所以不是很建议直接将本地文件夹挂载到容器内)

ubuntu容器

然后进入容器,按下面步骤更新并安装必要的软件包

docker exec -it ow bash
#进入容器 ow 的 bash 环境
apt update apt upgrade
#更新软件源并升级软件包
apt install sudo nano
#安装 sudo 以及 nano 编辑器(使用 vim 亦可)
adduser zsakvo
#新建一个名为 zsakvo 的用户(名字随意)

由于 OpenWrt 的编译要求使用非 root 账户,所以我们需要自行新建账户而后切换之。安装 sudo 并添加权限则是为了便于后面安装必要的编译工具。

echo 'zsakvo ALL=(ALL:ALL) ALL' >> /etc/sudoers
zsakvo 为上一步你添加的用户名

切换进刚才新建的用户,安装必要工具

su zsakvo
zsakvo 为你的新建的用户名
sudo apt install git-core build-essential libssl-dev libncurses5-dev unzip
#安装交叉编译所需要的工具
sudo apt install subversion mercurial
#如果你需要 feeds 中的部分软件包则同时需要安装这两个

3. 获取源代码

在容器 ow 内拉取必要的源代码:

cd ~&&git clone git://git.openwrt.org/openwrt/openwrt.git
#进入主目录,并获取 OpenWrt 源代码
cd openwrt sudo apt install gawk wget
#安装必要的软件包
./scripts/feeds update -a
./scripts/feeds install -a
#下载并安装所有可用的 feeds
cd package&&git clone 查看链接 ../
#拉取 rosy 主题

4. 开始编译

首先要生成必要的 .config 文件:
make menuconfig

自行选择参数

包含Rosy主题

在配置界面按照实际情况进行修改,然后保存并退出,即可开始正式编译(我本人编译耗时两个小时左右):
make V=s -j4
#-j自行设定线程数

编译成功

编译成功后将编译好的文件复制出来即可:
docker cp ow:/home/zsakvo/openwrt/bin/targets/ramips/mt7620 mt7620
#注意替换自己的用户名与目录

编译好的固件包

5. 后记
这个主题并没有想象的那么好看!

7
28