使用 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 进行查看。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 qemu模拟麒麟(Kylin) ARM64 桌面系统,你需要进行以下步骤: 1. 下载麒麟 ARM64 桌面系统的镜像文件,比如 kylin-desktop-arm64.iso。 2. 安装 qemu 虚拟机软件,比如在 Ubuntu 系统上使用以下命令进行安装: ``` sudo apt-get install qemu qemu-kvm ``` 3. 使用 qemu-img 工具创建一个硬盘镜像文件,比如 kylin-arm64.img: ``` qemu-img create -f qcow2 kylin-arm64.img 10G ``` 4. 启动 qemu 虚拟机,加载麒麟 ARM64 镜像文件和硬盘镜像文件: ``` qemu-system-aarch64 -m 2048 -cpu cortex-a57 -M virt -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -drive file=kylin-desktop-arm64.iso,index=0,media=cdrom -drive file=kylin-arm64.img,index=1,media=disk -netdev user,id=user0 -device virtio-net-device,netdev=user0 ``` 上述命令中的参数说明: -m 2048:虚拟机内存大小为 2048MB。 -cpu cortex-a57:虚拟机使用 Cortex-A57 处理器。 -M virt:虚拟机使用 virt 机型。 -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd:虚拟机使用 UEFI 引导。 -drive file=kylin-desktop-arm64.iso,index=0,media=cdrom:将 kylin-desktop-arm64.iso 文件作为光驱挂载到虚拟机中。 -drive file=kylin-arm64.img,index=1,media=disk:将 kylin-arm64.img 文件作为硬盘挂载到虚拟机中。 -netdev user,id=user0 -device virtio-net-device,netdev=user0:虚拟机使用用户网络模式。 5. 按照安装向导完成麒麟 ARM64 桌面系统的安装。 6. 安装完成后,重启虚拟机即可进入麒麟 ARM64 桌面系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值