Windows上QEMU模拟ARM64安装银河麒麟V10信创适配指南
发布时间:2026/9/26 12:21:11来源:尧图网络
做信创适配的人最头疼的一件事就是手里只有一台Windows笔记本却要验证银河麒麟V10跑在鲲鹏ARM平台上到底行不行。买一台鲲鹏服务器当然最稳可成本、机房、审批周期摆在那里临时测试根本等不起云上ARM实例方便但数据边界、费用和网络环境又未必符合要求。于是QEMU模拟ARM64整机就成了一种非常实用的替代方案用纯软件方式在Windows里虚拟出一台支持UEFI引导、virtio设备齐全的ARM主机把银河麒麟V10装进去用于信创软件适配、架构验证和演示。这套玩法特别适合三类人一是信创软件厂商的测试工程师想在硬件到位前提前做架构适配和编译验证二是企业IT运维想低成本熟悉麒麟系统的部署、配置和运维命令三是个人开发者想在x86电脑上体验ARM64 Linux生态。下面我按自己实际操作过的流程把Windows下从零搭建这套环境的完整步骤、关键参数和踩过的坑全部过一遍尽量做到照着敲就能跑起来。1. 为什么要在Windows上搭ARM的信创测试环境1.1 没有鲲鹏硬件怎么贴近真实ARM环境很多人第一反应是“既然项目验收要看鲲鹏环境我直接装个ARM虚拟机不就行了吗”。但这里要分清楚普通虚拟机软件比如VirtualBox默认创建的是x86架构虚拟机跑不了ARM64系统镜像就算修改配置也撑不住完整的ARM设备模型。QEMU不一样它能模拟完整的ARM64硬件平台包含CPU、内存控制器、中断控制器、UEFI固件、virtio总线等等Guest操作系统认为自己是运行在一台真实的AArch64服务器上。鲲鹏920处理器基于ARMv8.2-A架构QEMU的virt机器模型配合cortex-a72或max CPU模型能把大部分ARMv8的指令特性暴露给系统。也就是说你在里面编译出来的aarch64二进制程序指令集层面和真实鲲鹏环境是兼容的。对于信创软件适配来说最核心的“跑不跑得起来”、“能不能编译通过”、“依赖库缺不缺”这些问题这套模拟环境完全能给出有效答案。1.2 QEMU方案 vs 云主机/真机我对比过实际操作中的三种选择各有明显优缺点。真机最靠谱性能和外设都真实但一台测试用的鲲鹏服务器至少几万块且需要机房部署和电源管理个人或者小团队很难为“临时验证”这一点投入ARM云主机按小时付费弹性高但要考虑网络策略、数据安全、账号权限有些涉及内部系统的测试根本不方便搬上去QEMU本地模拟成本为零环境完全可控还能随时快照缺点是纯软件翻译性能比真机差不少。拿我自己测试的体验来说QEMU方案在单核性能上大致相当于真机的五分之一到十分之一多核编译任务能明显感觉到速度慢。但它的优势在于操作空间大可以随意创建快照、改内存、换CPU特性这些在真机上反而麻烦。表格对比一下方案硬件成本性能可控性适合场景鲲鹏真机很高真实一般验收、性能压测、外设测试ARM云主机按量付费较好受平台限制短期跑通、多人协作QEMU本地模拟零较弱完全自主适配验证、学习、演示1.3 方案能解决什么不能解决什么QEMU模拟环境能解决的是“软件层面”的问题操作系统能不能装、应用能不能跑、依赖库是否齐全、系统服务如何配置、网络与防火墙策略怎么设置。这些是信创适配中占比最高的日常工作。它不能解决的是“硬件层面”的问题比如SAS卡驱动、BMC管理、NPU算力、真实网络性能这些必须在真实鲲鹏服务器上验证模拟环境给不了。所以我的建议是把QEMU环境当作“前哨测试场”先在这里完成软件包的架构验证、安装脚本调试、部署手册编写等真机到位后再进行一轮确认性测试。这样的流程能节省大量排队等硬件的时间整个测试计划也更有弹性。2. 环境准备QEMU、UEFI固件和银河麒麟V10镜像2.1 安装Windows版QEMU并配置环境变量Windows下的QEMU我建议直接使用qemu.weilnetz.de发布的Windows原生安装包它持续跟进上游版本并且把常用的工具都编译好了。下载w64安装程序后一路Next安装默认目录是C:\Program Files\qemu。安装完成后最关键的步骤是把安装目录加入系统PATH否则后面每条命令都要写全路径非常痛苦。在“系统属性-环境变量-Path”中新增一行C:\Program Files\qemu保存后重新打开CMD或PowerShell执行qemu-system-aarch64 --version能看到版本信息就说明环境变量生效了。这一步强烈建议做因为后面创建磁盘、转换镜像、启动虚拟机都要用qemu系列命令。实际使用中我还会在某个工作目录下集中放置固件、镜像和脚本比如D:\arm-kylin避免文件散落各处。2.2 补上AArch64 UEFI固件很多第一次用QEMU跑ARM的人会卡在固件这一步。QEMU的aarch64机器默认不会自动提供UEFI必须手动指定一个QEMU_EFI.fd文件虚拟机才能进入正常的UEFI启动流程。Windows安装包里通常不带这个文件需要单独从edk2的ARM编译产物中获取。我通常是从Debian或ArchLinux的qemu-efi-aarch64软件包中提取体积不大也就几MB。把这个QEMU_EFI.fd放到工作目录中路径不要带中文以免产生奇怪问题。这里有个细节-bios QEMU_EFI.fd方式属于一次性加载UEFI的配置不会持久保存如果想保存UEFI设置需要用两块pflash闪存盘一块只读放固件一块可写放变量。对于只是装系统跑服务的场景直接用-bios就够了少折腾。但如果你遇到“重启后启动项乱了”这类问题可以考虑改用pflash方式。2.3 获取银河麒麟V10 ARM版ISO银河麒麟V10分桌面版和服务器版按照项目需要选择。DVD光盘镜像可以在麒麟软件官网申请试用版也可以走厂商渠道获取正式版。下载时务必看清架构标识选择aarch64版本常见文件名类似Kylin-Server-10-SP2-aarch64-Release-Build09-xxx.iso。这里特别提醒x86_64的ISO是装不进ARM虚拟机的镜像架构错了后面全是白忙。下载完成后可以用qemu-img info先查一下ISO的基本信息甚至直接使用支持qcow2的镜像格式。不过在安装阶段ISO光盘镜像直接另外用一个-cdrom参数挂给虚拟机即可不需要转换格式。如果手头只有IMG或RAW格式的ARM系统镜像也可以用qemu-img convert转换后用具体转换参数下面会说。2.4 创建并准备虚拟磁盘我习惯预先创建一个qcow2格式的虚拟磁盘而不是让安装器临时去创建。qcow2是QEMU的原生格式支持稀疏文件、快照和按需增长非常适合测试环境。在Windows CMD中进入工作目录执行qemu-img create -f qcow2 kylin-arm64.qcow2 60G60G是逻辑容量实际占用空间会随着系统使用慢慢增加初始可能只有几百MB。如果要调整容量后面可以用resize命令但扩容之后还要在Guest内部做分区扩展所以一开始规划好合适大小更省事。对大多数测试场景40到60G是常见的合理区间如果还要装数据库、容器镜像、编译缓存建议直接给到80G。如果你的镜像来源是RAW、VHDX等其他格式用qemu-img convert处理一下就行qemu-img convert -f raw -O qcow2 source.img kylin-arm64.qcow2。转换完成后建一个qemu-img info确认注意查看“disk size”和“cluster size”字段避免因为源文件损坏或截断导致虚拟磁盘不可用。3. 完整启动命令与安装银河麒麟V103.1 逐段解读启动命令在Windows下QEMU启动aarch64虚拟机需要写一段参数比较多的命令。先看完整版我再逐段解释qemu-system-aarch64.exe ^ -machine virt,acceltcg ^ -cpu cortex-a72 ^ -smp 4 ^ -m 4096 ^ -bios QEMU_EFI.fd ^ -drive filekylin-arm64.qcow2,ifnone,iddisk0,cachewriteback ^ -device virtio-blk-pci,drivedisk0 ^ -cdrom Kylin-Server-10-SP2-aarch64.iso ^ -netdev user,idnet0,hostfwdtcp::2222-:22 ^ -device virtio-net-pci,netdevnet0 ^ -device qemu-xhci,idxhci ^ -device usb-kbd ^ -device usb-tablet ^ -device virtio-gpu-pci ^ -display gtk,gloff-machine virt,acceltcg指定使用virt机型和纯软件模拟。Windows没有KVM所以这里只能用tcg加速如果写accelkvm会直接报错。-cpu cortex-a72是CPU模型cortex-a72是QEMU支持得比较好的64位ARM核兼容性好想要更完整的特性集可以使用-cpu max但在Windows宿主上我遇到过个别指令解析慢的情况常规测试优先a72。-smp 4给虚拟机分配4个vCPU-m 4096分配4GB内存按宿主配置调整。3.2 显示、鼠标键盘与UEFI变量的处理ARM的virt机器和普通x86模拟不太一样它没有标准的PS/2键盘鼠标接口也不会自动创建USB控制器。所以必须要手动添加一个USB控制器再挂上USB键盘和鼠标否则在图形安装界面里会尴尬地发现“动不了”。我用的参数是-device qemu-xhci,idxhci加-device usb-kbd和-device usb-tablet。usb-tablet比起usb-mouse的绝对定位方式更适合图形界面安装鼠标不会飞。显示方面-device virtio-gpu-pci配合-display gtk,gloff是比较稳妥的组合。GTK窗口在Windows下工作正常gloff会强制软件渲染避免一些显卡驱动和OpenGL兼容问题。如果你的Windows版本或者显卡驱动刚好和GTK的GL渲染冲突会出现窗口黑屏或画面撕裂这个时候把gl关掉多半能解决。安装完成后也可以把显示设备换成ramfb进一步降低开销但virtio-gpu在安装时更通用。如果你希望UEFI变量持久化可以把固件改成两块pflash设备挂载-drive ifpflash,formatraw,readonlyon,fileQEMU_EFI.fd ^ -drive ifpflash,formatraw,fileefi-vars.fd其中efi-vars.fd要预先用qemu-img create -f raw efi-vars.fd 64M创建。两块flash方案的好处是UEFI配置能保留比如修改启动顺序、保存固件设置等。不过日常用-bios完全可以我多数时候就用简单方式。3.3 网络设备的选型与端口转发网络是QEMU里最容易出问题的环节。默认的-netdev user是用户态网络栈虚拟机内部会通过DHCP拿到10.0.2.x网段的地址对外访问使用宿主机的TCP/IP栈做地址转换。这种模式开箱即用不需要装任何虚拟网卡驱动Guest能上网但不能从宿主机直接连入虚拟机。要解决“能从外面连进来”的问题靠hostfwd端口转发。-netdev user,idnet0,hostfwdtcp::2222-:22这段的意思是把宿主机的2222端口转发到虚拟机的22端口。安装完成后你在Windows命令行执行ssh -p 2222 user127.0.0.1就能进到虚拟机里不需要打开图形窗口操作。如果有多个服务要暴露比如MySQL的3306、Zabbix的80可以重复加hostfwd参数。注意宿主机端口不要跟本机已有服务冲突比如本机已经占了3306就换一个外网端口映射进去。Windows防火墙第一次会弹出拦截提示务必允许QEMU的入站请求否则转发不生效。3.4 系统安装过程中的现场记录准备工作做完后直接运行上面的启动命令QEMU窗口会弹出UEFI启动界面然后读取ISO进入银河麒麟V10的安装引导。我这里记录几个实际安装中遇到的要点第一安装引导界面选择“安装银河麒麟服务器操作系统”不要选“测试内存”或“救援模式”否则会绕远路。第二语言建议选简体中文但键盘布局保持默认的English(US)避免中文输入法在安装阶段干扰。第三磁盘分区直接选择“自动分区”系统会对整个qcow2磁盘规划好分区。如果你想手动分区至少需要一个/boot/efi的EFI系统分区和一个根分区同时记得把启动引导器装到sda上否则重启会找不到系统。第四设置root密码时千万要记住后面所有配置都要用。安装器复制文件的时间取决于宿主机的CPU性能和磁盘速度。在TCG模拟下这一步通常需要二十到四十分钟耐心等。安装完成后不要急着直接重启先把ISO从虚拟机中摘下也就是从启动命令中删掉-cdrom一行避免再次从光盘启动覆盖引导流程。接下来就能带着磁盘正常重启进入系统了。3.5 安装完成后的日常启动脚本为了方便日常使用我会把启动命令保存为一个.bat脚本放在工作目录里。脚本中通过%CD%动态获取当前路径避免每次修改绝对路径。内容大概是echo off cd /d %~dp0 qemu-system-aarch64.exe ^ -machine virt,acceltcg ^ -cpu cortex-a72 ^ -smp 4 ^ -m 4096 ^ -bios QEMU_EFI.fd ^ -drive filekylin-arm64.qcow2,ifnone,iddisk0,cachewriteback ^ -device virtio-blk-pci,drivedisk0 ^ -netdev user,idnet0,hostfwdtcp::2222-:22 ^ -device virtio-net-pci,netdevnet0 ^ -device qemu-xhci,idxhci ^ -device usb-kbd ^ -device usb-tablet ^ -device virtio-gpu-pci ^ -display gtk,gloff以后要开虚拟机双击bat文件就行。如果不想看到命令行窗口可以加上start /b但一般没必要。我习惯用一个bat对应一个虚拟机命名清晰一点比如start-kylin-v10-arm64.bat。这样就算多个测试环境并存也不会混淆。4. 测试环境的日常维护玩法4.1 SSH连接与文件传输虚拟机装好后最推荐的维护方式是SSH。因为图形窗口在模拟环境下响应不快大量敲命令时通过SSH工具要顺手得多。在Windows终端执行ssh -p 2222 root127.0.0.1第一次连接会提示确认host key输入密码后进入系统。这里有个细节银河麒麟服务器版默认不一定开放SSH如果连不上回到图形终端里执行systemctl status sshd看状态没装就dnf install -y openssh-server并启动。防火墙方面执行systemctl stop firewalld可以在测试初期省掉很多网络问题等环境稳定后再按需放行端口。文件传输同样走SSH通道用scp即可scp -P 2222 test-arm64.jar root127.0.0.1:/root/。反过来拉取日志也一样。小文件这么做最省事不需要配置任何共享服务。4.2 文件夹共享的几种方案Windows宿主和ARM虚拟机之间传文件scp虽然灵活但搞大目录或频繁同步就会很累。我试过几条路线分享一下实际感受。第一种Windows启用SMB共享然后在虚拟机内用mount -t cifs挂载。在Windows上把某个目录共享给Everyone然后在虚拟机里执行mount -t cifs //10.0.2.2/share /mnt/share -o usernamewinuser,passwordxxx注意10.0.2.2是QEMU用户态网络给虚拟机看到的宿主机网关地址并不一定需要知道Windows的真实局域网IP。这个方案在Linux宿主上甚至可以直接用QEMU内置的smb参数但Windows版QEMU因为不带smbd服务内置SMB功能多数情况下不可用手动SMB最稳。第二种用SSHFS。在Windows上可以用WinFsp加SSHFS-Win在宿主机侧把虚拟机的目录挂载成Windows盘符。这个方案适合“以虚拟机为中心”的工作流但多一层依赖初次配置有一点门槛。第三种直接共享ISO或压缩包。对大多数软件包测试场景scp一把梭反而最快。我自己的选择是日常传包用scp需要持续共享的目录用SMB。4.3 快照、克隆与磁盘扩容QEMU的qcow2格式自带快照能力这一点在测试环境里价值极高。比如要给客户演示一个复杂的部署过程先把干净系统做成快照每次演示前回滚一下比重新安装系统快得多。相关命令qemu-img snapshot -c clean kylin-arm64.qcow2 qemu-img snapshot -l kylin-arm64.qcow2 qemu-img snapshot -a clean kylin-arm64.qcow2分别对应创建快照、列出快照、回滚快照。注意在虚拟机运行时不要执行快照回滚否则磁盘可能会损坏。快照会占用额外空间创建时QEMU会给出提示。如果要做克隆环境最简单的方式是先把关机状态的qcow2复制一份然后用新文件启动。复制时需要关心实际磁盘占用直接用文件管理器复制大文件可能比较慢推荐qemu-img没有直接clone命令的情况下结合操作系统的高速复制工具。磁盘扩容也是一个常见需求。先在宿主侧扩大镜像qemu-img resize kylin-arm64.qcow2 100G然后进入虚拟机用growpart和resize2fs扩展分区和文件系统。不同版本的麒麟V10默认文件系统可能是ext4或xfsresize命令会有差异。xfs用xfs_growfs /而不是resize2fs。这个步骤建议在测试机上进行一次完整的记录因为真机上也会遇到类似问题。4.4 性能调优的一些心得TCG模式下性能是最大的痛点但有不少办法能让体验好一些。首先是多核分配-smp不要无脑给最大。QEMU在Windows宿主上使用多线程TCG并行执行Guest指令给4到8核通常能明显加快编译和安装速度但给太多会造成线程切换开销反而变慢。新版QEMU默认开启多线程TCG如果感觉性能不对可以显式写-accel tcg,threadmulti。其次是磁盘缓存参数我一般选cachewriteback比默认的writethrough快不少。再次是内存保证充足编译任务中如果动用了swap整个系统会卡到怀疑人生建议至少给到4G以上。另外Guest系统内部的优化也有效果。关闭不必要的桌面特效和开机自启动服务把日志输出级别降低这些对减少模拟开销都很有帮助。时钟漂移是TCG模式下的常见问题如果你发现date显示的时间越来越偏就配置NTP服务或者使用chrony定期同步。测试环境里对时间的准确性要求高的话比如跑定时任务这一步一定要处理。5. 常见报错和排查经验5.1 固件、黑屏与鼠标键盘失灵遇到最多的问题就是启动后黑屏。先确认是不是固件路径问题QEMU提示无法打开QEMU_EFI.fd那就是-bios参数路径错了或者文件不存在。如果窗口弹出来了但一直黑屏优先检查显示设备和GL渲染。把-display gtk,gloff改成-display sdl,gloff试试或者把-device virtio-gpu-pci临时换成-vga std很多显示异常都能解决。鼠标键盘失灵则是另一个高频场景。前面说过virt机器没有PS/2输入设备必须添加USB控制器和USB键盘鼠标。如果你在启动参数里看不到qemu-xhci、usb-kbd、usb-tablet那基本就是这个原因。补上参数后再启动鼠标应该能在图形界面中正常移动和点击。还有一种情况是GTK窗口已经聚焦但鼠标被限制在窗口内无法释放可以按CtrlAltG切换抓取状态。5.2 安装卡死、重启或找不到ISO安装过程中卡死首先怀疑内存不够。如果你给虚拟机只分配了2GB图形安装器很容易因为内存不足退出或卡住。建议安装阶段至少给4GB安装完成后再根据实际需求调低。其次是CPU核数过少导致安装进程超时给2核以上会比较稳。再就是ISO文件本身不完整下载过程中损坏会导致安装器中途报错下载完先比对官方校验值。重启后进不了系统通常会卡在UEFI Shell这大概率是因为启动顺序没有正确选择磁盘或者引导程序没有安装到目标磁盘。解决方法是回到安装器在分区步骤中确认选择了“将引导程序安装到主引导记录或EFI分区”并保证该分区在第一个磁盘上。如果使用-bios方式安装重启时最好把ISO从命令行中移除避免光盘启动优先级高于磁盘。5.3 网络与SSH连不上Guest内部能打开网页、但宿主机SSH连不上先检查hostfwd参数是否有冲突。比如你映射tcp::2222-:22但宿主机2222端口被其他程序占用QEMU启动时通常会报错或静默失败。用netstat -ano | findstr :2222查看端口状态。如果端口正常再检查Guest里的sshd是否运行、防火墙是否拦截。命令ss -tlnp | grep 22能快速确认22端口在监听。还有一种常见情况是虚拟机完全没有网络。在用户态网络下Guest内的网卡应该识别为virtio-net设备。如果ip addr看不到类似ens3或enp0s1的网卡说明设备驱动没有加载或者是内核缺少virtio模块重启虚拟机或者换用-device e1000e作为临时网卡也能绕过。但信创测试通常要求virtio环境建议优先查驱动。5.4 睡眠、关机异常与ACPI问题有些人在虚拟机里执行suspend或systemctl suspend会发现系统睡过去之后醒不来或者日志里出现“ACPI: Sleep state (S3) not supported”之类的信息。这是正常的QEMU的ACPI不完全支持所有电源状态。测试环境里遇到这种情况建议直接在Guest配置里禁用睡眠systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target这样不管是命令行还是图形界面操作都不会再进入睡眠避免数据丢失。关机方面如果遇到poweroff后QEMU进程不退出的情况可以检查启动命令是否忘记加-device virtio-blk-pci等设备导致ACPI电源按钮信号无法传递。virt机器对ACPI支持有限必要时直接关闭QEMU窗口或者kill进程即可但正常情况下ext4文件系统有日志断电式关闭并不会损坏数据。5.5 速度太慢、时间漂移怎么办如果说模拟环境还有什么让人抓狂的地方就是速度慢。一个最简单的验证方式是在虚拟机内执行glxgears或者编译一个小项目体感非常明显。遇到慢先逐项排查宿主CPU是否处于省电模式给虚拟机的核数是否足够磁盘是否放在机械硬盘上如果宿主是SSD虚拟机文件建议放在SSD分区。当前机器如果确实很慢可以适当降低Guest目标比如安装银河麒麟服务器版时选择“最小化安装”不带图形桌面安装后资源占用明显下降SSH操作也足够完成大部分测试。时间漂移的根源是TCG模式下CPU周期计数不准。解决办法是配置NTPdnf install -y chrony启动chronyd并设置开机自启。如果宿主本身难以访问外部NTP服务器可以在启动命令里加一个本地时间服务器参数但一般测试环境能连外网就能同步。遇到漂移严重时可以手动执行chronyc makestep强制校正。6. 让测试环境真正派上用场6.1 部署ARM版JDK 11信创项目中Java应用非常常见所以这台虚拟机第一步通常就是装ARM版JDK。去官方或镜像站下载jdk-11.0.x_linux-aarch64_bin.tar.gz注意要aarch64版本x86版的Java在这里无法运行。解压到/opt/jdk-11然后配置环境变量export JAVA_HOME/opt/jdk-11 export PATH$JAVA_HOME/bin:$PATH为了全局生效可以把这些加到/etc/profile.d/jdk.sh里。验证执行java -version出现“64-Bit Server VM”字样即正常。实测在这个模拟环境下Spring Boot应用的启动过程会比真机慢上不少但依赖加载、类编译和JIT行为都是真实的ARMv8路径对适配结论有参考价值。如果有C模块或者JNI本地库务必同时在模拟环境里做一次-Djava.library.path验证。6.2 安装MySQL 5.7.44的注意点很多项目还停留在MySQL 5.7而银河麒麟V10的软件源默认可能提供更高版本或根本没有5.7。常见做法是下载ARM64的MySQL二进制包或者使用源码编译。二进制包要选linux-glibc的aarch64版本解压后初始化数据目录groupadd mysql useradd -r -g mysql mysql tar xvf mysql-5.7.44-linux-glibc2.12-aarch64.tar.gz mv mysql-5.7.44-linux-glibc2.12-aarch64 /usr/local/mysql chown -R mysql:mysql /usr/local/mysql /usr/local/mysql/bin/mysqld --initialize-insecure --usermysql--initialize-insecure会生成无密码的root账号适合测试环境之后再用mysql_secure_installation设置密码。如果启动时报缺少libaio或libnuma用dnf install -y libaio numactl-libs补齐。在模拟环境下数据导入导出会较慢调整innodb_buffer_pool_size到256M以内能缓解部分压力。6.3 跑一个Zabbix 7.0看看整体可用性数据库就绪后可以拿Zabbix这种典型的服务端软件做一次整体验证检查Web服务、PHP-FPM、数据库之间的配合是否正常。Zabbix 7.0要求PHP版本较新银河麒麟V10的源不一定自带可能需要从第三方源安装PHP 8.1以上这一步正是模拟环境的用处所在提前踩一遍依赖安装和配置的坑后面在真机上有完整的手册可循。部署时不建议在模拟环境里做大规模监控压测毕竟性能有限但验证“安装流程是否顺畅、Web界面能否登录、Agent数据能否上报”这些功能性指标完全够用。我实际跑下来最关键的是把时区、数据库字符集和PHP的date.timezone三处配置保持一致否则Zabbix页面会反复提示时间不同步。完成这个部署后一套从系统到数据库再到业务软件的信创测试链路就通了。最后再分享一个我个人的习惯每次对这台环境做重大变更前一定先执行一次qemu-img snapshot -c创建快照。如果安装某个中间件把系统搞坏了直接回滚比重新装系统省下的时间是以小时计的。用QEMU在Windows上搭ARM测试环境本质上就是用时间换空间把昂贵的硬件等待换成可控的软件模拟在信创适配早期阶段这个性价比真的很高。
网站建设高端定制企业官网