使用 QEMU/KVM 模拟 ARM64
使用 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相关推荐
- Ubuntu 上使用 qemu 模拟 Arm64 linux
Ubuntu 上用 qemu 模拟 Arm64 linux 环境配置 1. 安装Arm64交叉编译工具链 2. 安装qemu 下载源码包 编译 编译Linux kernel 编译qemu 编译busy ...
- qemu模拟arm64一直卡住不动
qemu模拟arm64一直卡住不动 问题描述 运行qemu-system-aarch64后一直卡在那里不动,终端无信息输出 做过的尝试 解决方法 发现编译内核方法有问题 更新qemu到3.0解决问题 ...
- QEMU KVM Libvirt手册(7): 硬件虚拟化
在openstack中,如果我们启动一个虚拟机,我们会看到非常复杂的参数 qemu-system-x86_64 -enable-kvm -name instance-00000024 -S -mach ...
- 计算机io工作方式,QEMU/KVM和VirtIO工作模式
https://blog.csdn.net/shengxia1999/article/details/52244119 KVM:Kernel-Based Virtual Machine 基于内核的虚拟 ...
- QEMU/KVM原理概述
1. QEMU与KVM 架构 qemu 和 kvm 架构整体上分为 3 部分,对应着上图的三个部分 (左上.右上和下),3 部分分别是 VMX root 的应用层,VMX no-root 和 VMX ...
- QEMU, KVM, QEMU-KVM 和 Goldfish
qemu QEMU 是模拟器 QEMU在 在 System 模式下,能进行指令级的模拟(就是说他虚拟了一个/多个CPU(包含内存管理器等),比如虚拟一个ARM CPU) 可以模拟 IA-32 (x86 ...
- Proxmox VE 6.0管理指南——10. Qemu / KVM虚拟机
10. Qemu / KVM虚拟机 Qemu(Quick Emulator的缩写)是一个模拟物理计算机的开源虚拟机管理程序.从运行Qemu的主机系统的角度来看,Qemu是一个用户程序,可以访问许多本地 ...
- 一步步教你:如何用Qemu来模拟ARM系统
这是道哥的第011篇原创 文章目录 前言 为什么需要ARM模拟系统 应用程序的开发 系统开发(BSP) Qemu是什么? Qemu的两种模式 Qemu 能做什么?或者说适合做什么? 在 Ubuntu1 ...
- 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
最新文章
- 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
- php上传多个文件类型,ThinkPHP上传多文件多类型
- Matlab出现On Startup: Error using eval undefined function 'workspacefunc' for input arguments of type
- 《WF编程》系列之30 - 基本活动:错误处理
- GitHub 5.9K,目标检测、跟踪、关键点全覆盖的年度开源项目来了!
- Jakarta Commons:巧用类和组件三(转)
- 技术竞争力之Web技术方向
- 快速修复 Log4j2 远程代码执行漏洞步骤
- Oracle role and user privileges
- (译)Windows Azure:移动后端开发的主要更新
- 运用思维导图学习数据分析的五个步骤
- 微波雷达人体感应技术,智能镜子感应雷达模块应用,让生活更有趣
- 局域网php服务器搭建,php局域网服务器搭建
- Linux系统开机无限重启的解决办法
- java imageio write,java – 使用ImageIO.write jpg文件的问题
- html添加微信号,html代码点击复制微信号并自动打开微信添加好友
- 仓储室内定位系统—企业物流的“数字化”转型
- 【航天物流组参赛ReadMe.md】
- 微信支付遇到 商户号该产品权限未开通,请前往商户平台产品中心检查后重试
- 绝世舞姬计算机弹音乐,绝世舞姬(伴奏)