news 2026/6/23 10:31:02

3.5启动QEMUARM64虚拟机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3.5启动QEMUARM64虚拟机

3.5 启动QEMU ARM64虚拟机

3.5.1 启动QEMU ARM64虚拟机

这条命令启动了一个基于 ARM 架构的虚拟机,配置了 4 GB 内存、4 个 CPU 核心、一个 VirtIO 硬盘和一个 VirtIO 网络设备,并指定了启动内核和根文件系统。通过-nographic和端口转发,可以在终端中直接操作虚拟机,并通过 SSH 访问虚拟机。

qemu-system-aarch64\-m4096\-cpu cortex-a72\-M virt,gic-version=3\-smp4\-kernel linux-build/arch/arm64/boot/Image.gz\-append"noinitrd sched_debug console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw crashkernel=256M loglevel=8 nokaslr"\-driveif=none,format=raw,file=rootfs/linuxroot.img,id=hd0\-device virtio-blk-device,drive=hd0\-netdev user,id=eth0,hostfwd=tcp::56789-:22 -device virtio-net-device,netdev=eth0\-nographic

正常情况下,你会见到如下登录界面。

Ubuntu22.04.5 LTS xeno-demo ttyAMA0 xeno-demo login:

以下是对该qemu-system-aarch64命令的逐行解释:

1.qemu-system-aarch64

这是 QEMU 的命令,用于启动一个基于 ARM 架构(64 位)的虚拟机。aarch64表示使用 ARMv8-A 64 位架构。

2.-m 4096

指定虚拟机的内存大小为 4096 MB(即 4 GB)。
-m参数控制分配给虚拟机的 RAM 大小。

3.-cpu cortex-a72

指定虚拟机使用的 CPU 模型为 Cortex-A72。
Cortex-A72 是 ARM 的一款高性能处理器核心。

4.-M virt,gic-version=3

指定虚拟机的机器类型为virt,这是 QEMU 提供的一种通用的虚拟化平台,用于模拟 ARM 系统。
gic-version=3表示使用 Generic Interrupt Controller (GIC) 版本 3,这是一种中断控制器标准,用于管理 ARM 系统中的中断。

5.-smp 4

指定虚拟机的 CPU 核心数量为 4。
-smp参数用于设置虚拟机的对称多处理(SMP)配置,这里表示虚拟机有 4 个虚拟 CPU 核心。

6.-kernel linux-build/arch/arm64/boot/Image.gz

指定虚拟机启动时使用的内核镜像文件路径。
Image.gz是一个压缩的 Linux 内核镜像,位于linux-build/arch/arm64/boot/目录下。

7.-append "noinitrd sched_debug console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw crashkernel=256M loglevel=8 nokaslr"

向内核传递启动参数:

  • noinitrd: 不使用 initrd(初始 RAM 磁盘)。
  • sched_debug: 启用调度器调试信息。
  • console=ttyAMA0: 将控制台输出重定向到ttyAMA0(虚拟串口)。
  • root=/dev/vda: 指定根文件系统所在的设备为/dev/vda
  • rootfstype=ext4: 指定根文件系统的类型为 ext4。
  • rw: 以读写模式挂载根文件系统。
  • crashkernel=256M: 预留 256 MB 内存用于崩溃转储(kdump)。
  • loglevel=8: 设置内核日志级别为 8(最高级别,显示所有日志信息)。
  • nokaslr: 禁用内核地址空间布局随机化(KASLR),主要用于调试。
8.-drive if=none,format=raw,file=rootfs/linuxroot.img,id=hd0

定义一个块设备(硬盘):

  • if=none: 表示不直接连接到任何接口,而是通过后续的-device参数进行绑定。
  • format=raw: 指定磁盘镜像格式为原始格式(raw)。
  • file=rootfs/linuxroot.img: 指定磁盘镜像文件路径。
  • id=hd0: 为该驱动器分配一个标识符hd0,用于后续引用。
9.-device virtio-blk-device,drive=hd0

