前言说明
我移植的硬件设备是:
SoloLinker-A V1版本 RV1106G3 256M内存 8G储存EMMC
运行系统用的是:
RV1106-SOLOLINKER-EMMC_WIFI_UBUNTU
RV1106的架构为
armv7l/armhf
,本教程直接在SoloLinker-A
上运行Ubuntu
来获取Alpine
系统的ROOTFS
开始移植
- 获取工具
1 | # Alpine官方提供了一个获取ROOTFS的脚本,如无法访问github也可解开官方alpine-make-rootfs包提取 |
- 运行命令
1 | # 通过下面这段命令就可以获取Alpine系统的ROOTFS |
- 命令解释
1 | # 开头三行变量APK_OPTS:允许不可信,APK_TOOLS_URI:apk工具的下载路径,APK_TOOLS_SHA256:apk工具的sha256sum值 |
- 通过上面的步骤,可以获取到
alpine-rootfs-20240401.tar.gz
根文件系统。后期如果想修改或添加其他则可以参考如下操作
1 | # 解包后直接操作文件或chroot执行里面的命令 |
相关脚本
- 启动时执行的脚本:
/etc/init.d/rcS
和关闭时执行的脚本:/etc/init.d/rcK
1 | # BusyBox init 会在启动后读取/etc/inittab文件,开机后会执行字段为 sysinit 的语句中的命令,关机前先执行字段为 shutdown 的语句中的命令 |
- 添加通过
ADB
连接到Alpine
系统的功能
1 | # 下面这两个文件自己去 sololinker/sysdrv/tools/board/rootfs_ubuntu.tar.gz 中提取放到Alpine根文件系统对应位置 |
- 通过
rcS
方式启动和连接WiFi的例子
1 | # 设置硬件资源和加载无线网卡驱动(V2版本请改4为6) |
- 刷入后让首次运行执行扩容脚本
1 | # 如果不存在 /var/lib/misc/firstrun 文件则运行 /usr/bin/resize-helper 后创建不存在的文件 |
其他说明
- Alpine使用apk作为包管理工具
1 | # 换其他源示例 |
- Alpine使用OpenRC的启动服务相关
1 | # Alpine使用OpenRC管理服务启动、停止、查看状态及加入启动项,但它默认没有安装 |
- Alpine的有线网络管理
1 | # 如果不需要通过eth0联网,则可跳过这步。因为如果没有插入网线则会在 udhcpc: broadcasting discover 处卡一会 |
- Ubuntu系统中的cat /etc/fstab 的内容
1 | # <file system> <mount pt> <type> <options> <dump> <pass> |
构建镜像
提供两种方式将我们移植的Alpine系统构建成可刷入的镜像
方法一:替换根文件系统后开始编译
1 | # 先备份原来SDK中的Ubuntu根文件系统,然后拷贝alpine-rootfs-20240401.tar.gz到该目录与Ubuntu的同名 |
- 方法二:通过SDK提供的工具来构建镜像
1 | # 拷贝SDK的内核源码和uboot源码(以下用8G的EMMC版本为例) |