跳至主要内容

(migrated)使用Github为多种设备编译Openwrt固件

Openwrt

参考:

      使用 GitHub Actions 云编译 OpenWrt

      Lean的Openwrt源码仓库

      OpenWrt DIY — 多设备固件云编译

起因:

     最开始是用vps的虚拟机做编译, 虽然编译成功过, 但还是有些问题.

    1) 操作比较麻烦, 每次都需要做配置

    2) 不清楚怎么更新代码, 现在有好些库都没办法更新, 新功能也无法使用.

    3) 编译时间长, 最后还经常出错, 虽然vps虚拟机还是在米国.

        到最后编译总是不成功, 库倒是编译通过了, 只有用编译好的库往现有的设备上安装, 要找关联库什么的, 一堆的麻烦事.

    搞vps上的openwrt编译搞烦了, 不想再继续下去, 但更新总得做.

    后来看到相关教程, 可以用github Action功能来实现编译, 不用做vps虚拟机, 不需要复杂的配置, 于是开始研究.

一. 开始瞎搞

    看了很长时间的教程, 也没搞懂该怎么做, 算了, 跟着感觉走吧.

1. Github上openwrt相关的代码库很多, 需要先选一个库来fork.

      我在github上搜索"openwrt k2p", 从Star和Fork最多的库里查找支持设备比较多的库, 由于排第二的"OpenWrt DIY — 多设备固件云编译"支持的设备种类最多, 就选了这个库, 后面熟悉了还得看下代码.

2. 操作

      1) 登录

          打开github网站并登录.

      2) Fork

           打开"OpenWrt DIY — 多设备固件云编译", 点击右上角"Fork"按钮, 就可以在已登录的用户目录下Fork出一个资源库.

      3) Branch

          打开fork的资源库, 可以看到fork出的目录及文件, 目录及文件是主资源库是一样的.

          如果想要修改, 需要在左上角的"main"处点击, 并建立一个分支(Find or Create a branch...), 再选到新建的分支进行修改(Fork出来的main看样子是不能修改的)

          (设置新分支为default: 点击右上角的setting菜单, 选择左侧的"branches",  在右侧即可选择"Default branch")

      4) 修改

           可以修改新分支的文件, 其中:

           .github/workflows目录: 不同设备的Action配置文件

           config目录: 不同设备的配置文件

           scripts目录: 编译用的shell - 原库主在这里修改了设备缺省IP地址.

      5) Source Update Check

          点击Actions, 从左侧的Workflows里选择"Source Update Check", 先要"Enable workflow", 再点击右侧的"Run workflow" - 应该是检查并更新代码.
         (未成功, 错误信息: "Run peter-evans/repository-dispatch@v1
Error: Parameter token or opts.auth is required")

      6) Actions

          点击Actions, 从左侧的Workflows里选择设备相关的Build项目,  点击右侧的"Run workflow", 过一会, 就能看到相应的项目正在正在执行, 点进去能看到执行的详细信息.

          编译时间大概需要不到3个小时.

3. 出现的问题及处理

       1) 没有生成openwrt-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin文件

      原编译Newifi_D2所用diy-part2.sh无法生成正常的openwrt-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin, 而只能生成openwrt-ramips-mt7621-d-team_newifi-d2-initramfs-kernel.bin.

      Google后发现, 应该是包太大了, 需要去掉一些插件

      参考: "过渡包“initramfs-kernel.bin问题 #6243

      以前手动编译时也会有类似情况, 选的插件较多情况下会出现类似的问题.

      考虑到Newifi-D2的可用空间限制, 编辑了一个专用于D2的"diy-4-Newifi_D2.sh", 在原版本(复制自"diy-part3.sh")基础上, 去掉了"passwall"+"OpenClash"+"Docker".

      同时, D2的配置文件".github/workflows/Newifi_D2.yml"也需要做修改, 改用这个新的sh文件.

     再次使用Action编译, 编译通过, 并生成"openwrt-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin"文件.

     2) 可能只需要删除一个大插件就行, 因此再次修改"diy-4-Newifi_D2.sh", 在原版本(复制自"diy-part3.sh")基础上, 仅去掉锐捷认证(mentohust)+openclash, 并再次编译.

     失败 - 无法生成"openwrt-ramips-mt7621-d-team_newifi-d2-squashfs-sysupgrade.bin"文件

     再次修改"diy-4-Newifi_D2.sh", 在原版本(复制自"diy-part3.sh")基础上, 去掉passwall+锐捷认证(mentohust)+openclash, 并再次编译, 编译成功.

