本帖最后由 zss0hs 于 2023-3-11 21:05 编辑
AXT1800 64 位 带 docker 固件 使用的大雕原版仓库: - https://github.com/coolsnowwolf/openwrt-gl-ax1800.git
复制代码 使用原版仓库选择 docker-ce 包,到编译 runc 包时会报错,导致编译失败:
- make[4]: Entering directory '/home/jht/openwrt-gl-ax1800/build_dir/target-aarch64_cortex-a53_musl/runc-1.0.0-rc10/.go_work/build/src/github.com/opencontainers/runc'
- go build -buildmode=pie -ldflags "-X main.gitCommit=dc9208a3303feef5b3839f4323d9beb36df0a9dd -X main.version=1.0.0-rc10 " -tags "" -o runc .
- go: cannot find main module, but found vendor.conf in /home/jht/openwrt-gl-ax1800/build_dir/target-aarch64_cortex-a53_musl/runc-1.0.0-rc10/.go_work/build/src/github.com/opencontainers/runc
- to create a module there, run:
- go mod init
- make[4]: *** [Makefile:34: runc] Error 1
- make[4]: Leaving directory '/home/jht/openwrt-gl-ax1800/build_dir/target-aarch64_cortex-a53_musl/runc-1.0.0-rc10/.go_work/build/src/github.com/opencontainers/runc'
- make[3]: *** [Makefile:85: /home/jht/openwrt-gl-ax1800/build_dir/target-aarch64_cortex-a53_musl/runc-1.0.0-rc10/.built] Error 2
- make[3]: Leaving directory '/home/jht/openwrt-gl-ax1800/feeds/packages/utils/runc'
- time: package/feeds/packages/runc/compile#1.41#2.15#3.90
- make[2]: *** [package/Makefile:113: package/feeds/packages/runc/compile] Error 2
- make[2]: Leaving directory '/home/jht/openwrt-gl-ax1800'
- make[1]: *** [package/Makefile:107: /home/jht/openwrt-gl-ax1800/staging_dir/target-aarch64_cortex-a53_musl/stamp/.package_compile] Error 2
- make[1]: Leaving directory '/home/jht/openwrt-gl-ax1800'
- make: *** [/home/jht/openwrt-gl-ax1800/include/toplevel.mk:227:world] 错误 2
复制代码 原因是 packages 仓库升级了 golang, 然后导致了 runc 包编译失败:- https://github.com/coolsnowwolf/lede/issues/6465
复制代码 这个问题后来已经在 packages 仓库的 master 分支中修复了,所以我直接去 packages 仓库的 master 分支中,在 golang 版本还是 1.17.3 的历史版本中,复制出与 dcoker 相关的包,然后直接替换 feeds/packages/ 中对应的文件,这样就可以正常编译了。我使用的历史版本是:- https://github.com/coolsnowwolf/packages/commit/3d386440272857c382e43b80112d08f5c1eacfb4
复制代码 下边是详细步骤: 1、克隆 openwrt-gl-ax1800 仓库,执行 ./scripts/feeds update -a 和 ./scripts/feeds install -a 命令:- git clone https://github.com/coolsnowwolf/openwrt-gl-ax1800
- cd openwrt-gl-ax1800
- ./scripts/feeds update -a
- ./scripts/feeds install -a
复制代码 2、提取 docker 相关的包: - cd ..
- git clone https://github.com/coolsnowwolf/packages
- cd packages
- git reset --hard 3d386440272857c382e43b80112d08f5c1eacfb4
- mkdir -pv ../local/utils/
- cp -r utils/containerd ../local/utils/
- cp -r utils/docker ../local/utils/
- cp -r utils/docker-compose ../local/utils/
- cp -r utils/dockerd ../local/utils/
- cp -r utils/libnetwork ../local/utils/
- cp -r utils/runc ../local/utils/
- cp -r utils/tini ../local/utils/
- cp -r utils/cgroupfs-mount ../local/utils/
复制代码 3、将提取的 docker 相关的包复制进 openwrt-gl-ax1800 目录:- cd ../openwrt-gl-ax1800/
- rm -rf feeds/packages/utils/cgroupfs-mount/
- rm -rf feeds/packages/utils/containerd/
- rm -rf feeds/packages/utils/docker-ce/
- rm -rf feeds/packages/utils/libnetwork/
- rm -rf feeds/packages/utils/runc/
- rm -rf feeds/packages/utils/tini/
- cp -r ../local/utils/* feeds/packages/utils/
- cd package/feeds/packages/
- rm docker-ce
- ln -s ../../../feeds/packages/utils/docker* ./
- cd ../../../
复制代码 这是我提取的 docker 相关的包: 4、经过以上步骤后,执行 make menuconfig 命令,选择 Utilities ---> docker 和 dockerd 已经可以成功编译 docker 了,但是目前编译出的 openwrt 还不能运行 docker ,因为还需要开启内核相关的功能,有一个检测是否可以运行容器的脚本,脚本连接:check-config.sh ,或者使用下载好的:,在 OpenWRT 终端直接执行脚本即可。 - chmod +x check-config.sh
- ./check-config.sh
复制代码 检测结果分为两部分,Generally Necessary 和 Optional Features ,Generally Necessary 的部分必须支持,Optional Features 的部分不支持也可以。 比如检测出 CONFIG_CGROUPS 功能为 missing ,就执行 make menuconfig 命令后,使用 "/" 功能搜索 "CONFIG_CGROUPS" , 按照搜索出的结果进入对应选项中来开启此功能。
下图是我执行检测脚本后的结果: 我的 bin/targets/ipq60xx/genericconfig.buildinfo 文件,可作为参考。 5、安装使用 luci-app-dockerman :
- cd package
- git clone https://github.com/lisaac/luci-app-dockerman
- git clone https://github.com/lisaac/luci-lib-docker
- cd package
- make menuconfig
复制代码 选择 LuCI ---> 3. Applications ---> <*> luci-app-dockerman 执行 make -j1 V=s 命令进行编译。
6、目前编译好的的 OpenWRT 已经可以运行 docker 了,但是因为 etc/rc.common 文件没有 extra_command 命令,会导致 dockerd 无法开机自启。这个缺陷也已在 lede 仓库中修复了。 可以参考以下的网页修改自己的 package/base-files/files/etc/rc.common 文件,然后再次编译即可。 或者直接使用rc.common文件也可以。- https://github.com/coolsnowwolf/lede/issues/7245
- https://github.com/coolsnowwolf/lede/commit/22cfbe7faa2e9d32e5c78b273d05cee806861c12
复制代码 这是我修改后的 rc.common 文件: 7、截图及固件: AXT1800 固件:https://wwqr.lanzouw.com/iAcAf0pv55tg 密码:1n8e 压缩包解压密码:forum.gl-inet.cn
|