SBC-sig/documents/raspberrypi/QEMU启动树莓派.md
2026-01-04 11:24:29 +08:00

122 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 介绍
本文档主要介绍如何使用 [QEMU](https://www.qemu.org/) 模拟启动 openEuler 的树莓派镜像。
# 实验环境
- 操作系统EulixOS
- 架构x86_64
实验环境相关信息见下图:
![](images/QEMU实验环境.png)
# 安装 QEMU
1. 下载 QEMU
从 [QEMU](https://download.qemu.org/) 下载源码。我们这里下载当前最新版本 [QEMU 6.0.0](https://download.qemu.org/qemu-6.0.0.tar.xz)。执行命令:
`wget https://download.qemu.org/qemu-6.0.0.tar.xz`
2. 解压缩源码
`tar xvJf qemu-6.0.0.tar.xz`
3. 配置 QEMU
`./configure --target-list=arm-softmmu,aarch64-softmmu --enable-debug --enable-sdl`
可以通过命令 `./configure --help` 查看配置相关选项和帮助信息。
如配置失败,需根据提示解决问题。例如,可能需要安装依赖包 `SDL2-devel``meson``dnf -y install SDL2-devel meson`
4. 编译 QEMU
`make`
5. 安装 QEMU
`make install`
6. 查看 QEMU 版本
例如,通过命令 `qemu-system-aarch64 --version` 查看 qemu-system-aarch64 工具的版本。
# 准备 openEuler 镜像等文件
1. 下载 openEuler 的树莓派镜像
openEuler 的树莓派镜像下载链接详见 [SBC SIG 主仓库](https://atomgit.com/openeuler/SBC-sig)。这里我们以 openEuler 社区发布的 openEuler 20.03 LTS SP1 版本的树莓派镜像为例,执行命令:
`wget https://repo.openeuler.org/openEuler-20.03-LTS-SP1/raspi_img/aarch64/openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz`
镜像所在路径记为 IMG_DIR。
2. 解压缩镜像
`xz -d openEuler-20.03-LTS-SP1-raspi-aarch64.img.xz`
得到镜像文件 `openEuler-20.03-LTS-SP1-raspi-aarch64.img`
3. 提取 dtb 和 kernel8.img
1. 使用 losetup 将镜像文件虚拟成块设备
`losetup -f --show openEuler-20.03-LTS-SP1-raspi-aarch64.img`
例如,显示结果为 /dev/loop0。
2. 使用 kpartx 创建分区表 /dev/loop0 的设备映射
`kpartx -va /dev/loop0`
得到结果将 /dev/loop0 三个分区挂载了:
```
add map loop0p1 ...
add map loop0p2 ...
add map loop0p3 ...
```
执行 `ls /dev/mapper/loop0p*` 可以看到 openEuler-20.03-LTS-SP1-raspi-aarch64.img 的三个分区:
```
/dev/mapper/loop0p1 /dev/mapper/loop0p2 /dev/mapper/loop0p3
```
3. 挂载镜像的 boot 分区
创建挂载路径,如 /home/xxx/boot则需要执行命令 `mkdir /home/xxx/boot`。下面将该挂载路径记为 `BOOT_DIR`。
挂载镜像的 boot 分区到 BOOT_DIR`mount /dev/mapper/loop0p1 BOOT_DIR`。
4. 提取 dtb 和 kernel8.img 到 IMG_DIR
```
cd IMG_DIR
cp BOOT_DIR/kernel8.img ./
cp BOOT_DIR/*.dtb ./
```
# QEMU 模拟启动树莓派
1. 查看可供选择模拟的机器
`qemu-system-aarch64 -M help`
我们这里选择 `raspi3`。
2. 模拟启动树莓派
```
cd IMG_DIR
qemu-system-aarch64 -M raspi3 -cpu cortex-a53 -m 1024 -kernel kernel8.img -dtb bcm2710-rpi-3-b.dtb -sd openEuler-20.03-LTS-SP1-raspi-aarch64.img -net user,hostfwd=tcp::6022-:22 -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p3 rootwait panic=1" -no-reboot -nographic
```
QEMU 相关命令及其参数可参考 [QEMU Quick Start](https://qemu-project.gitlab.io/qemu/system/quickstart.html)。
启动后根据提示输入用户名密码即可登录。如下图,登录成功后,输出显示当前系统相关信息。`ctl + a` 抬起后再输入 `x`,即可退出 QEMU 模拟器环境。
![](images/QEMU启动树莓派.png)