将前面定义的块设备hd0连接到虚拟机,并使用 VirtIO 半虚拟化驱动程序。
VirtIO 是一种高效的 I/O 虚拟化技术,能够显著提高性能。

10.-netdev user,id=eth0,hostfwd=tcp::56789-:22

定义一个用户模式网络设备:

  • id=eth0: 为该网络设备分配标识符eth0
  • hostfwd=tcp::56789-:22: 设置端口转发规则,将主机的 56789 端口映射到虚拟机的 22 端口即SSH服务端口。这允许通过主机访问虚拟机的 SSH 服务ssh -p 56789 localhost
11.-device virtio-net-device,netdev=eth0

将前面定义的网络设备eth0连接到虚拟机,并使用 VirtIO 网络驱动程序。

12.-nographic

禁用图形界面输出,并将虚拟机的串口输出直接显示在终端上。

3.5.2 检查Cobalt内核

为了测试 Xenomai Cobalt内核是否正常启动,检查内核启动日志中的消息:

root@xeno-demo:~# dmesg | grep -i xenomai[0.502146][Xenomai]scheduling class idle registered.[0.502310][Xenomai]scheduling class rt registered.[0.502880]IRQ pipeline: high-priority Xenomai stage added.[0.511492][Xenomai]Cobalt v3.2.4

上述命令通过dmesg查看内核启动日志,并使用grep筛选出与 Xenomai 相关的消息,用于验证 Cobalt 内核是否正常启动。日志中显示了 Xenomai 的关键初始化信息,例如调度类(idle 和 rt)的注册以及 Cobalt 版本号(v3.2.4)。这些消息表明 Xenomai 实时子系统已成功加载并运行。如果未出现相关日志或存在错误信息,则可能意味着内核模块未正确加载或配置存在问题,需进一步排查安装和引导过程。

Xenomai Cobalt 内核正常启动后,会在/proc/xenomai目录下生成多个文件,用于提供运行时信息和调试支持。

root@xeno-demo:~# cat /proc/xenomai/version3.2.4 root@xeno-demo:~# cat /proc/xenomai/sched/statCPU PID MSW CSW XSC PF STAT %CPU NAME00000000018000100.0[ROOT/0]10000000018000100.0[ROOT/1]20000000018000100.0[ROOT/2]30000000018000100.0[ROOT/3]

/proc/xenomai/version显示当前 Xenomai 的版本号(如3.2.4),用于确认安装的版本是否正确。而/proc/xenomai/sched/stat提供了实时调度器的统计信息,包括每个 CPU 核心的任务模式切换次数(MSW)、上下文切换次数(CSW)、异常切换次数(XSC)、PF(缺页异常)以及STAT(任务状态)等。这些数据有助于监控系统实时性能和排查潜在问题,是调试和优化实时应用的重要工具。

为什么这里CPU的占用率是100%?这里 ROOT/x 是内核 idle 线程,在没有 Xenomai 实时线程运行的情况下,idle线程会占完整个CPU,这里的100%不代表整个系统都被跑满,旨在说明在没有用户态实时线程时,CPU都消耗在内核idle线程。等到有其他线程运行时,CPU会分配过去,也会看到非PID=0、非ROOT/x的线程在运行。

Xenomai Cobalt 内核的启动参数可以通过/sys/module/xenomai/parameters/目录查看,这些参数在内核模块加载时被初始化,用于配置 Xenomai 的运行行为。

root@xeno-demo:~# ls /sys/module/xenomai/parameters/allowed_group state supported_cpus sysheap_size root@xeno-demo:~# cat /sys/module/xenomai/parameters/sysheap_size4096

例如,sysheap_size表示系统堆的大小(以 KB 为单位),这里显示为4096KB,即 4 MB,用于分配实时任务的内存资源。其他参数如allowed_group控制访问权限,supported_cpus定义支持的 CPU 掩码,state显示模块状态。这些参数为管理员提供了灵活的配置选项,便于优化和调试实时系统性能。

3.5.3 检查Xenomai用户层库和工具

