利用谷歌云编译Nanopi R2S固件

点击数:3628

本文借鉴Tony Stark的youtube视频教程,地址:https://www.youtube.com/watch?v=Ap_DKrMcJlg&t=744s

注意:本文不是教程,只是本人编译过程的记录,仅供参考。由于是刚开始学习编译,肯定有错误或者不足的地方,但按照此文的方法编译可以帮助你理解编译过程。目前我已完成github的actions自动云编译,可以参考我最新的文章:用Github Actions云编译Nanopi R2S固件

步骤如下:

1,谷歌云新建一个实例,8核,8G内存,地区选香港,asia-east2-c,系统选ubuntu 18.04 硬盘SSD 80G,网络需要设置允许http和https,允许所有端口入站。(本人移动线路putty连接非常慢,选其他区域应该可以)。

2,利用puttygen生成1个私钥,修改用户名,保存私钥到本地。然后到谷歌云平台修改实例,将puttygen里的公钥字符串复制添加到SSH 密钥。

《利用谷歌云编译Nanopi R2S固件》

3,利用谷歌云网页SSH进入后台,配置新加用户权限:

输入命令:

sudo -i

visudo

然后在root ALL=(ALL:ALL) ALL下添加一条自己的建立的用户名的权限,复制root的所有权限。

《利用谷歌云编译Nanopi R2S固件》

编辑好后Ctrl+o保存,回车,Ctrl+x退出。

4,安装python:

apt-get install python

5,在putty中登录VPS(需要添加puttygen生成的私钥)。

以下参考:http://wiki.friendlyarm.com/wiki/index.php/How_to_Build_FriendlyWrt/zh

首先需要安装 repo 工具:

输入命令screen,防止putty断开后无法执行完整命令。然后

git clone https://github.com/friendlyarm/repo

sudo cp repo/repo /usr/bin/

从github下载完整的RK3328平台源代码

mkdir friendlywrt-rk3328

cd friendlywrt-rk3328

然后
repo init -u https://github.com/friendlyarm/friendlywrt_manifests -b master -m rk3328.xml --repo-url=https://github.com/friendlyarm/repo --no-clone-bundle

repo sync -c --no-clone-bundle

以下参考:https://github.com/coolsnowwolf/lede
下载lean的源码

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

6,登录WINSCP

进入 /friendlywrt-rk3328/friendlywrt/package
新建目录lean
远程拷贝/lede/package/lean 文件夹到 /friendlywrt-rk3328/friendlywrt/package/lean

以下这段为2月8日更新:

进入 /friendlywrt-rk3328/friendlywrt/ 文件夹打开feeds.conf.default文件

将第一行src-git packages 后的链接https://git.openwrt.org/feed/packages.git^54266c99b2a2e37a4c01b02ae74346874db7003c

替换为https://github.com/coolsnowwolf/packages

将第二行src-git luci后的链接https://github.com/friendlyarm/friendlywrt_project_luci^bb021b4b9097ad332ab40bce2a1c239d9fcf225b

替换为https://github.com/coolsnowwolf/luci

《利用谷歌云编译Nanopi R2S固件》

7,回到putty

sudo apt-get update

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch 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

进入/friendlywrt-rk3328/friendlywrt/
然后执行

./scripts/feeds update -a

./scripts/feeds install -a

make menuconfig

打开后回车进入配置第一个选项,向下翻找到rockchip rk3328这个选项,输入y,然后退出

《利用谷歌云编译Nanopi R2S固件》
配置第三个选项Target Images,回车进入后选择squashfs,可以取消选中tar.gz选项,然后退出。

《利用谷歌云编译Nanopi R2S固件》
luci配置部分参考了esir的文档,这里选择自己需要编译的模块和插件,参考:https://drive.google.com/drive/folders/1dqNUrMf9n7i3y1aSh68U5Yf44WQ3KCuh
配置好以后选择保存,不用修改文件名直接回车,然后退出menuconfig

8,然后进入/friendlywrt-rk3328/目录,搭建编译环境

wget -O - https://raw.githubusercontent.com/friendlyarm/build-env-on-ubuntu-bionic/master/install.sh | bash

9,开始编译

./build.sh nanopi_r2s.mk

开始时间12:40

结束时间13:25 用时45分

编译失败,提示如下

《利用谷歌云编译Nanopi R2S固件》

错误原因:dnsmasq和dnsmasq-full同时选中有冲突,需要在menu里取消掉dnsmasq

10,再次编译

先清理掉上次编译的文件

./build.sh cleanall

删除tmp文件夹

rm -rf tmp

进入/friendlywrt-rk3328/friendlywrt/,重新make menu

make menuconfig

在这里取消dnsmasq

《利用谷歌云编译Nanopi R2S固件》

保存后退出,也可以将自己的配置文件单独保存,下次如果重头编译可以直接使用这个配置文件,方法是

