超低成本使用云服务器编译 openwrt

本文最后更新于:8 个月前

前言

本文是为了解决以下问题:

  1. 国内网络环境差,编译过程中文件下载失败
  2. 编译的时候硬盘空间不够了 (可怜一下我250G的ssd
  3. 更多但不限于(?

如果你已经能编译成功,就没必要折腾这个了。
为了降低成本,本文将使用 阿里云 / 腾讯云 的香港抢占式实例进行操作。

准备工作

  1. ssh 工具,例如 putty、 Xsell
  2. ftp 工具,例如 FlashFXP、 Winscp
  3. <1块钱
  4. 一个 腾讯云 / 阿里云 账号
  5. openwrt仓库

请确保你会进行openwrt的编译,或你有相应的教程。
本文不会非常具体地教你编译一个固件,

如果使用阿里云,账号内需要有至少100元余额才能使用按量付费实例。
不再使用后过几天可以退款。
腾讯云无此限制(忽略不计)

创建实例

行业惯例,放个推广链接(
腾讯云 阿里云

假设你已经完成了创建账号、实名认证和充值了。

腾讯云

点击打开购买页面

选择机型

如图所示选择配置

计费模式 竞价实例
地域 中国香港
可用区 香港二区
实例 1核2GB,标准型SA2
镜像 Ubuntu 64位 18.04.1 LTS
系统盘 高性能云硬盘50G
公网带宽 按使用流量5M

公网带宽大小自选,只影响你编译完成后下载的速度。
实例不建议选择1GB的,内存很可能不够。你也可以选择更高规格的实例,这里以最低配置为例。

设置主机

安全组选择新建安全组,设置不用动。
登陆方式选择设置密码。记下用户名 ubuntu

你也可以选择关联秘钥,这里不具体操作。

确认配置信息

勾选服务协议,点击开通即可。
开通后会自动跳转至控制台

点击实例查看详情,记下网络信息中你的 主IPv4公网IP
在这里是 43.129.24.67

阿里云

有空再写.jpg

连接服务器

打开 putty 如图所示填写刚才记下的公网IP 43.129.24.67

点击 Open 连接
弹出ssl确认框,选择是

输入用户名和密码登陆,输入密码的时候不会有输入提示,打完按回车就行了。

开始编译

这里以Lean的源码仓库为例子。
实际操作和本地 WSL 没什么区别。更具体的操作不写了,不会的自行百度。


在开始前推荐先安装 screen
输入 sudo apt-get -y install screen
然后输入 screen -S openwrt 新建 screen
在screen里面操作可以防止突然断网、连接断开等导致编译停止

Ctrl+A+D 脱离当前 screen
screen -r openwrt 回到刚才的screen
screen -d 强制所有 screen 脱离,当你使用 -r 恢复失败时用一遍这个
screen -ls 查看所有的 screen


阿里云默认用户为root,需要先执行下面的命令:

1
2
export FORCE_UNSAFE_CONFIGURE=1
export FORCE=1

提示:鼠标右键粘贴

  1. 输入 sudo apt-get update ,然后输入 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 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 g++-multilib antlr3 gperf wget curl swig rsync
  2. 使用 git clone https://github.com/coolsnowwolf/lede 命令下载好源代码,然后 cd lede 进入目录
  3. ./scripts/feeds update -a
  4. ./scripts/feeds install -a
  5. 配置 make menuconfig
  6. 下载dl库 make -j8 download V=s
  7. 开始编译 make -j$(($(nproc) + 1)) V=s

如果前面没有出错的话应该就跑起来了

第一次编译一般2小时以上,安装了screen就可以先把窗口关掉,坐等编译就行了。没安装screen不能关掉窗口,否则会立刻中断编译。
如果在编译过程中出错,先清空缓存再重新开始编译: rm -rf ./tmp && rm -rf .config

取回固件

打开 FlashFXP,菜单栏 会话-快速连接
连接类型选择 SFTP over SSH,地址填写服务器公网IP,然后填入用户名密码,连接

进入/lede/bin/target文件夹,找到自己的固件复制出来即可。

销毁实例

编译结束后记得销毁实例,防止继续扣费。
回到控制台
选择 操作-更多-实例状态-销毁/退还 确定即可。


充了两块钱,还剩1.76