执行 Xenomai 的latency工具可以验证其实时性能和相关库是否正确安装。latency是 Xenomai 提供的一个基准测试工具,用于测量系统的实时延迟特性。运行该工具时,它会定期触发定时器中断,并记录系统响应的最大、最小和平均延迟。通过观察输出结果,可以判断 Xenomai 内核和用户空间库是否正常工作。如果工具能够成功运行并输出延迟数据,说明 Xenomai 环境已正确配置。

因为当前是在QMEU ARM64虚拟机下运行,具体的延迟数值可以忽略。在真实的硬件下测试,得到的延迟数值才有参考价值。

root@xeno-demo:~# latency==Sampling period:1000us==Test mode: periodic user-mode task==All resultsinmicroseconds warming up... RTT|00:00:01(periodic user-mode task,1000us period, priority99)RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst RTD|132.110|495.434|1184.420|2|0|132.110|1184.420RTD|133.921|503.454|1131.748|7|0|132.110|1184.420RTD|70.308|538.631|1391.883|16|0|70.308|1391.883RTD|167.898|494.612|1416.772|21|0|70.308|1416.772RTD|122.023|498.749|1110.043|28|0|70.308|1416.772RTD|73.017|483.336|1479.383|32|0|70.308|1479.383
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 2:25:14

4.1用户空间RTOSAPI

4.1 用户空间RTOS API 4.1.1 用户空间RTOS API列表 本章对Xenomai 3编写,描述应用程序的构建与运行方式。文中"应用程序"特指基于Xenomai 3库的用户空间程序。 Xenomai 3通过将实时核心Cobalt与Linux内核并行运行,形成双内核架构。该实时扩…

作者头像 李华
网站建设 2026/6/23 17:41:57

11、嵌入式Linux开发:内核日志存储、追踪系统与设备树管理

嵌入式Linux开发:内核日志存储、追踪系统与设备树管理 1. 内核日志消息与崩溃信息存储到持久化存储 在Linux系统中,将内核日志消息、内核崩溃(panic)或错误(oops)信息存储到持久化存储是一种重要的调试手段。借助Linux内核的持久化存储支持(CONFIG_PSTORE),我们能够…

作者头像 李华
网站建设 2026/6/23 19:31:15

17、Yocto项目软件层与应用开发全解析

Yocto项目软件层与应用开发全解析 软件层规则与权限 在Linux系统中,SMACK(Smack Mandatory Access Control)规则存储于 /etc/smack/accesses 文件,其格式如下: <subject-label> <object-label> <accesses>这些规则可通过 smackload 实用工具加载…

作者头像 李华
网站建设 2026/6/23 19:31:02

宁波紧固件产业集群的外向型制造与装备升级路径

在全球制造业结构深度调整、产业链竞争不断向精细化与系统化演进的背景下&#xff0c;紧固件这一基础工业产品正在重新被审视其产业价值。从结构安全到装配效率&#xff0c;从长期可靠性到全生命周期管理&#xff0c;紧固件的技术水平与制造能力&#xff0c;已经成为衡量一个地…

作者头像 李华
网站建设 2026/6/23 19:46:28

AI赋能工业4.0:数据堂一站式数据服务加速制造智能化落地

工业4.0的浪潮正以前所未有的力量重塑全球制造业格局。从自动化生产线的普及到智能工厂的落地&#xff0c;从单一设备的升级到全产业链的协同&#xff0c;制造业正迈入数据驱动的智能新时代。这一转型既带来了前所未有的发展机遇&#xff0c;也伴随着诸多挑战&#xff1a;如何将…

作者头像 李华
网站建设 2026/6/23 3:06:10

如何打造吸睛动态头像?GIF动态头像制作指南

在社交平台、游戏账号或工作沟通工具中&#xff0c;一款独特的动态头像总能快速吸引注意力&#xff0c;彰显个人风格。无需专业设计技能&#xff0c;不用下载复杂软件&#xff0c;借助便捷的动态头像制作工具&#xff0c;就能轻松制作出高清流畅的 GIF 动态头像&#xff0c;让你…

作者头像 李华