首先,能这么简单的完成路由器 openwrt 固件的定制和编译,离不开 openwrt 社区和 L大 及其它贡献者的无私贡献和努力,在此感谢他们。
这里使用Lean 的 Openwrt 源码来编译,使用 CVM 云服务器来作为编译环境。
源码的编译说明里,推荐的编译环境是Ubuntu 20.04 LTS x64
,但自己去搭建服务器环境还是挺麻烦的。
用电脑去虚拟编译环境至少得花一个小时左右,用现有的云服务器也得是空闲的服务器。而且国内下载一些代码比较慢,而且防火墙原因,很容易下载失败导致编译失败。
所以比较理想编译环境是Ubuntu 20.04 LTS x64 系统
、国外网络
、纯净系统
,这时候 CVM 云服务器就很适合了。但我们只是想编译一个路由器固件,只需要半天一天就行,CVM 好像要按月或按年购买吧?正常购买是这样的,但是 CVM 还有一个购买模式,那就是按量计费
啦!它按秒计费,按小时结算,随时购买随时释放,还有多个地区可以选择,非常符合我们的需求。
好了,不啰嗦这么多了,直接开干~这里我以小米 mini
路由器作为示例,它的CPU型号
是MediaTek MT7620A
,所以编译之前,你也要先了解清楚你的路由器对应的型号
和CPU厂商
。
产品页地址:https://cloud.tencent.com/product/cvm
点击页面中的立即选购
按钮
选择自定义配置
,计费模式选择按量计费
,地域选择港澳台地区
或亚太地区
,实例配置选1核1GB及以上的
,镜像选择公共镜像的Ubuntu Server 20.04
,取消定期快照
,公网带宽选择按使用流量
计费。
内存低于2GB的需要设置虚拟内存,后面会教怎么设置。如果想加快编译速度,可以选择2核或4核的CPU。
安全组选择新建安全组
,登录方式选择设置密码
,然后输入你的密码
(后面登录会用到),取消安全加固
,取消云监控
。
安全组规则默认就行,不用改的。取消安全加固和云监控,可以把它们占用的性能释放出来,并且我们短期使用,这两个作用不大。
确认一下配置,然后勾选同意《腾讯云服务协议》
,再点击开通
开通后,需要一段时间来分配服务器资源,分配好之后,复制下公网IP,登录服务器需要用到。
打开SSH软件,例如:Xshell,输入服务器公网IP
。
出现SSH安全警告选择一次性接受
即可
用户名ubuntu
开通前设置的密码
登录SSH成功
对于小内存机型,需要配置虚拟内存,否则会导致编译失败。虚拟内存大大小建议设置为真实内存的两倍。
虚拟内存参考教程:https://cloud.tencent.com/developer/article/2005988
因为编译过程比较长,并且一断开SSH链接就会导致编译中断。为了避免这种情况,我们可以使用screen
来创建一个会话,这样断开了SSH,编译也不会中断,并且可以重新进入到之前的会话。
创建会话
screen -S openwrt
如果不小心断开了SSH,我们重新登录SSH,使用下面这个命令重新进入之前的会话
screen -r openwrt
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
这里图太长,就贴图了
git clone https://github.com/coolsnowwolf/lede
拷贝好之后,进入到代码目录
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
打开配置界面
make menuconfig
等待一会,会出现以下界面。
按左右键可以移动底部菜单的光标:Select
选择、Exit
退出配置、Help
打开帮助、Save
保存配置和Load
加载配置。按上下键则是移动中间列表的光标,按空格
或回车
键代替点击。
对于列表项前面有[]
方括号,代表该项是勾选项。按Y
键可以勾选上该项,按N
键可以取消勾选该项。
小米mini的CPU型号
是MediaTek MT7620A
,对应的指令集是mips
,所以Target System
选择MediaTek Ralink MIPS
。
MediaTek MT7620A
对应的Subtarget
是MT7620 based boards
然后Target Profile
选择Xiaomi MiWiFi Mini
第一次编译,就不去定制其它内容了,先编译默认的固件。所以选择好机型之类的,我们就直接保存配置,然后开始编译吧。
如果服务器是国内的,请尽量全局科学上网
make -j8 download V=s
-j1 后面是线程数。第一次编译推荐用单线程
make -j1 V=s
第一次编译时间比较长,大概一两个小时。编译好之后,固件文件存放在bin/targets
目录下。
如果你想更新固件,可以同步下仓库最新的代码,然后再编译一次。
cd lede
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s
如果你想舍弃之前的配置,重新配置并编译,可以删除临时文件目录和配置文件,重新打开配置菜单进行配置,然后进行编译。
rm -rf ./tmp && rm -rf .config
make menuconfig
make -j$(($(nproc) + 1)) V=s
如果你想修改之前的配置,可以打开配置菜单进行配置,然后进行编译。
make menuconfig
make -j$(($(nproc) + 1)) V=s
编译完成后,我们下载编译好的固件和.config
编译配置文件。
后续重新开通云服务器,可以把
.config
文件上传到lede
目录下,这样上次配置都还在。
固件一般都是使用文件名中带有sysupgrade
的,我们可以把它刷入到我们路由器中。
这时候就用不上CVM云服务器了,我们就可以销毁/退还
服务器了。
这里主要介绍是使用按量付费云服务器来编译,其它的怎么刷入固件、怎么刷breed、怎么定制编译选项,这里就不多说了,需要你再去深入了解。
以下是收集的一些扩展资料:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。