ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Win11下用QEMU模拟龙芯3A5000:LoongArch虚拟机搭建与避坑指南

Win11下用QEMU模拟龙芯3A5000:LoongArch虚拟机搭建与避坑指南 在 x86_64 的 Win11 笔记本上跑一套模拟龙芯 3A5000 的虚拟机第一批听到的人多半会觉得是“没事找事”。但如果你要验证软件在 LoongArch 下的兼容性、给 CI 加一个龙芯构建节点、或者在等实体开发板到货之前先把内核编译流程跑通QEMU 这套组合就是最现实、最便宜、也最容易复现的方案。这篇文章我会从零开始把 Win11 下用 QEMU 配置龙芯 3A5000 虚拟环境的完整过程拆开讲包括资源包怎么组织、启动命令每个参数什么意思、ArchLinux 装到 LoongArch 上要踩哪些坑以及装完虚拟机之后怎么让它真正能干活。内容适合软件移植验证、嵌入式开发、系统集成测试的工程师也适合对龙芯 LoongArch 生态好奇、手里又没有实体机的折腾型玩家。先说结论这套环境能做的事情比你想象的多但也别对它有不切实际的期待。跨架构模拟意味着它永远不可能像 KVM 那样跑出接近原生的性能不过用来装系统、跑 pacman、编译软件包、做脚本级验证完全是够用的。下面的内容我都按“能直接复制命令跑起来”的标准写资源包需要的组件也会说明来源和版本匹配关系。1. 为什么要在 Win11 上模拟龙芯 3A5000动机、适用场景与方案收敛1.1 跨架构模拟的本质不是虚拟化是二进制翻译先把概念掰清楚。你平时在 Win11 上装 VMware、VirtualBox、Hyper-V跑的是 x86_64 客户机宿主机和客户机指令集一致CPU 的 VMX/SVM 扩展可以直接接管这叫硬件辅助虚拟化速度损耗很小。但龙芯 3A5000 用的是 LoongArch64 指令集和 x86 完全不同Windows 上的 WHPX、Hyper-V 这些加速器对跨架构一点忙都帮不上。QEMU 在这种情况下走的是 TCGTiny Code Generator动态二进制翻译把客户机的 LoongArch 指令翻译成 x86 指令再执行。这也是 QEMU 能模拟几十种架构的原因。既然是指令翻译性能注定有损耗而且多核扩展性不如同架构虚拟化。所以后面的操作里我会特别强调“先跑通功能再谈性能”不要一上来就想着给虚拟机分 16 核TCG 模式下 vCPU 越多不一定越快这个后面有专门一节讲。1.2 什么场景真的需要这套虚拟环境我整理了一下实际有用的场景你可以对照自己的需求判断值不值得折腾软件兼容性验证公司或项目里有面向龙芯平台交付的二进制包但没有实体机用这个虚拟环境跑一遍安装、启动、冒烟测试能提前拦住架构相关的低级错误。交叉编译与打包在 ArchLinux 虚拟环境里用 makepkg 打包 LoongArch64 的软件或者跑需要真实 LoongArch 用户态的脚本。内核与固件调试QEMU 的 virt 机器配合 LoongArch 内核可以调试启动流程、驱动初始化、UEFI 固件行为这是实体机很难做到的。学习 LoongArch 汇编与 sde 生态不需要买开发板就能写 LoongArch64 汇编、跑动态链接程序。反过来如果只是想要一个日常办公 Linux 桌面或者跑性能敏感的计算任务那我不建议用这套环境x86 上随便开个虚拟机都比它快一个数量级。1.3 为什么最终收敛到“Win11 QEMU ArchLinux”这个组合我列过几个备选方案各有各的问题方案优点缺点实体龙芯 3A5000 主机/开发板性能真实、生态最完整价格高、到货慢、不方便随身携带龙芯云主机/ARM 云主机免本地维护LoongArch 实例少、按小时收费、网络受限WSL2和 Windows 集成好只支持 x86_64/ARM64 客户机不能跨到 LoongArchDocker QEMU user适合跑单程序没法模拟整机、没法测试内核和 UEFIQEMU 全系统模拟免费、跨架构、可脚本化、可快照性能低、需要自己折腾配置在“Win11 本地 LoongArch 免费 可复现”这个约束下QEMU 几乎是唯一答案。至于发行版为什么选 ArchLinux原因有几个LoongArch64 的移植版仓库更新快软件版本新pacman 的打包体系在无 root 环境、chroot 构建、回滚方面都很顺手Arch 的文档和 AUR 生态能直接复用。你如果熟悉 Debian 系的 loong64 移植也可以类比但下面的命令和路径就不通用了所以本文锁定 ArchLinux。2. 资源包三件套QEMU、EDK2 固件、ArchLinux 移植版的版本匹配2.1 资源包到底该装些什么标题里说“附资源包”实际打包的时候不需要塞一堆花里胡哨的东西核心就是“能一键启动到安装界面”的最小组件。我建议按下面的目录结构准备loongarch64-vm/ ├── qemu/ │ ├── qemu-system-loongarch64.exe │ └── ...依赖的 DLL绿色版直接解压 ├── firmware/ │ └── QEMU_EFI.fd # LoongArch EDK2 UEFI 固件 ├── iso/ │ └── archlinux-loongarch64.iso # 或 bootstrap vmlinuz/initramfs ├── disk/ │ └── archlinux.qcow2 # 初始为空白系统盘 ├── start.bat # Windows 一键启动脚本 ├── start_vnc.bat # 无窗口 VNC 启动脚本 └── README.txt # 版本信息、校验和、常见问题这里最关键的不是某个文件本身而是版本匹配。QEMU 对 LoongArch 的支持是从 7.1 开始引入的8.x 以后才逐步完善设备模型和 CPU 型号如果你顺手拿了 7.0 甚至更老的版本后面很多事情都做不了。EDK2 固件每个月都有新构建老固件碰到新 QEMU或者新固件碰到老 QEMU都会出现“开机黑屏但 CPU 占用很高”这种让人抓狂的情况。所以资源包里必须固定版本且写进 README不要随手从网上下个“最新版”就完事。2.2 QEMU 的 Windows 构建版本怎么选Windows 下的 QEMU 没有官方安装程序大家用得比较广的是 QEMU for Windows 项目qemu.weilnetz.de提供 exe 安装包和 zip 绿色版。资源包里我建议用 zip 绿色版原因很实际解压即用、不写注册表、方便放到 CI 或拷给同事想换版本就换目录。安装包和绿色版在功能上差别不大都包含 qemu-system-loongarch64.exe。装好后第一步先在命令行确认版本qemu\qemu-system-loongarch64.exe --version如果输出里能看到QEMU emulator version 8.2.x或9.0.x这类字样就说明可执行文件没问题。我用的资源包固定的是 9.0 系列配的固件和 ArchLinux LoongArch64 镜像也是按这个版本来验证的。有人可能会问移动端/安卓端的 QEMU 能不能干这事建议别碰。手机上的 QEMU 大多是精简构建没有完整的 loongarch64 系统模拟支持也不方便挂载 UEFI 固件。老老实实回到 Windows 桌面版路径最短。2.3 ArchLinux 的 LoongArch64 移植版和镜像源ArchLinux 官方主线目前不直接分发 loong64 的 ISO平时看到的是社区维护的 LoongArch64 移植版。它的安装流程和官方 Arch 几乎一样但 pacman 仓库地址不一样里面有些包名和依赖也做过调整。资源包里我会放两类启动介质ISO 完整版可以直接用-cdrom启动进入 live 环境适合交互式安装。bootstrap 直启内核一个 rootfs tar 包配合 vmlinuz 和 initramfs用 QEMU 的-kernel参数直接引导适合无人值守脚本安装也适合在 UEFI 固件出问题时绕开固件。不管用哪种装完系统后 pacman 的镜像源要配成移植版仓库。常见的形式是在/etc/pacman.d/mirrorlist里加Server https://mirrors.loongnix.cn/archlinux/$repo/os/loongarch64不同镜像站路径可能略有差异资源包 README 里会写清楚我验证过的源。这里提醒一句安装时如果发现 pacman 报 404 或签名错误八成是源没配对不是网络问题。2.4 绿色版 QEMU 在 Win11 上的两个小问题第一路径问题。QEMU 跑起来需要加载固件、磁盘镜像、DLL目录里不要出现中文和空格最好整个资源包放在D:\loongarch64-vm\这种纯英文路径下。第二Windows Defender 偶尔会误报 QEMU 的 exe尤其是从网盘下载的 zip。如果启动脚本没反应先去安全中心看隔离记录把整个资源包目录加白名单。这不是 QEMU 有问题是未见过的命令行程序容易被盯上。3. 点亮虚拟机启动命令逐参数拆解与显示后端的选择3.1 最小可启动脚本 start.bat先把完整脚本放出来后面再逐个解释。echo off set QEMU_DIRqemu set FW_DIRfirmware set DISK_DIRdisk %QEMU_DIR%\qemu-system-loongarch64.exe ^ -machine virt ^ -cpu la464 ^ -smp 4 ^ -m 4096 ^ -bios %FW_DIR%\QEMU_EFI.fd ^ -drive file%DISK_DIR%\archlinux.qcow2,formatqcow2,ifvirtio ^ -cdrom iso\archlinux-loongarch64.iso ^ -boot orderd ^ -netdev user,idn0,hostfwdtcp::2222-:22 ^ -device virtio-net-pci,netdevn0 ^ -device virtio-gpu-pci ^ -display sdl ^ -accel tcg,threadmulti这套命令我从 QEMU 8.x 一路测到 9.0LoongArch 的 virt 机器都能稳定跑。逐项说明-machine virtLoongArch 下 QEMU 提供的通用虚拟平台可以理解为一块“没有具体主板型号”的开发板所有外设都是虚拟设备。-cpu la464龙芯 3A5000 的处理器核就是 LA464 微架构这个参数让 QEMU 模拟对应指令集和 CPU 特性。如果你的 QEMU 版本比较老不认识 la464可以先用-cpu max跑通再换回 la464。-smp 4 -m 40964 个虚拟 CPU、4GB 内存。TCG 模式不建议超过这个值太多。-bios firmware\QEMU_EFI.fd加载 LoongArch 的 UEFI 固件也就是 EDK2 构建产物。这步是跑 UEFI 启动流程的关键不是可选项。-drive file...qcow2,formatqcow2,ifvirtio系统盘用 virtio 块设备。如果没这行QEMU 也能起来但安装完系统没有落盘的地方。-cdrom iso\archlinux-loongarch64.iso -boot orderd挂载安装镜像并从光驱启动。装完系统之后把-boot orderd改成-boot orderc或者直接去掉。-netdev user,idn0,hostfwdtcp::2222-:22用户态 NAT 网络虚拟机可以访问外网同时宿主的 2222 端口会转发到虚拟机的 22 端口后面 SSH 用。-device virtio-net-pci,netdevn0把上面定义的 netdev 挂到 virtio 网卡上。-device virtio-gpu-pci显示设备。LoongArch 的 virt 机器里 virtio-gpu 是常用显示器。-display sdl用 SDL 窗口显示。如果 Windows 缺少 SDL 运行库导致报错换成-display gtk试再不行用 VNC。-accel tcg,threadmulti显式启用 TCG 多线程。QEMU 对跨架构模拟只有 TCG 一种加速路径threadmulti让多个 vCPU 分布在多个宿主线程上比单线程模式快一些。3.2 图形输出不可用时的三套备选方案Windows 下 QEMU 的图形后端偶尔会抽风报缺少 DLL、窗口黑屏、SDL 初始化失败这些我都遇到过。别慌按顺序试第一套换 GTK-display gtk第二套VNC 远程桌面。不需要看图窗口用 VNC Viewer 连也行-display vnc:1然后从宿主机连接127.0.0.1:5901。VNC 的好处是启动参数和图形库无关就算 SDL/GTK 全废也能看到屏幕。第三套完全无头走串口控制台。LoongArch 的 UEFI 固件和内核默认都会往串口输出日志用这个能看到比图形界面更原始的启动过程-nographic ^ -serial mon:stdio在-nographic模式下QEMU 会把串口和 QEMU monitor 重定向到当前控制台。如果你发现图形黑屏第一时间用这个参数看串口日志能直接定位是固件问题还是内核问题。Windows 的控制台对stdio交互不算友好但只是看日志完全没问题。3.3 正常启动时你应该看到什么第一次启动时钟走到 EDK2 初始化阶段串口或窗口里会出现类似下面的输出UEFI 固件版本信息、内存探测结果、找到 virtio 块设备、然后跳转到 GRUB 或 UEFI Shell。如果你用的是 ArchLinux ISO最终会看到 GRUB 菜单选择“Boot Arch Linux”进入 live 环境。我见过不少新手在这个阶段就慌了屏幕黑了几秒钟以为死机其实只是 GRUB 在等超时。给它一分钟时间同时看硬盘灯和 CPU 占用。如果 QEMU 进程 CPU 占用在 50% 以上说明翻译引擎在干活大概率只是显示没刷出来如果 CPU 占用近乎为 0那才是真的卡死了。4. 安装 ArchLinuxLoongArch64分区、pacstrap、GRUB 的全过程4.1 分区方案的两种选择进入 live 环境之后先确认能联网ping -c 3 archlinux.orgQEMU 的 user 网络默认 DHCPlive 环境一般会自动拿到 10.0.2.15 这类地址不需要手动配网络。如果 ping 不通多半是启动命令里-netdev那一段没写全回上一节检查。分区方案我推荐最经典的 GPT EFI 分区 根分区。在虚拟机上不需要 swap 分区内存不够就回宿主加内存别在 qcow2 里再划 swap 浪费空间。fdisk /dev/vda输入 g 创建 GPT 分区表 输入 n 创建分区 1大小 512M类型 EFI System 输入 n 创建分区 2剩余空间全部给根分区 输入 w 写入并退出然后格式化并挂载mkfs.fat -F 32 /dev/vda1 mkfs.ext4 /dev/vda2 mount /dev/vda2 /mnt mkdir -p /mnt/boot mount /dev/vda1 /mnt/boot如果你不想装 GRUB后面完全用 QEMU 的-kernel直启那也可以不分 EFI 分区一个根分区就够。但既然标题是“玩转”我建议走完整 UEFI GRUB 路线这样生成的虚拟磁盘更像一台真实机器拿到 Linux 主机上用同样的 QEMU 命令也能启动。4.2 pacstrap 安装基础系统挂好分区后用 pacstrap 装基础包。注意这里的baselinux都是移植版仓库里的 LoongArch64 包pacstrap -K /mnt base linux linux-firmware grub efibootmgr networkmanager openssh sudo vim-K参数会在目标系统初始化 pacman 密钥环。LoongArch 移植版的 keyring 和官方略有差别如果这里报签名错误先确认 pacman 源是否指向移植版仓库再看是否需要手动安装移植版提供的 keyring 包。生成 fstabgenfstab -U /mnt /mnt/etc/fstab然后 chroot 进新系统arch-chroot /mnt到这里后续命令就都在新系统里执行了。设置时区、locale、主机名ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc sed -i s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/ /etc/locale.gen locale-gen echo loongarch-vm /etc/hostname设置 root 密码passwd启用网络和 SSHsystemctl enable NetworkManager systemctl enable sshd4.3 GRUB 安装target 必须写对LoongArch 的 GRUB 不是 x86_64-efi也不是 arm64-efi而是独立的loongarch64-efitarget。这一步最容易写错网上很多教程直接抄 x86 的grub-install结果在 LoongArch 虚拟机上就是不行。正确的命令grub-install --targetloongarch64-efi --efi-directory/boot --bootloader-idGRUB grub-mkconfig -o /boot/grub/grub.cfg执行完检查一下/boot/EFI/GRUB下有没有grubloongarch64.efi这个文件。没有的话说明 target 不对或者 grub 包里没包含 loongarch64 模块。退出 chroot重启前记得改启动参数exit umount -R /mnt宿主机上关闭 QEMU把 start.bat 里的-boot orderd改成-boot orderc再启动。看到 GRUB 菜单、然后跳转到 ArchLinux 登录提示符安装就算完成了。4.4 bootstrap 方式的备用流程如果资源包里没有 ISO或者 UEFI 固件始终引导不成功可以用内核直启的方式进 live 环境再安装在启动参数里不写-bios改写成-kernel boot\vmlinuz-linux ^ -initrd boot\initramfs-linux.img ^ -append consolettyS0 rootlive:http://127.0.0.1:8000/rootfs.sfs这条命令只作为备用思路具体内核参数取决于移植版的 boot 文件定义参考资源包 README。只要内核能起来后面的分区、pacstrap 流程就和 ISO 安装完全一样。5. 让它真正可用SSH、共享目录、快照和 TCG 性能调优5.1 hostfwd 端口转发从 Win11 宿主 SSH 进虚拟机安装完系统之后图形界面不是必要的我更推荐直接 SSH 进去操作这样复制命令、传文件、跑脚本都方便得多。这依赖启动命令里的-netdev user,idn0,hostfwdtcp::2222-:22虚机里先确认 sshd 在跑systemctl start sshd然后在 Win11 的终端里ssh -p 2222 root127.0.0.1输入安装时设置的 root 密码就能进去。为什么要用 2222因为 Windows 上 22 端口经常被其他 SSH 服务占用换高位端口最省心。如果你还想要多个虚机可以依次用 2223、2224。另外-netdev user的 NAT 网络下虚机访问外网用的是宿主网络DNS 由 QEMU 内置的虚拟 DNS 提供。虚机里如果解析不了主机名手动在/etc/resolv.conf写nameserver 10.0.2.3这是 QEMU user 网络的约定地址。5.2 共享目录9p 和 SFTP 的取舍需要和宿主交换文件时有两条路。第一条是 QEMU 自带的 9p virtfs。在启动命令里加-virtfs local,pathD:\share,mount_taghostshare,security_modelnone,idshare0虚机里挂载mount -t 9p -o transvirtio,version9p2000.L hostshare /mnt/share注意 Windows 的路径如果含空格或引号在 bat 里要用引号包好。9p 的security_modelnone表示文件权限全部交给虚机侧控制简单粗暴但够用。不过 Windows 上有些 QEMU 构建没有编译 9p如果 mount 报 “filesystem type 9p not configured”就回到第二条路。第二条是 SFTP/SCP不依赖 QEMU 特性只依赖上一步的 SSH 转发scp -P 2222 somefile root127.0.0.1:/root/或者用 rsync、python http.server 也行。我实际用下来日常传小文件 SCP 最稳要双向同步大量代码再用 9p。5.3 快照与克隆装好干净系统后第一件事装完系统、配好源、装好常用软件之后立刻做一次快照。这是所有虚拟化环境里的铁律尤其是跨架构模拟这么费时间的场景没有快照等于裸奔。qcow2 内建快照操作qemu-img snapshot -c base-clean disk\archlinux.qcow2 qemu-img snapshot -l disk\archlinux.qcow2恢复快照qemu-img snapshot -a base-clean disk\archlinux.qcow2注意快照是打在 qcow2 镜像内部的恢复时只要 QEMU 没有在写这个磁盘文件就行。做实验之前用快照做完实验一键还原比重新安装省几个小时。如果要保留多个实验环境更灵活的是 overlay 镜像链但我建议新手先用snapshot命令等理解了 qcow2 的 copy-on-write 机制再玩高级功能。5.4 TCG 性能到底能到什么程度怎么调必须坦诚TCG 的性能和硬件虚拟化差距很大。我实测在 8 核 i7 的 Win11 笔记本上QEMU 模拟龙芯 3A5000 跑pacman -Syu下载解压速度大概相当于原生机器的五分之一到十分之一编译一个小型 C 项目时间大约拉长 5 到 15 倍。这受宿主 CPU 单核性能影响很大多核 CPU 帮助有限因为 TCG 的瓶颈主要在翻译质量、内存模拟和同步开销上。能做的优化有这么几项-accel tcg,threadmulti多线程翻译必加。-cpu max如果不需要精确模拟 3A5000 的特定行为用max可以让内核启用更多指令集特性某些计算会快一点。磁盘缓存-drive file...qcow2,formatqcow2,cachewriteback。降低磁盘模拟开销但要配合快照使用因为异常断电可能丢数据。适度分配资源4 vCPU / 4GB 是我推荐的上限超过这个值 TCG 的同步开销会反噬。内存也不是越大越好LoongArch 的移植版内核目前对大内存的优化也在完善中。关闭宿主上的高频杀毒实时扫描把资源包目录加入排除列表否则每次虚拟磁盘读写都会被扫一遍。性能预期摆正了这套环境用起来就不会失望。6. 最容易翻车的 5 个问题与完整排查链路6.1 报错 “invalid accelerator whpx” 或 “No accelerator found”现象双击 start.bat 后 QEMU 弹出错误提示找不到 whpx 或 accelerator。原因网上大量 QEMU 教程都是 x86_64 客户机默认带-accel whpx或-accel hax。这些加速器只支持同架构x86 → x86虚拟化而 LoongArch 客户机只能走 TCG。照抄参数必挂。排查链看启动脚本里有没有-accel whpx有就删掉改成-accel tcg,threadmulti。如果脚本没写-accel但仍然报错可能是 QEMU 环境变量或全局配置干扰检查命令行是否真的用了qemu-system-loongarch64.exe而不是 x86 的qemu-system-x86_64.exe。最后用最简命令验证qemu-system-loongarch64.exe -machine virt -cpu max -bios firmware\QEMU_EFI.fd -nographic能出 EDK2 日志说明基本环境没问题。6.2 黑屏但 QEMU 进程 CPU 占用很高这是跨架构模拟最常见的翻车现场。我可以负责任地说90% 不是显卡问题而是固件和 QEMU 版本不匹配。排查链路不要关窗口先看任务管理器里qemu-system-loongarch64.exe的 CPU 占用。占用高说明 CPU 在翻译执行代码内核可能已经跑起来了。加上-nographic -serial mon:stdio看串口输出。如果串口能看到 UEFI 或内核日志说明显示后端的问题换-display sdl、-display gtk、-display vnc:1三选一。如果串口也没有任何输出把-bios固件换成资源包 README 里配套的版本或者临时改用-kernel直启内核来确认 CPU 模型和内存配置没问题。还不行把-cpu la464改成-cpu max。个别旧固件对特定 CPU 模型支持不全max能避开。一句话总结黑屏先看串口再看 CPU 占用最后怀疑固件别一开始就折腾显卡参数。6.3 UEFI 引导 ISO 失败直接进 UEFI Shell现象启动后没进 GRUB停在 UEFI Shell 界面或者提示找不到启动设备。原因ISO 的引导方式与固件的引导逻辑不一致或者是 ISO 文件不完整、校验和不对。也可能是 QEMU 的-boot orderd没生效光驱没被优先识别。排查链在宿主机上核对 ISO 的 SHA256 和资源包 README 是否一致。LoongArch 移植版镜像不像官方 Arch 那样有庞大的 CDN很多是社区服务器分发下载一半静默损坏的情况不少。确认启动参数。-cdrom指定 ISO 后必须配合-boot orderd或者在 UEFI Shell 里手动选择光驱。UEFI Shell 里执行exit进入 Boot Manager看有没有Arch Linux或UEFI QEMU DVD-ROM这类启动项。如果 ISO 一直引导不了直接改用资源包里的 vmlinuz/initramfs 用-kernel启动安装环境。安装完系统后GRUB 是装到虚拟硬盘的不依赖 ISO 引导所以这步只是“能进去”后面不影响。6.4 pacstrap 阶段 PGP 签名失败或仓库 404现象安装时pacman -Sy正常但pacstrap拉包时报 “unknown trust” 或 “failed to retrieve some files”。原因有两类。第一类是密钥环问题LoongArch 移植版有自己的 keyringlive 环境里虽然用pacstrap -K初始化了但有些老镜像的 keyring 包版本太旧签名体系对不上。第二类是镜像源配置问题移植版的仓库路径和官方架构不同常见的镜像路径是.../archlinux/$repo/os/loongarch64如果配成了x86_64就是 404。排查链先看错误信息里的 URL确认是签名失败还是下载失败。下载失败就检查 mirrorlist换成资源包 README 里验证过的地址。签名失败就在 chroot 前执行pacman-key --init pacman-key --populate archlinux pacman -Sy archlinux-keyringpopulate archlinux是从当前 keyring 包导入默认信任密钥LoongArch 移植版通常沿用这套流程。如果还报错查一下移植版是否额外提供 keyring 包必要时手动安装再populate。6.5 Windows 下脚本闪退、路径错乱、杀毒误报现象start.bat双击后屏幕一闪就没了什么都看不到或者 QEMU 找不到固件、找不到镜像。Windows 下的批处理有两大天坑编码和路径。排查链不要在记事本里编辑 start.bat 后保存成 UTF-8尤其当脚本里含中文注释时。建议用 VS Code 存成 UTF-8 with BOM或者干脆脚本里不写中文全英文注释。先把整包放到纯英文路径比如C:\vm\、D:\loongarch64-vm\。路径里有中文或空格会出现各种反直觉问题。在 cmd 里手动执行不要双击cd /d D:\loongarch64-vm qemu\qemu-system-loongarch64.exe -machine virt ...这样错误信息会留在窗口里而不是闪退。看到具体报错再定位。 4. Windows Defender 误报时去“保护历史记录”里找被隔离的文件加白名单即可。不要因此关掉整个 Defender。如果你确实需要 Windows 图形界面操作可以再写一个 PowerShell 启动脚本参数一致编码问题会少一些。资源包里两个版本都会带。6.6 折腾很久还不行回到这条“最短路径”如果你已经折腾了几个小时脑子一团浆糊我建议放弃一次性全部跑通的幻想按下面这条最短路径重新验证每一层先确认qemu-system-loongarch64.exe --version能跑。再确认-machine virt -cpu max -bios QEMU_EFI.fd -nographic能出 EDK2 日志。确认 UEFI 能跑之后加-kernel直启内核能进 initramfs 说明 CPU 和内存没问题。最后再把磁盘、ISO、图形、网络一个个加回来。每加一个参数就启动一次不要一次堆上全部参数再回头找哪行错了。这个思路我用在实体机调试、QEMU、交叉编译环境上都有效。最后再分享一点个人体会跨架构模拟这事最大的敌人不是性能而是“版本组合的隐性兼容问题”。QEMU、EDK2 固件、ArchLinux 移植版镜像这三个组件的更新节奏完全不一样单独看都是好东西凑在一起就可能谁都不理谁。所以我强烈建议你把验证过的那套组合固定下来做成自己的资源包写清楚版本号和校验和。以后再遇到类似需求直接复制整套环境比每次重新摸索要快得多。这大概也是“附资源包”这类教程存在的意义——真正省时间的不是命令本身而是别人已经替你踩过的那一圈坑。
返回列表