ZVM-RK3588v2.1发行版部署指南
一、ZVM-RK3588v2.1简介
ZVM-RK3588v2.1发行版是一款面向瑞芯微RK3588处理器芯片的ZVM定制化版本,于2026年5月发布。其介绍如下:
(1)支持板卡与镜像说明
本节说明ZVM-RK3588v2.1发行版支持的板卡、镜像下载入口和板卡适配文件的替换方式。
支持板卡列表
| 序号 | 板卡名称 | 说明 |
|---|---|---|
| 1 | ROC-RK3588S-PC | 默认支持板卡,直接使用ZVM发行版镜像包中的镜像即可运行 |
| 2 | FORLINX OK3588-C |
需要替换zvm_release_rk3588v2.1.bin和boot.scr
|
本文使用的镜像分为公共镜像和非公共镜像。公共镜像提供通用发行版内容;非公共镜像用于适配特定板卡,主要包含ZVM针对板卡硬件差异做的少量修改,例如网卡频率修改、启动脚本文件。
公共镜像
非公共镜像(按支持板卡提供,主要包含不同板卡适配后需修改的镜像文件)
| 序号 | 镜像名称 | 下载链接 |
|---|---|---|
| 1 |
FORLINX
OK3588-C板卡镜像文件(zvm_release_rk3588v2.1.bin和boot.scr)
|
官方下载地址 |
使用方式(以FORLINX OK3588-C为例:)
- (1)先下载并解压公共镜像包。
- (2)若使用默认支持板卡ROC-RK3588S-PC,直接使用公共镜像包中的文件。
-
(3)若使用FORLINX
OK3588-C板卡,下载对应板卡的非公共镜像,并将其中的
zvm_release_rk3588v2.1.bin和boot.scr替换解压后的公共发行版镜像包中对应文件。 - (4)按照指南后续步骤开始部署。
ZVM-RK3588v2.1发行版功能总览如下:
(2)灵活的多OS 混合部署方式
支持同时启动多达7个客户OS。
| 客户 OS | Zephyr | FreeRTOS | Nuttx | Linux | Android | OpenHarmony | Ubuntu | openEuler |
|---|---|---|---|---|---|---|---|---|
| 可分配的核数 | 1/2/3/4核 | 1核 | >1/2/3/4核 | 1/2/3/4核 | 1核 | 1核 | 1核 | 1/2/3/4核 |
| 内存大小 | 32M | 128M | 128M |
512/ 1024M |
1024M | 1024M |
512/ 1024M |
512/ 1024M |
| 是否支持AMP | × | × | × |
(3)灵活的多核 OS支持
RK3588为8核处理器,ZVM默认占用0核,客户OS可自主选择部署在A55与A76的核心上:
| 处理器型号 | 核号 | 分配说明 |
|---|---|---|
| Cortex-A55 | 0 | ZVM |
| Cortex-A55 | 1~3 | 客户OS灵活部署 |
| Cortex-A76 | 4~7 | 客户OS灵活部署 |
二、ZVM-RK3588v2.1 部署教程
1. 准备硬件
- 开发板:ROC-RK3588S-PC (购买链接)(需要8G内存版本,不然第二个以后的Linux无法正常启动)
- 读卡器、TF卡:32GB及以上 (购买链接)
- USB转TTL模块、网线:(购买链接)
2. 使用DiskGenius给TF卡分区(windows主机下操作)
💡 提示: 如果您手中已经是按照此教程分区过的TF卡,可以直接跳往第3步。
将TF卡插入读卡器,连接到你的PC中,打开 DiskGenius(ZVM官方网站 https://esnl.hnu.edu.cn/zvm/downloads.html 中资源下载中心可以免费获取)
下载安装完成后打开DiskGenius,选中你的TF卡
点击 Quick Partition (快速分区)
按照以下选项操作,然后点击 OK(注意:ZVM要求第一个分区必须是8G,第二个分区大于21G,不然会导致Linux客户OS启动失败;)
加载完成后可以看到TF卡已经被划分成两个分区,完成后可以退出DiskGenius
3. 客户OS 文件系统镜像烧录(Linux主机下操作)
💡 提示: 如果TF卡中已经成功写入过文件系统镜像,可以直接跳往第4步。
将TF卡插入读卡器,连接到Linux主机,从ZVM官网资源中心(https://esnl.hnu.edu.cn/zvm/downloads/download_rk3588-v2.1.html)
分别下载获取对应版本的文件(共需要7个文件:6个分卷压缩包和1个解压脚本,分别为kernel_images.001.7z、file_system_images.001.7z、file_system_images.002.7z、file_system_images.003.7z、file_system_images.004.7z、file_system_images.005.7z和extract_all.sh),先创建ZVM-RK3588v2.1文件夹,再按照最终部署目录结构将这7个文件放入该目录。
将这7个文件放入ZVM-RK3588v2.1目录下,执行extract_all.sh脚本进行解压,解压完成后会得到2个文件夹:kernel_images、file_system_images,其中
file_system_images文件夹中包含了我们需要烧录到TF卡的文件系统镜像和烧录脚本:auto_dd.sh(也可以自行编译文件系统进行替换)。
然后进入file_system_images目录打开终端,执行命令df或lsblk命令找到设备,这里TF卡的第二个分区设备名称是sdb2(不同版本的Linux或者不同型号TF卡设备名称不一定相同,以自己主机查找到的设备信息为准)
确认显示的设备名称和位置,根据自己的设备信息修改脚本中的TARGET项。脚本文件auto_dd.sh内容如下图所示,根据你的需要可以自定义seek位置和文件系统镜像名称等。ZVM默认一个块大小是3GB,需要每隔3GB写入,否则可能导致写入的文件系统损坏,也可以根据需要修改写入镜像的数量。
⚠️ 注意
第一:请务必确认of后的设备名称正确,否则可能会误写入其他磁盘导致数据丢失。
第二:请务必确认TF卡第二个分区有足够的空间存放这些文件系统镜像,如果TF卡容量较小,可以将写入的镜像数量减少,只要注释掉对应的写入命令即可,否则可能导致写入失败或者文件系统损坏。
⚠️ 重要提示
ZVM新增了Guest运行记录保存功能,会将运行过且未删除的Guest信息保存到TF卡第二个分区的前3GB空间中。当设备因异常导致断电或者重启后,再次运行ZVM可以直接从TF卡加载这些记录来重新创建并运行相同的Guest。因此在TF卡写入镜像时需要将第二个分区的前3GB预留,第一个seek要从3GB(seek=3072)开始。
例如图中这里将第二和第三个安卓和鸿蒙的文件系统镜像的写入命令已经注释掉了,并且修改了seek的位置,让这6个客户OS的seek的位置从3GB开始并且连续,这样就会分别写入1个安卓、1个鸿蒙、2个Linux、1个openEuler和1个Ubuntu的文件系统镜像,最终需要占用第二个分区的21GB空间。
如果自己需要更改启动客户OS的数量,例如需要启动2个安卓OS,那么重新修改图中写入顺序和镜像即可,只要保证最终写入大小不超过你的TF卡容量即可。
然后执行命令./auto_dd.sh,等待镜像写入完成即可,实际写入速度取决于TF卡、读卡器的性能和写入镜像的数量。或者按照脚本中的格式,手动在终端执行dd命令单独写入某一个镜像,手动执行dd命令前同样需要先使用df或lsblk命令查看自己的设备名称。
4. 准备ZVM启动镜像(Linux主机下操作)
如果你已经完成了第3步文件系统镜像的写入,那么接下来就可以准备ZVM的启动镜像了。我们回到kernel_images文件中,里面包含了制作ZVM镜像所需要的所有文件和脚本,也包含了已经制作完毕的所有启动镜像,可以直接使用这个文件夹中的镜像文件,进行后面的启动操作。主要用到3个文件:nrtos_images.bin、boot.scr、zvm_release_rk3588v2.1.bin。
4.1 写入nrtos_images.bin
将Non-RTOS镜像包写入TF卡中(注意根据实际情况修改设备名of,使用df或者lsblk命令确认设备名称,如/dev/sdb2):
4.2 复制启动文件
将zvm_release_rk3588v2.1.bin和boot.scr复制到TF卡的第一个分区(演示中的TF卡命名为ZVM)。
复制完成后弹出TF卡,插入对应的开发板中,开发板上电的同时按Ctrl+C阻止进入autoboot,然后在命令行输入ZVM启动命令:run distro_bootcmd
注意:若要实现ZVM和Zephyr RTOS的快速自启动,请参照4.4章节部分重新烧录固件和uboot。
💡
提示:如果板卡不支持该命令,可以使用以下替代命令手动加载:
mmc list; mmc dev 1; fatload mmc 1:1 0x00c00000 boot.scr;
source 0x00c00000
ZVM就能正确启动啦,启动时间取决于板卡和TF卡性能。
4.3 自行编译镜像(可选)
kernel_images中会包含一个raw_kernel_images文件夹,这个文件夹中包含了制作ZVM所需要的镜像源以及打包脚本,可以替换其中对应的文件,例如Linux的内核镜像Image,然后使用打包脚本制作您专属的ZVM
guest镜像。
我们回到上一级目录,进入kernel_images文件夹,执行auto_py.sh,输入3生成ZVM镜像、启动boot.scr和Non-RTOS镜像包。
执行完成后会在当前目录下生成新的zvm_release_rk3588v2.1.bin、boot.scr和Non-RTOS镜像包文件。
完成后再按照4.1的步骤进行镜像包文件烧录,即可完成镜像替换。
4.4 ROC-RK3588S-PC使用USB线缆更换uboot(可选)
ROC-RK3588S-PC开发板默认uboot只能进入到默认的uboot环境,例如Firefly官方提供的Ubuntu或安卓系统。
因此我们制作了替换uboot文件,使用我们提供的uboot文件可以让您的ROC-RK3588S-PC开发板上电后自动查找并启动TF卡中的ZVM启动镜像文件。
⚠️ 注意
我们的uboot只支持在安卓固件环境下进行替换,如果您的开发板当前uboot环境是Ubuntu或者其他Linux系统,那么需要先将开发板刷入安卓系统的uboot环境后才能进行替换操作,具体操作可以参考Firefly官方网站中的相关的刷机教程。
在firefly官方的资源下载处找到的Android14.0固件,根据教程进行固件升级后,即可使用我们提供的uboot文件。
如果您需要替换开发板的uboot,可以按照以下步骤操作:
4.4.1 准备工具
| ROC-RK3588S-PC开发板 | 用于进行uboot更换操作 |
| uboot | 压缩包中提供,放在file_system_images目录下 |
| 主机 | 用于运行烧写工具 |
| 良好的Type-C数据线 | 用于连接主机和开发板 |
4.4.2 准备uboot
uboot镜像已经放入压缩包中,解压后即可获取uboot.img文件。
4.4.3 安装烧写工具
Windows操作系统
- 安装RK USB驱动
下载
Release_DriverAssistant.zip,解压后运行DriverInstall.exe。为了让所有设备都使用更新的驱动,请先选择
驱动卸载,然后再选择 驱动安装。
- 运行AndroidTool的RKDevTool.exe
4.4.4 进入升级模式
通常我们升级uboot的模式有两种,分别是Loader模式和MaskRom模式。烧写uboot前,我们需要连接好设备,并让板子进入到可升级模式。
4.4.4.1 硬件方式进入Loader模式
连接设备并通过 RECOVERY按键进入Loader升级模式步骤如下:
- 先断开电源适配器连接
- 使用Type-C数据线一端连接主机,一端连接开发板
- 按住设备上的 RECOVERY(恢复)键并保持
- 接上电源
- 大约两秒钟后,松开 RECOVERY 键
4.4.4.2 软件方式进入Loader模式
Type-C数据线接好后,在串口调试终端或adb shell给板子运行以下命令:
4.4.4.3 查看Loader模式
如何确定板子是否进入Loader模式,我们可以通过工具去查看。
Windows操作系统
通过AndroidTool工具可以看到下方提示
Found One LOADER Device。
如果已经进行了“进入Loader模式”的操作,仍旧没有看到烧写工具提示LOADER,此时可以查看Windows主机是否有提示发现新硬件并配置驱动。打开设备管理器,会见到新设备
Rockusb Device
出现,如下图。如果没有,可返回上一步重新安装驱动。
4.4.5 烧写uboot
在进入Loader模式后,我们可以使用AndroidTool工具来烧写uboot文件。
打开AndroidTool工具,连接设备,在下载镜像页面中选中uboot这一行并打勾,然后点击最右侧的小框选择到新的uboot文件:
点击执行按钮后会开始烧写uboot文件,烧写过程只需要几秒,烧写完成后右侧提示框会显示下载完成。
烧写完成后,重启板子即可使用新的uboot文件,如果您的板子没有自动重启,请手动重启板子。此时如果您的TF卡中已经有了ZVM启动镜像,则会直接自动启动并进入ZVM界面。
祝您开发愉快!✨
三、部署后的使用教程
| 项目名称 | 链接地址 |
|---|---|
| VisualZVM的使用指南 | http://esnl.hnu.edu.cn/zvm/features/visual-zvm-v2.1.html |
| 基于VisualZVM的自动化测试系统 | http://esnl.hnu.edu.cn/zvm/features/auto-test-v2.1.html |