您好,登录后才能下订单哦!
# QEMU如何搭建树莓派环境
## 前言
对于嵌入式开发者和Linux爱好者而言,树莓派是一个极具吸引力的开发平台。然而,受限于硬件资源或开发场景,有时我们需要在PC上模拟树莓派环境。QEMU作为一款开源的硬件虚拟化工具,能够完美模拟ARM架构环境,本文将详细介绍如何使用QEMU搭建树莓派模拟环境。
---
## 一、准备工作
### 1.1 硬件/软件需求
- **主机系统**:Linux(推荐Ubuntu/Debian)或macOS
- **必要组件**:
- QEMU系统模拟器(`qemu-system-arm`)
- 树莓派内核镜像(`kernel-qemu-*-raspbian`)
- 树莓派系统镜像(Raspbian/Raspberry Pi OS)
- 设备树文件(`versatile-pb.dtb`)
### 1.2 安装QEMU
```bash
# Ubuntu/Debian
sudo apt-get install qemu-system-arm
# macOS (通过Homebrew)
brew install qemu
从官方获取最新Raspberry Pi OS Lite镜像(无桌面环境更节省资源):
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-YYYY-MM-DD/YYYY-MM-DD-raspios-bullseye-armhf-lite.img.xz
unxz YYYY-MM-DD-raspios-bullseye-armhf-lite.img.xz
wget https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/kernel-qemu-5.10.63-bullseye
wget https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/versatile-pb.dtb
注意:不同镜像版本需匹配对应的内核文件。
原始镜像仅约2GB,建议扩容:
qemu-img resize YYYY-MM-DD-raspios-bullseye-armhf-lite.img +4G
创建启动脚本start_raspi.sh
:
#!/bin/bash
qemu-system-arm \
-M versatilepb \
-cpu arm1176 \
-m 256 \
-kernel kernel-qemu-5.10.63-bullseye \
-dtb versatile-pb.dtb \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-drive file=YYYY-MM-DD-raspios-bullseye-armhf-lite.img,format=raw \
-net nic -net user,hostfwd=tcp::5022-:22 \
-no-reboot \
-nographic
赋予执行权限:
chmod +x start_raspi.sh
参数 | 作用 |
---|---|
-M versatilepb |
模拟Versatile PB板 |
-cpu arm1176 |
指定ARMv6架构CPU |
-m 256 |
分配256MB内存 |
-net user |
启用网络并设置SSH端口转发 |
./start_raspi.sh
系统将启动到登录界面:
- 默认用户名:pi
- 默认密码:raspberry
sudo raspi-config
选择 Advanced Options
> Expand Filesystem
sudo systemctl enable ssh
sudo systemctl start ssh
若需启动桌面环境: 1. 下载完整版镜像(非Lite版本) 2. 修改启动参数:
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw console=ttyAMA0,115200 console=tty1" \
-serial stdio \
-vga virtio
# 主机端创建共享目录
mkdir ~/share
# 启动时添加参数:
-virtfs local,path=/home/user/share,mount_tag=share,security_model=mapped
在树莓派内挂载:
sudo mkdir /mnt/share
sudo mount -t 9p -o trans=virtio,version=9p2000.L share /mnt/share
现象:启动时出现Kernel panic - not syncing
解决方案:
- 检查内核与镜像版本匹配性
- 确认启动参数中的root=
设备号正确(可能是sda1/sda2)
现象:无法ping通外网
解决方案:
sudo dhclient eth0
-enable-kvm -machine virt
-m 512
# 主机上编译ARM程序
arm-linux-gnueabihf-gcc test.c -o test
# 通过共享文件夹传输到QEMU
./test
虽然QEMU无法真实模拟GPIO,但可通过设备模型测试逻辑:
#include <wiringPi.h>
int main() {
wiringPiSetup();
pinMode(0, OUTPUT); // 模拟GPIO17
digitalWrite(0, HIGH);
}
通过QEMU搭建树莓派环境,开发者可以在不依赖实体硬件的情况下进行系统调试、应用开发和教学实验。虽然存在性能损失和部分硬件功能限制,但其低成本和高灵活性的特点使其成为嵌入式开发的重要工具。随着QEMU的持续更新,对树莓派新特性的支持也将不断完善。
资源推荐: - QEMU官方文档 - Raspberry Pi Kernel Sources - QEMU-RPi项目 “`
(全文约1650字,实际字数可能因Markdown渲染略有差异)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。