使用 QEMU/KVM 模拟 ARM64

下载arm64专用BIOS,用于启动 EFI (可扩展固件接口) 内核

https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

QEMU参数:  -bios ./QEMU_EFI.fd

使用 debian mini.iso (99M)进行测试

安装镜像: https://d-i.debian.org/daily-images/arm64/daily/netboot/mini.iso

在x86_86上模拟arm

qemu-system-aarch64 -M virt -cpu cortex-a57 \ -accel tcg,thread=multi -smp 4,cores=4,threads=1,sockets=1 -m 4096M \ -cdrom ./boot-mini-arm/mini.iso -monitor none -bios ../QEMU_EFI.fd

在arm64上使用kvm

qemu-kvm -M virt -cpu max \ -accel tcg,thread=multi -smp 4,cores=4,threads=1,sockets=1 -m 4096M \ -cdrom ./boot-mini-arm/mini.iso -monitor none -bios ../QEMU_EFI.fd

QEMU CPU参数:  -cpu host 或 -cpu max

常见问题

虚拟机太慢

QEMU默认内存只有512M,使用单核cpu

QEMU cpu内存参数:-accel tcg,thread=multi -smp 4,cores=4,threads=1,sockets=1 -m 4096M

关闭GUI,通过串口、网络的方式访问系统

  • QEMU参数:-nographic,不会出现QEMU窗口
  • QEMU参数:-serial stdio,串口重定向到qemu命令行。使用-nographic时,不用重复次选项
  • 设置虚拟机系统的默认启动级别,不启动X11

启动虚拟机只显示一个qemu monitor CLI

解决方法:

  • 使用快捷键 Ctrl+Alt+2 切换到串口界面
  • 使用 -monitor non 禁止QEMU monitor, 或使用 -serial stdio重定向串口到stdio

BIOS加载失败,或加载过慢。

解决方法:跳过BIOS直接加载内核

当BIOS EFI引导失败时候,可以试试-kernel/-initrd直接指定启动内核,启动安装好的系统需要制定根目录(-append 'root=/dev/vda2')

安装启动使用的内核,可以挂载ISO在/boot目录下拷贝,也可以从这里下载: - Index of /daily-images/arm64/daily/netboot/debian-installer/arm64

也可以从安装好的image里拷贝vmlinuz/initrd文件。

如何访问未启动的虚拟机的image文件

解决方法:使用 qemu-nbd

例子:添加ssh认证key,从而无密码ssh登陆

[amos@fedora sietium.com]$ sudo modprobe nbd
[amos@fedora sietium.com]$ ls -l /dev/nbd
nbd0  nbd1  nbd2  nbd3  nbd4  nbd5  nbd6  nbd7
[amos@fedora sietium.com]$ sudo qemu-nbd -c /dev/nbd0 debian-10-openstack-arm64.qcow2
[amos@fedora sietium.com]$ sudo mount /dev/nbd0p2 /mnt
[amos@fedora sietium.com]$ ls /mnt
bin   dev  home        initrd.img.old  lost+found  mnt  proc  run   srv  tmp  var      vmlinuz.old
boot  etc  initrd.img  lib             media       opt  root  sbin  sys  usr  vmlinuz
[amos@fedora sietium.com]$ cat /mnt/home/debian/.ssh/authorized_keys
[amos@fedora sietium.com]$ ssh-add -L >  /mnt/home/debian/.ssh/authorized_keys
[amos@fedora sietium.com]$ sudo umount /mnt
[amos@fedora sietium.com]$ sudo qemu-nbd -d /dev/nbd0
/dev/nbd0 disconnected

未找到根文件系统

启动挂载根分区错误示例:

Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
Begin: Running /scripts/local-block ... done.
done.
Gave up waiting for root file system device.  Common problems:- Boot args (cat /proc/cmdline)- Check rootdelay= (did the system wait long enough?)- Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/vda1 does not exist.  Dropping to a shell!BusyBox v1.30.1 (Debian 1:1.30.1-6+b3) built-in shell (ash)
Enter 'help' for a list of built-in commands.(initramfs)

解决方法:

  • 确认image的文件格式 (raw, qcow2), 在qemu命令行明确指定格式

QEMU参数: -drive if=none,file=./debian-11.qcow2,format=qcow2,id=hd0 -device virtio-blk-device,drive=hd0

  • 如果是直接从指定内核启动,需要使用 -append 'root=/dev/vda2' 指定根分区

如果是使用virtio-blk,设备名前缀为 /dev/vdaX, 如果是默认的ide接口 前缀为 /dev/hdaX 可以通过 ls /dev 进行查看。

