跳到主要内容

ROCK 4D Linux Guest

ROCK 4D 的 Linux VM 配置使用 image_location = "fs"。Axvisor 会从板卡根文件系统读取以下资产,TGOSKits 的构建和 board test 不会自动生成或安装它们:

/guest/linux/rock-4d
/guest/linux/rock-4d-linux-smp1.dtb

Linux kernel 使用 Radxa BSP 的 linux/rk2410 profile 构建,guest DTB 的源文件由 TGOSKits 仓库维护。运行 ROCK 4D board 用例前,先设置两个工作区路径和板卡连接信息:

export TGOSKITS_ROOT=/path/to/tgoskits
export ROCK4D_BSP=/path/to/rock-4d/bsp
export ROCK4D_HOST=<board-linux-ip>
export ROCK4D_USER=radxa

1. 构建 Linux kernel

使用 BSP 构建 raw ARM64 kernel Image

cd "${ROCK4D_BSP}"
./bsp linux rk2410

test -s .src/linux/arch/arm64/boot/Image

如果正在复用 .src/linux 中有意保留的本地 kernel 修改,使用 BSP 提供的 --dirty 选项重新构建:

cd "${ROCK4D_BSP}"
./bsp --dirty linux rk2410

2. 生成 Guest DTB

从 TGOSKits 维护的 DTS 生成 guest DTB:

cd "${TGOSKITS_ROOT}"

mkdir -p tmp/axvisor/rock-4d
dtc -I dts -O dtb \
-o tmp/axvisor/rock-4d/rock-4d-linux-smp1.dtb \
os/axvisor/configs/vms/rock-4d/linux-smp1.dts

test -s tmp/axvisor/rock-4d/rock-4d-linux-smp1.dtb

3. 部署 Guest 资产

将 BSP kernel 和 guest DTB 一起部署到板卡的 Axvisor guest 目录:

scp \
"${ROCK4D_BSP}/.src/linux/arch/arm64/boot/Image" \
tmp/axvisor/rock-4d/rock-4d-linux-smp1.dtb \
"${ROCK4D_USER}@${ROCK4D_HOST}:/tmp/"

ssh "${ROCK4D_USER}@${ROCK4D_HOST}" \
'sudo install -D -m 0644 /tmp/Image /guest/linux/rock-4d && \
sudo install -m 0644 /tmp/rock-4d-linux-smp1.dtb \
/guest/linux/rock-4d-linux-smp1.dtb && \
sudo sync && \
test -s /guest/linux/rock-4d && \
test -s /guest/linux/rock-4d-linux-smp1.dtb && \
sha256sum /guest/linux/rock-4d /guest/linux/rock-4d-linux-smp1.dtb'

bspdtcscpssh 或板端写入失败时必须停止,不能继续使用旧 kernel 或 DTB。

4. 运行 Board 用例

部署完成并确认两项资产均非空后,从 TGOSKits 仓库运行:

cd "${TGOSKITS_ROOT}"
cargo xtask axvisor test board --board rock-4d-linux

board 用例覆盖从 U-Boot 启动 Axvisor 到 Linux guest 登录提示的路径,但不修改板卡的持久文件系统。更新 BSP kernel 或 guest DTS 后必须重新执行对应的构建、部署和 sync 流程。