Running Docker On GDK8
记录下在 GDK8(RK3328) 中出现 Devices cgroup isn’t mounted 导致 docker 无法正常启动的解决方案,该启动异常的主要原因是因为 Docker 所需的内核选项没有开启。
参考:
https://www.nanocode.cn/wiki/docs/gdk8_primer/primer_gdk8_img
https://forum.loverpi.com/discussion/225/running-docker-on-roc-rk3328-cc
https://docs.docker.com/engine/install/troubleshoot/
使用官方脚本检查下当前内核对 docker 的兼容性
curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh
bash ./check-config.sh
根据上面的检查结果,将出现 miss 的选项记录下来,后面会用到。
安装编译内核时会用到的软件包
sudo apt-get update
sudo apt-get install bc liblz4-tool
下载内核源代码(言子-聊城2版本 4.19.161-yanzi)
wget https://gedu.oss-cn-beijing.aliyuncs.com/Products/GDK8/Release/Ubuntu/LiaoCheng2/kernel.tar.gz
tar -xf
cd kernel
修改 kernel config 添加支持 Docker 所需的内核选项(参考第一步中的 miss 选项,示例仅供参考)
mv arch/arm64/configs/rockchip_linux_defconfig arch/arm64/configs/rockchip_linux_defconfig.bak
cp -r /boot/config-4.19.161-yanzi arch/arm64/configs/rockchip_linux_defconfig
vim arch/arm64/configs/rockchip_linux_defconfig
CONFIG_CGROUP_DEVICE=y
CONFIG_USER_NS=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_SECURITY_APPARMOR=y
CONFIG_BRIDGE_VLAN_FILTERING=y
在内核目录下编译
touch .scmversion
make ARCH=arm64 rockchip_linux_defconfig
make ARCH=arm64 gdk850.img -j8 LOCALVERSION=-yanzi
查看 kernel 对应的 devname (仅供参考,不要搞错)
fdisk -l
udevadm info -n /dev/mmcblk2p4
# 它俩的 magic number 应该是一样的,这里会显示以 `ANDROID!` 开头
sudo od -c /dev/mmcblk2p4 | more
sudo od -c boot.img | more
烧录 kernel
dd if=boot.img of=/dev/mmcblk2p4 seek=0
sync
reboot
重新安装 docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo docker run hello-world
成功运行
arm64 的软件生态没有想象中那么差,功耗也低,随便跑点什么挖个洞也够它的使用成本了。另外,用来瞎折腾也挺好的,变砖风险极低,进下 Maskrom 模式即可救回。
不过,这里需要注意两个坑
- 最好是在 win 实体机上烧录固件
- 换条好点的 usb 公对公数据线
上次遇到因为数据线问题造成固件无法刷入,还是使用 checkra1n 对 iphone 手机进行越狱,那个情况是用 typec 转 lightning 的数据线无法正常 patch,换成 usb 转 ligthning 的数据线就正常了,原因没有深究。
(流下了没有技术的泪水.jpg