使用Lean OpenWRT源码编译x86_x64旁路由固件记录

文章目录 「隐藏」
  1. 前言
  2. Lean OpenWRT 源码编译 x86_x64 软路由固件教程
    1. 注意事项
    2. 安装依赖
    3. 添加 swap
    4. 创建用户
    5. 克隆 lean openwrt 源代码到 vps
    6. 修改 feeds.conf.default 配置文件
    7. 更新 feed 订阅
    8. 进入 menuconfig 配置
    9. 开始编译
  3. Lean OpenWRT 再次编译

闲来无事尝试在 Debian 11 上编译 x86_x64 OpenWRT 软路由 (旁路由) 固件,需求很简单,在 VMware 虚拟运行,当旁路由使用,最基本的功能加上 helloworld 酸酸乳-Plus 插件即可。

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第1张图片

前言

DigitalOcean 上开了个 2 GB Memory / 1 AMD vCPU / 50 GB 硬盘配置的 VPS,Debian 11 x64 系统,用来编译,按照网友教程折腾、配置、编译……

晚上八点多开始编译,直到睡觉都没完成,中午进去看看,居然报 Error 错误了,原因是 Out of Memory……于是加了 swap 再编译,三个多小时后终于编译成功:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第2张图片

vps cpu 占用状态:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第3张图片

下面整理、记录一下编译步骤。

Lean OpenWRT 源码编译 x86_x64 软路由固件教程

编译环境:在 DigitalOcean 2 GB 内存 / 1 AMD vCPU / 50 GB 硬盘配置的 VPS,Debian 11 x64 系统,San Francisco 03 机房。(有条件的话内存、 cpu 配置越高越好)

注意事项

不要使用 root 用户进行编译
国内用户编译前最好准备好梯子
固件默认登陆 IP 192.168.1.1 密码 password

安装依赖

执行代码更新系统,安装必要依赖组件:

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

添加 swap

4G 以下内存建议先添加 swap,要不然大概率编译失败。 root 用户下执行如下命令添加 4G swap 虚拟内存:

fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile && echo "/swapfile swap swap defaults 0 0" >> /etc/fstab && echo "vm.swappiness=10" >> /etc/sysctl.conf && sysctl -p

创建用户

创建一个用户名为 lede 的用户并指定 bash 为终端:

sudo useradd -r -m -s /bin/bash lede

给用户 lede 设置密码:

sudo passwd lede

root 用户下编辑用户权限:

sudo vi /etc/sudoers

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第4张图片

在 User privilege specification 加入与 root 用户相同权限,按 Esc,然后 :wq 保存并退出编辑。

切换到 lede 用户:

su lede
cd ~

克隆 lean openwrt 源代码到 vps

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

修改 feeds.conf.default 配置文件

如果需要 ssr plus 等科学插件,可参考上一篇文章修改配置:编译 Lean 版 OpenWRT 找不到 helloworld 插件可选怎么办?

没有需求可跳过。

更新 feed 订阅

cd lede/
./scripts/feeds update -a
./scripts/feeds install -a

进入 menuconfig 配置

输入命令、回车:

make menuconfig

稍等一会,出现如下菜单:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第5张图片

进入 Target System(x86)选择需要编译的平台,默认是 x86:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第6张图片

温馨提示:如果此处按回去不能进去下级菜单,把 shell 窗口拉大一点,太小会一闪而过。

按键盘上下方向键移动,高亮位置按「空格」,前面 x 表示选中需要编译的平台。

接着到 Subtarget(x86_x64)选择 cpu 子选项,默认是 x86 64 位:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第7张图片

如果需要支持旧 cpu 选择 Generic,或者 Legacy 启动。

Target Profile 默认 Generic x86/64 。

进入 Target Images 勾选你需要的固件格式、分区大小等(默认就有 img 、 vmdk 等格式)

# 添加较多插件时,为了避免空间不足,建议修改下面两项默认大小(x86/64)
Target Images --> (16) Kernel partition size (in MB) # 默认是 16MB,可修改为 256
Target Images --> (400) Root filesystem partition size (in MB) # 默认是 400MB,可改为 512 或者更大

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第8张图片

接下来是编译固件最核心部份,选择需要编译内置的插件,进入 LuCI –> Applications 内选中、取消插件。

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第9张图片

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第10张图片

操作提示:按 Y 勾选,N 取消勾选,M 编译而不安装,连按两次 Esc 键返回上一界面,<*> 代表编译内置固件, 表示编译成模块或者 ipk 包, < > 则不编译 ) 。

如果跟博主一样没啥特殊需求,默认配置即可,检查一下 luci-app-ssr-plus (NEW) 是否选中编译,下面是参考配置:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第11张图片

勾选完成,按键盘 → 方向键,高亮 Save,按回车保存配置,默认的文件名称 (.config)保存即可,编译会根据.config 内容编译(若配置错误想要恢复到初始配置,删掉.config 文件重新配置即可)。

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第12张图片

保存配置后一路按 Esc 返回退出配置界面,直至 shell 界面提示 End of the configuration. 字样:

*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

开始编译

可能需要安装一下 screen,开启 screen 编译,以防 ssh 断线,可让编译在后台持续运行;screen -r 可返回之前对话窗口。

apt-get -y install screen
screen -S op
make -j1 V=s 

-j1 代表用单线程编译,V=s 代表输出全部过程,第一次编译建议使用单线程,国内请尽量全局科学上网。

首次编译可能比较慢(博主编译至少花了三个多小时),后面再次编译速度会快很多,可能是省去了依赖环境编译时间。 后记实测再次编译时间仍然需要很长时间,与第一次编译相差无几。尝试第三、第四次编译,却又快了很多很多,十分钟左右就完成了。

编译完成:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第2张图片

进去 /home/lede/lede/bin/targets/x86/64 目录下载固件:

使用Lean OpenWRT源码编译x86_x64旁路由固件记录 - 第14张图片

Lean OpenWRT 再次编译

如 Lean 源码更新,需再次编译,可按照下面方法操作:

cd lede  #进入 LEDE 源码目录
git pull  #同步更新 Lean 源码
./scripts/feeds update -a && ./scripts/feeds install -a  #更新 FEEDS
rm -rf ./tmp && rm -rf .config  #清除编译配置和缓存
make menuconfig  #进入编译配置菜单
make -j1 V=s  #n=线程数+1,如 10 核 16 线程 i5 cpu 可填 -j17

另外,需要注意,磁盘空间不能太小,亲测 50G 硬盘 vps 套餐,第二次编译,因为磁盘满了,失败了……


后记:使用 4 GB Memory / 2 AMD vCPUs / 80 GB Disk 外加 4GB swap,make -j2 V=s 第一次编译,用时 4 小时!为啥减半配置也是这个速度?

《使用Lean OpenWRT源码编译x86_x64旁路由固件记录》留言数:0

发表留言