前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用按量付费云服务器编译 openwrt 路由固件

巧用按量付费云服务器编译 openwrt 路由固件

原创
作者头像
jwj
修改2021-08-25 14:21:40
4.8K0
修改2021-08-25 14:21:40
举报

首先,能这么简单的完成路由器 openwrt 固件的定制和编译,离不开 openwrt 社区和 L大 及其它贡献者的无私贡献和努力,在此感谢他们。

这里使用Lean 的 Openwrt 源码来编译,使用 CVM 云服务器来作为编译环境。

编译环境

源码的编译说明里,推荐的编译环境是Ubuntu 20.04 LTS x64,但自己去搭建服务器环境还是挺麻烦的。

用电脑去虚拟编译环境至少得花一个小时左右,用现有的云服务器也得是空闲的服务器。而且国内下载一些代码比较慢,而且防火墙原因,很容易下载失败导致编译失败。

所以比较理想编译环境是Ubuntu 20.04 LTS x64 系统国外网络纯净系统,这时候 CVM 云服务器就很适合了。但我们只是想编译一个路由器固件,只需要半天一天就行,CVM 好像要按月或按年购买吧?正常购买是这样的,但是 CVM 还有一个购买模式,那就是按量计费啦!它按秒计费,按小时结算,随时购买随时释放,还有多个地区可以选择,非常符合我们的需求。

型号说明

好了,不啰嗦这么多了,直接开干~这里我以小米 mini路由器作为示例,它的CPU型号MediaTek MT7620A,所以编译之前,你也要先了解清楚你的路由器对应的型号CPU厂商

开通云服务器

打开 CVM 产品页

产品页地址:https://cloud.tencent.com/product/cvm

点击页面中的立即选购按钮

image.png
image.png

选择机型

选择自定义配置,计费模式选择按量计费,地域选择港澳台地区亚太地区,实例配置选1核1GB及以上的,镜像选择公共镜像的Ubuntu Server 20.04,取消定期快照,公网带宽选择按使用流量计费。

内存低于2GB的需要设置虚拟内存,后面会教怎么设置。如果想加快编译速度,可以选择2核或4核的CPU。

image.png
image.png

设置主机

安全组选择新建安全组,登录方式选择设置密码,然后输入你的密码(后面登录会用到),取消安全加固,取消云监控

安全组规则默认就行,不用改的。取消安全加固和云监控,可以把它们占用的性能释放出来,并且我们短期使用,这两个作用不大。

image.png
image.png

确认配置并开通CVM

确认一下配置,然后勾选同意《腾讯云服务协议》,再点击开通

image.png
image.png

开通成功

开通后,需要一段时间来分配服务器资源,分配好之后,复制下公网IP,登录服务器需要用到。

image.png
image.png

登录和配置服务器

登录SSH

打开SSH软件,例如:Xshell,输入服务器公网IP

image.png
image.png

出现SSH安全警告选择一次性接受即可

image.png
image.png

用户名ubuntu

image.png
image.png

开通前设置的密码

image.png
image.png

登录SSH成功

image.png
image.png

配置虚拟内存 SWAP

对于小内存机型,需要配置虚拟内存,否则会导致编译失败。虚拟内存大大小建议设置为真实内存的两倍。

虚拟内存参考教程:https://cloud.tencent.com/developer/article/2005988

开始编译

使用screen

因为编译过程比较长,并且一断开SSH链接就会导致编译中断。为了避免这种情况,我们可以使用screen来创建一个会话,这样断开了SSH,编译也不会中断,并且可以重新进入到之前的会话。

创建会话

代码语言:txt
复制
screen -S openwrt

如果不小心断开了SSH,我们重新登录SSH,使用下面这个命令重新进入之前的会话

代码语言:txt
复制
screen -r openwrt

更新软件列表

代码语言:txt
复制
sudo apt-get update
image.png
image.png

安装依赖

代码语言:txt
复制
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

这里图太长,就贴图了

拷贝仓库代码

代码语言:txt
复制
git clone https://github.com/coolsnowwolf/lede
image.png
image.png

拷贝好之后,进入到代码目录