./scripts/diffconfig.sh > ../configs/my_config

进入/friendlywrt-rk3328文件夹,重新执行第9步

cd ..

./build.sh nanopi_r2s.mk

开始时间15:30
16:10编译完成 用时40分钟

《利用谷歌云编译Nanopi R2S固件》

11,用winscp进入/home/用户名/friendlywrt-rk3328/out查看是否生成映像文件,如果成功了可以直接拖到本地下载下来

《利用谷歌云编译Nanopi R2S固件》

我这里生成了一个954M的img文件。

这里由于img文件体积巨大,需要将其压缩为zip文件,在putty下执行如下命令:

zip FriendlyWrt_20200206_NanoPi-R2S_arm64_sd.img.zip FriendlyWrt_20200206_NanoPi-R2S_arm64_sd.img

执行后查看文件大小变为67M,然后再下载到本地。

《利用谷歌云编译Nanopi R2S固件》

12,利用balenaetcher工具将镜像文件写入到SD卡中。

《利用谷歌云编译Nanopi R2S固件》

选好下载的zip文件,点击Flash写入,然后是漫长的等待。

《利用谷歌云编译Nanopi R2S固件》

18:14写入完成!

最后就是等待R2S发货后插入sd卡进行测试验证了。

13,2月7日更新:经过油管UP主悟空的验证,固件可用

《利用谷歌云编译Nanopi R2S固件》

存在的问题:netdata实时监控无法加载,可能是编译的版本问题,默认编译的是1.18,可在web管理页面的软件包里搜索并手动安装1.19 版本就可以使用了。

这是我第一次成功编译出来的固件,还被悟空在他的电报频道悟空干货营置顶了,很有成就感。非常感谢悟空的youtube频道,我才知道了R2S这样一款符合我的需求的设备,也感谢悟空电报群里的@haha er的帮助,没有他我也编译不出来这个固件。最后附上我的这款固件的谷歌网盘链接(2月8日的固件为我更改feedsfeeds.conf.default文件后重新编译的),需要的可以直接下来使用。

点赞
  1. 悟空说道:

    已经在R2S 验证通过,感谢你的分享!

    1. 北风说道:

      感谢悟空,在你的youtube频道学到很多东西

  2. Blake说道:

    学习了。关注楼主blog

    1. 北风说道:

      谢谢,我也在学习摸索

      1. 匿名说道:

        能麻烦博主做下 openssl speed 的速度测试么。硬件加速的参数好像时-evp

        1. vipassana说道:

          我手上没有R2S,订了还没发货。你可以看下悟空的测试https://t.me/daily5kong/1134,目前速度不理想,好像厂家代码里还没打开硬件AES。

      2. 匿名说道:

        openssl speed -elapsed -evp aes-256-gcm

  3. nicksun说道:

    再次编译成功,感谢大佬,感谢悟空

    1. 北风说道:

      哈哈,不客气,能帮到你就好。我的github actions也弄好了。

  4. Tim Tam说道:

    你好,config 文件能发出来共享一下吗?我的 vps 硬盘太小,准备编译环境时老是硬盘空间不足 :cry:

    1. Tim Tam说道:

      啊,看到action了,多谢楼主 :eek:

  5. ZiQiBB说道:

    感谢悟空老师,真的,我刚好是一个小白准备买个软路由,在某宝最少600+以上的软路由前提下,好在看到了悟空老师的视频,这款R2S性价比很高,对于我这种科学看看视频电影的足够了!!期待之后更稳定的固件更新,再次感谢悟空老师!

  6. DiDA说道:

    看到谷歌网盘上有一个2月10日的固件,体积大了不少,请问有什么改进?为什么会大这么多?你建议用哪个版本的固件?

    1. vipassana说道:

      用新的吧,第一编译没改feeds文件,我手上没设备也没测试,据说有组件无法正常显示。

      1. DiDA说道:

        多谢你辛苦编译,回头我试试看

  7. JunFly说道:

    GitHub fork了一份,在commit时候没有触发CI,不知道是不是event trigger没写对,修改了一下,可以了

  8. koko说道:

    :lol: :lol: 老哥 我下载的2月13的固件,打开进去root要密码,试了没密码登不上啊

    1. vipassana说道:

      密码password。你可以试试2月20日的固件。

  9. UKlin说道:

    能不能帮忙编译一下r1的新固件

    1. vipassana说道:

      github上一大堆啊,https://github.com/klever1988/nanopi-openwrt/actions

  10. pc仔仔说道:

    谢谢,大侠。请问有带多线多拔吗、

    1. vipassana说道:

      我网盘里23号dayong的那个固件有,推荐这个固件,目前最好用的。

  11. adam说道:

    这个编译出来的ip和密码是多少啊?

发表评论

电子邮件地址不会被公开。 必填项已用*标注