使用 QEMU/KVM 模拟 ARM64相关推荐

  1. Ubuntu 上使用 qemu 模拟 Arm64 linux

    Ubuntu 上用 qemu 模拟 Arm64 linux 环境配置 1. 安装Arm64交叉编译工具链 2. 安装qemu 下载源码包 编译 编译Linux kernel 编译qemu 编译busy ...

  2. qemu模拟arm64一直卡住不动

    qemu模拟arm64一直卡住不动 问题描述 运行qemu-system-aarch64后一直卡在那里不动,终端无信息输出 做过的尝试 解决方法 发现编译内核方法有问题 更新qemu到3.0解决问题 ...

  3. QEMU KVM Libvirt手册(7): 硬件虚拟化

    在openstack中,如果我们启动一个虚拟机,我们会看到非常复杂的参数 qemu-system-x86_64 -enable-kvm -name instance-00000024 -S -mach ...

  4. 计算机io工作方式,QEMU/KVM和VirtIO工作模式

    https://blog.csdn.net/shengxia1999/article/details/52244119 KVM:Kernel-Based Virtual Machine 基于内核的虚拟 ...

  5. QEMU/KVM原理概述

    1. QEMU与KVM 架构 qemu 和 kvm 架构整体上分为 3 部分,对应着上图的三个部分 (左上.右上和下),3 部分分别是 VMX root 的应用层,VMX no-root 和 VMX ...

  6. QEMU, KVM, QEMU-KVM 和 Goldfish

    qemu QEMU 是模拟器 QEMU在 在 System 模式下,能进行指令级的模拟(就是说他虚拟了一个/多个CPU(包含内存管理器等),比如虚拟一个ARM CPU) 可以模拟 IA-32 (x86 ...

  7. Proxmox VE 6.0管理指南——10. Qemu / KVM虚拟机

    10. Qemu / KVM虚拟机 Qemu(Quick Emulator的缩写)是一个模拟物理计算机的开源虚拟机管理程序.从运行Qemu的主机系统的角度来看,Qemu是一个用户程序,可以访问许多本地 ...

  8. 一步步教你:如何用Qemu来模拟ARM系统

    这是道哥的第011篇原创 文章目录 前言 为什么需要ARM模拟系统 应用程序的开发 系统开发(BSP) Qemu是什么? Qemu的两种模式 Qemu 能做什么?或者说适合做什么? 在 Ubuntu1 ...

  9. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

最新文章

  1. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
  2. php上传多个文件类型,ThinkPHP上传多文件多类型
  3. Matlab出现On Startup: Error using eval undefined function 'workspacefunc' for input arguments of type
  4. 《WF编程》系列之30 - 基本活动:错误处理
  5. GitHub 5.9K,目标检测、跟踪、关键点全覆盖的年度开源项目来了!
  6. Jakarta Commons:巧用类和组件三(转)
  7. 技术竞争力之Web技术方向
  8. 快速修复 Log4j2 远程代码执行漏洞步骤
  9. Oracle role and user privileges
  10. (译)Windows Azure:移动后端开发的主要更新
  11. 运用思维导图学习数据分析的五个步骤
  12. 微波雷达人体感应技术,智能镜子感应雷达模块应用,让生活更有趣
  13. 局域网php服务器搭建,php局域网服务器搭建
  14. Linux系统开机无限重启的解决办法
  15. java imageio write,java – 使用ImageIO.write jpg文件的问题
  16. html添加微信号,html代码点击复制微信号并自动打开微信添加好友
  17. 仓储室内定位系统—企业物流的“数字化”转型
  18. 【航天物流组参赛ReadMe.md】
  19. 微信支付遇到 商户号该产品权限未开通,请前往商户平台产品中心检查后重试
  20. 绝世舞姬计算机弹音乐,绝世舞姬(伴奏)

热门文章

  1. 听好书《曾国藩传》—— 立德立功立言三不朽,为师为将为相一完人
  2. 我所推荐的深度学习学习路径
  3. 3台云腾讯云开始hadoop学习之路笔记二
  4. 售17.98-26.98万元 全新东风日产天籁正式上市
  5. 张俊林老师写的非常好的:深入理解Batch Normalization批标准化
  6. 【cocos creater】10.仿《弓箭传说》- 添加HP血条
  7. 读书笔记-卷积神经网络
  8. 全方位解析废柴如何逆袭 1w+?
  9. 表格划过变色之tr:hover无效,td:hover有效解决方法
  10. 初遇漂流瓶 v1.6