代码语言:txt
复制
cd lede
image.png
image.png

更新、安装

代码语言:txt
复制
./scripts/feeds update -a
image.png
image.png
代码语言:txt
复制
./scripts/feeds install -a
image.png
image.png

配置界面

打开配置界面

代码语言:txt
复制
make menuconfig
image.png
image.png

等待一会,会出现以下界面。

按左右键可以移动底部菜单的光标:Select选择、Exit退出配置、Help打开帮助、Save保存配置和Load加载配置。按上下键则是移动中间列表的光标,按空格回车键代替点击。

image.png
image.png

对于列表项前面有[]方括号,代表该项是勾选项。按Y键可以勾选上该项,按N键可以取消勾选该项。

配置固件机型信息

小米mini的CPU型号MediaTek MT7620A,对应的指令集是mips,所以Target System选择MediaTek Ralink MIPS

71cabbc2-0b28-439e-b5e6-3f1ff8d3c429.gif
71cabbc2-0b28-439e-b5e6-3f1ff8d3c429.gif

MediaTek MT7620A对应的SubtargetMT7620 based boards

2e8483a2-b3ac-4037-a631-fcde429ad2c0.gif
2e8483a2-b3ac-4037-a631-fcde429ad2c0.gif

然后Target Profile选择Xiaomi MiWiFi Mini

938dd5e9-f451-4f1b-bb47-06ab7671cc2e.gif
938dd5e9-f451-4f1b-bb47-06ab7671cc2e.gif

第一次编译,就不去定制其它内容了,先编译默认的固件。所以选择好机型之类的,我们就直接保存配置,然后开始编译吧。

828fd463-9ff3-4ee4-ad2e-84ef8eb26dc3.gif
828fd463-9ff3-4ee4-ad2e-84ef8eb26dc3.gif

下载dl库

如果服务器是国内的,请尽量全局科学上网

代码语言:txt
复制
make -j8 download V=s
image.png
image.png

开始编译固件

-j1 后面是线程数。第一次编译推荐用单线程

代码语言:txt
复制
make -j1 V=s

第一次编译时间比较长,大概一两个小时。编译好之后,固件文件存放在bin/targets目录下。

二次编译

如果你想更新固件,可以同步下仓库最新的代码,然后再编译一次。

代码语言:txt
复制
cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s

重新配置并编译

如果你想舍弃之前的配置,重新配置并编译,可以删除临时文件目录和配置文件,重新打开配置菜单进行配置,然后进行编译。

代码语言:txt
复制
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j$(($(nproc) + 1)) V=s

修改配置并编译

如果你想修改之前的配置,可以打开配置菜单进行配置,然后进行编译。

代码语言:txt
复制
make menuconfig
make -j$(($(nproc) + 1)) V=s

结束

编译完成后,我们下载编译好的固件和.config编译配置文件。

后续重新开通云服务器,可以把.config文件上传到lede目录下,这样上次配置都还在。

固件一般都是使用文件名中带有sysupgrade的,我们可以把它刷入到我们路由器中。

image.png
image.png

这时候就用不上CVM云服务器了,我们就可以销毁/退还服务器了。

image.png
image.png

这里主要介绍是使用按量付费云服务器来编译,其它的怎么刷入固件、怎么刷breed、怎么定制编译选项,这里就不多说了,需要你再去深入了解。

以下是收集的一些扩展资料:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译环境
    • 型号说明
    • 开通云服务器
      • 打开 CVM 产品页
        • 选择机型
          • 设置主机
            • 确认配置并开通CVM
              • 开通成功
              • 登录和配置服务器
                • 登录SSH
                  • 配置虚拟内存 SWAP
                  • 开始编译
                    • 使用screen
                      • 更新软件列表
                        • 安装依赖
                          • 拷贝仓库代码
                            • 更新、安装
                              • 配置界面
                                • 配置固件机型信息
                                  • 下载dl库
                                    • 开始编译固件
                                      • 二次编译
                                        • 重新配置并编译
                                          • 修改配置并编译
                                          • 结束
                                          相关产品与服务
                                          云服务器
                                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档