我也试试qemu虚拟化

本文用于记录使用qemu虚拟化aarch64架构的虚拟机。

https://qemu.weilnetz.de/w64/ 下载最新版的qemu for windows软件并安装,我这里c盘快满了,安装到d:\qemu目录里面

安装完成以后需要手动将d:\qemu加到PATH路径里面去,因为后续我们需要通过命令行去使用qemu的可执行文件。

现在高版本的qemu自带用于arm引导的uefi(bios) 文件,安装完就有,挺方便的。

下面通过命令行创建虚拟机硬盘

复制代码
qemu-img.exe create -f qcow2 f:\vm\arm64\disk\phytium-arm64.qcow2 80G

创建过程非常快,实际没有立即分配80G空间,只是创建了一个不到200k的文件

还需要手动下载一下下面的文件并把这个文件放到f:\vm\arm64目录里面去

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

下面创建虚拟机

复制代码
@echo off
REM 启动 ARM64 虚拟机安装程序
REM -M virt 表示使用 QEMU 通用 ARM 虚拟主板
REM -cpu cortex-a72 表示模拟 ARMv8 CPU,接近通用 64 位 ARM 服务器环境
REM -smp 4 表示 4 个虚拟 CPU
REM -m 8192 表示 8GB 内存
REM -bios 指定 ARM UEFI 固件
REM -drive if=virtio 使用 virtio 磁盘,提高兼容性和性能
REM -cdrom 挂载 ARM64 Linux 安装镜像
REM -netdev user 使用用户态网络,最容易上手
REM hostfwd 将宿主机 2222 端口转发到虚拟机 22 端口,后面可直接 SSH

qemu-system-aarch64.exe ^
  -M virt,accel=tcg ^
  -cpu cortex-a72 ^
  -smp 4 ^
  -m 4096 ^
  -bios f:\vm\arm64\QEMU_EFI.fd ^
  -display gtk ^
  -device qemu-xhci ^
  -device usb-kbd ^
  -device usb-mouse ^
  -device virtio-gpu-pci ^
  -drive if=none,file=f:\vm\arm64\disk\phytium-arm64.qcow2,format=qcow2,id=hd0 ^
  -device virtio-blk-pci,drive=hd0 ^
  -drive if=none,file=f:\iso\Kylin-Desktop-V10-Release-Build1-20200710-arm64.iso,media=cdrom,id=cdrom ^
  -device virtio-scsi-pci ^
  -device scsi-cd,drive=cdrom ^
  -device virtio-net-pci,netdev=net0 ^
  -netdev user,id=net0,hostfwd=tcp::2222-:22

然后更启动的时候会提示:display output is not active ,耐心等就行,特别特别慢,比vmware虚拟x64的机器要慢特别多,慢到你以为系统启动失败了。

然后如果你需要释放鼠标的话是ctrl+alt+G

在耗时1个小时以后系统安装完成,修改启动命令,去掉iso文件,创建f:\vm\arm64\start_kylin_arm64.bat

复制代码
@echo off
REM 启动已安装完成的 ARM64 麒麟系统
REM 说明:
REM 1. 不再挂载 ISO,直接从虚拟硬盘启动
REM 2. 保留 GTK 图形界面
REM 3. 保留 SSH 端口转发:宿主机 2222 -> 虚拟机 22

qemu-system-aarch64.exe ^
  -M virt,accel=tcg ^
  -cpu cortex-a72 ^
  -smp 4 ^
  -m 4096 ^
  -bios f:\vm\arm64\QEMU_EFI.fd ^
  -display gtk ^
  -device qemu-xhci ^
  -device usb-kbd ^
  -device usb-mouse ^
  -device virtio-gpu-pci ^
  -drive if=none,file=f:\vm\arm64\disk\phytium-arm64.qcow2,format=qcow2,id=hd0 ^
  -device virtio-blk-pci,drive=hd0 ^
  -device virtio-net-pci,netdev=net0 ^
  -netdev user,id=net0,hostfwd=tcp::2222-:22

pause

启动的时候还是提示Display output is not active,等着就行了。

然后有个小坑,我这里安装的是银河麒麟系统,选择分区的时候创建了数据分区,结果默认的情况下系统挂载的/data不让执行程序,需要解决一下执行程序报错没有权限问题,在/etc/fstab里面默认对/data分区的挂载配置是:

复制代码
UUID=2972908b-e84e-43b7-9587-65131e1bf899 /data           ext4    rw,user,x-gvfs-show,nosuid,nofail 0       2

问题就出在这个user上面,写了user就默认隐含带着noexec,不让你执行可执行程序,需要改成下面这样才行:

复制代码
UUID=2972908b-e84e-43b7-9587-65131e1bf899 /data ext4 rw,exec,nosuid,nofail 0 2
相关推荐
kebidaixu26 分钟前
BCU 平台 RS485 驱动适配:从 THVD1406 到 ISO3082
linux
杨浦老苏1 小时前
家庭实验室监控仪表盘HomeLab-Monitor
运维·docker·监控·群晖
回忆2012初秋1 小时前
【Nginx】原理、配置与运维实战(2)
运维·nginx·策略模式
Urbano2 小时前
工装外套全制作流程、工序痛点及自动化设备升级方案
运维·自动化
映翰通朱工2 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
洪晓露3 小时前
将 rke2 集群证书延长至 10 年
运维·服务器·数据库
谢平康3 小时前
解决用 rm 报bash: /usr/bin/rm: Argument list too long错
linux·运维·运维开发
IP老炮不瞎唠3 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
GIS数据转换器3 小时前
城市排水生命线安全运行监测平台深度解析
java·运维·人工智能·python·安全·数据挖掘·无人机
Tokai_Teio_14 小时前
第四届黄河流域 misc
运维·服务器