书接上会,之前用N100作为软路由。N100一切都挺好,但是功耗有点高,而且机器占地面积也有点大。同时所有功能都集成在N100的话,N100一旦重启,家里整个网络就崩了。还是有一个自己独立的软路由机器比较安全。

挑了一圈淘宝,还是友善家的R5C比较小巧好看。选好机器,接下来就是寻找固件了。可惜R5C的固件有点少,想想还是直接自己编译一个固件算了。

准备工作

  1. 国内用户最好有梯子环境
  2. Ubuntu 22.02 LTS
  3. 推荐配置机器的内存大于等于4GB

这里需要注意Ubuntu一定要是22.02 LTS,否则编译会出错。因为新的固件GCC版本已经到11,老的Ubuntu 18 GCC是9版本,GCC9编译会出现语法不兼容的问题。

其次一个重要的地方是需要有梯子,很多源码下载牵涉到链接github或者openwrt官网,没有梯子的话很容易因为文件下载失败重启。

最后内存大于等于4GB非常重要,编译过程中有一个步骤会使用大概2.7GB内存,内存太小的话,会直接编译失败。用swap内存也没办法解决这个问题。

为了简单的完成环境搭建,我就直接用中国香港的腾讯云配置环境了。腾讯云可以按量计费,配置的机器是SA5 4核16GB内存(AMD Yes)的机器,一个小时的开销大概是1.6元。

编译命令行

Lean大神的Git上,其实已经把编译的步骤写的非常清晰了。推荐不要使用root账号编译,因为腾讯云默认登陆的用户是ubuntu。

我这里就按照R5C的配置过程写一下:

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

拉取代码:

git clone https://github.com/coolsnowwolf/lede
cd lede

默认的插件列表会缺少一些关键内容:

echo 'src-git helloworld https://github.com/fw876/helloworld.git' >> feeds.conf.default

然后就可以开始更新feeds插件信息了:

./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

进入menuconfig之后,可以看到以下配置,我是R5C,是有会修改成:

OpenWrt Configuration【OpenWrt配置】Target System (RockChip)  --->   目标系统(瑞芯微)
Subtarget (x86_64)  --->   子目标(RockChip)
Target Profile (Generic)  --->目标配置文件(r5c)
Target Images  ---> 保存目标镜像的格式
Global build settings  --->      全局构建设置
Advanced configuration options (for developers)  ---- 高级配置选项(适用于开发人员)
Build the OpenWrt Image Builder 构建OpenWrt图像生成器
Build the OpenWrt SDK构建OpenWrt SDK
Package the OpenWrt-based Toolchain打包基于OpenWrt的工具链
Image configuration  --->图像配置
Base system  --->     基本系统
Administration  --->     管理
Boot Loaders  --->引导加载程序
Development  --->   开发
Extra packages  --->  额外包
Firmware  --->固件
Fonts  --->字体
Kernel modules  --->  内核模块
Languages  --->语言
Libraries  --->  图书馆
LuCI  --->      LuCI
Mail  --->邮件
Multimedia  --->多媒体
Network  --->网络
Sound  ---> 声音
Utilities  --->实用程序
Xorg  --->Xorg

LuCI可以按照个人想法添加插件,我需要的插件默认都有了,就直接保存退出。然后开始下载 dl 库。因为VM已经在香港了,一般下载不会遇到什么麻烦,如果下载过程中碰到fail或者Error,可以多跑几次下面的命令,直到所有的dl库下载成功。

make download -j8

最后就是编译了,因为用了云服务器,不太希望浪费云服务器的资源,同时我自己也没增加插件,插件产生冲突的概率不大,我就直接用多线程进行编译了:

make V=s -j4

差不多耐心等待1个多小时(4核火力全开的编译速度可以快很多),就可以获取固件了。固件在bin/target目录下。

Leave a Reply

Your email address will not be published. Required fields are marked *