我也试试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
相关推荐
上学的小垃圾2 小时前
基于docker安装MySQL(openEuler系统)
linux·mysql·docker·容器
一直C4 小时前
Linux网络编程|HTTP协议详解(报文、请求方法、状态码)
linux·http·wireshark·vim·visual studio
爱喝水的鱼丶4 小时前
SAP-ABAP:ABAP 用户出口开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流·出口
博、、5 小时前
从零构建智慧场馆解决方案:架构设计与开发实践
大数据·运维
敢敢是只喵i5 小时前
给现有业务系统接 AI 助手,入口怎么选?网页聊天、自动化任务与本地 Agent 对比
运维·人工智能·ai·开源·自动化·安全架构
章老师说6 小时前
BFE v1.8.6 正式发布:AI 网关计费精细化、Claude 协议与会话亲和性升级
运维·人工智能·ai·负载均衡·ai-native
Brilliantwxx6 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
欧米欧7 小时前
Linux基础指令上
linux·运维·服务器
爱喝水的鱼丶7 小时前
SAP-ABAP:BAdI 上下文数据获取与交互:标准数据读取与修改逻辑实现
运维·性能优化·sap·abap·增强·经验交流·badi
ARM|X86+FPGA工业主板厂家8 小时前
基于嵌入式 GPU 的智能服务机器人
linux·运维·arm开发·fpga开发·机器人