评论

此博客中的热门博文

(migrated)联通(数码视讯)Q7电视盒子刷机成功, 但这Q7盒子是真的垃圾!

 一、破解方式       联通(数码视讯)Q7(以下简称Q7)有很多种破解方式:          a. 不拆机破解: 主要通过漏洞是装上可以装App的市场或其他工具          b. TTL破解: 连接TTL线,通过进入底层系统打开adb调试, 再通过其它工具安装App, 如:                        “北京联通盒子-数码视讯Q7-破解"             或者在底层的Linux系统里直接安装App.         c. 使用USB Burn方式刷机: 直接刷成别的系统,如:                   " 【2020年11月】北京联通数码视讯Q7破解教程"                          最后用的是这种方式进行刷机 。          相关的包下载地址:          1) 刷机固件:             链接: https://pan.baidu.com/s/18ukQVyQiScAeQPCReoBr0Q                    提取码:yp6t             里面有个压缩包: 20191218-Q7-4.4.2-root-twrp-...

P3TERX/OpenWrt-Newifi_D2的Actions编译配置文件简单分析

  链接 :  https://github.com/P3TERX/OpenWrt-Newifi_D2 Code 目录结构 : 根目录 : .github/ 目录 : .github /workflows / 目录 : 可能需要修改的文件 : .github /workflows /build-openwrt.yml:    文件及参数设置。 文件中可能修改的部分 : name: Build OpenWrt env:   REPO_URL: https://github.com/coolsnowwolf/lede   #  库地址    #  lean 的 https://github.com/coolsnowwolf/lede.git    # or     #  Lienol 的 https://github.com/Lienol/openwrt )   REPO_BRANCH: master           #  不同分支      #  以 Lienol OpenWrt 源码为例 ,  分支 dev-master  激进; dev-19.07 OpenWrt 官方平稳版; dev-lean-lede    lean 的源码   FEEDS_CONF: feeds.conf.default   CONFIG_FILE: open.config         #  编译配置文件  open.config   DIY_P1_SH: diy-part1.sh   ...

(migrated)联通(数码视讯)Q7盒子再刷Openwrt

说明:     联通(数码视讯)Q7盒子(以下简称Q7)做为一个电视盒子应该是没有什么可取之处, 但还可以做点别的, 比如, 做Openwrt盒子。     恩山论坛 的 flippy大侠 推出了 "55+、55+O S905x3、S922x、贝壳云、我家云、微加云等OP固件" , 是基于 amlogic(晶晨) 的S9xx系列arm SOC的openwrt固件, 现在支持包括基于 amlogic(晶晨)  S922x、S912、S905x、s905x2、S905x3、S905d等多款SOC的盒子。    但是,  flippy大侠 的固件说明中, 并未明确指出对S905L的支持, 而Q7用的SOC是S905L。    查到 维基Amlogic 说明中是这么说的:            Amlogic S905L: 与S905X相似,不同之处在于它支持HDMI 2.0b,但缺少VP9解码,摄像头接口和TS输入。     按这种说法, S905L可能是和S905X差不多, 支持S905X应该就能支持S905L, 那么Q7就应该能用。     推论如此, 然后在网上找到了一个实例,  恩山论坛 的 Len_大侠 在 "联通北京数码Q7,S905L电视盒刷成了openwrt系统路由器" 贴子里, 明确说明他已经成功完成了将Q7刷上了Openwrt, 虽然没有详细说明, 但从帖子里可以看出来大概是怎么做的, 那么, 就跟随 Len_大侠 , 让Q7废物利用吧。     为了简单化(偷懒😁), 选用的是使用 外接存储( U盘或TF卡) 启动 Q7的方式。     Q7自带TF卡槽 , 这倒是为数不多的优点之一。 另:       在 Github 上找了下 flippy大侠 的源码,  感觉应该是这个:  lllrrr/mknop       tuanqing/mknop 这个肯定是分支。 另外,  flippy大侠 还做了 Doc...