news 2026/9/26 10:08:27

Windows下用QEMU模拟ARM64安装银河麒麟V10全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows下用QEMU模拟ARM64安装银河麒麟V10全流程

不扯虚的,先说一下我为什么折腾这个。当时接了一个信创适配的活儿,软件要跑在银河麒麟V10上,CPU是鲲鹏的ARM架构。可我手边没有鲲鹏服务器,连一台ARM开发板都临时借不到,只有一台Windows笔记本。最开始想过上云,结果ARM实例要么要申请、要么环境格格不入,来回折腾半天也可能没搞定。后来干脆用QEMU在Windows上直接模拟出一台ARM64机器,把银河麒麟V10镜像装进去,一个下午就把测试环境跑起来了。

这篇文章就把这套完整的搭建过程写出来,包括QEMU安装在Windows上的注意事项、AArch64 UEFI固件的准备、启动参数逐项解释、装完之后的网络配置和共享文件方案,以及我踩过的一堆坑。适合手里没有ARM真机、却要提前做信创兼容性验证的同学,也适合刚开始接触QEMU模拟ARM的朋友参考。

1. 为什么这件事非QEMU不可

很多人第一反应是:Windows上装个VMware或者VirtualBox不就能跑系统了吗?真不行,这是两个维度的问题。

1.1 常见方案各自卡在哪

VMware Workstation和VirtualBox在设计上主要支持与宿主机同架构的虚拟机。你在x86的Windows上装VMware,它默认只能创建x86/x64的虚拟机,选客户机操作系统类型的时候根本没有ARM64这个选项。VirtualBox稍微灵活一点,但它的ARM支持是指ARM主机上运行ARM虚拟机,不解决x86主机模拟ARM的问题。

Hyper-V也是一样的道理。Windows自带的Hyper-V底层走的是硬件虚拟化,在x86平台上它只能虚拟化出x86的机器,没法凭空变出一个ARM环境。WSL2则更不用说,它运行的是x64内核,看起来能装一些ARM的交叉工具链,但底子还是x86。

所以要在Windows上得到一个真正的ARM64 Linux环境,QEMU是目前最靠谱、也是社区里用得最多的选择。QEMU本质上是纯软件模拟器,它不依赖硬件虚拟化扩展,可以做到跨架构模拟:在x86上模拟ARM、在ARM上模拟x86、在x86上模拟RISC-V,等等。

可以把QEMU理解成一个"指令翻译官"。宿主机的CPU是x86架构,QEMU就把ARM机器指令逐条翻译成x86指令去执行。这个过程会有性能损耗,但换来的是体系结构级别的兼容,真实感比什么"模拟出来的壳"要强得多。

1.2 QEMU在信创测试中的角色定位

说清楚一点,QEMU模拟出来的ARM环境不是用来替代真机做性能测试的,它最擅长的是做"能不能装、能不能跑、日志对不对"这类功能验证。你拿到一个发行版、一个软件包,想知道它在ARM64上表现如何,用QEMU先跑一遍,成本最低,也比光看文档靠谱。

信创适配中很多工作其实是流程性的:软件安装是否顺利、系统服务能否起来、配置项是否生效、启动日志有没有报错。这些在QEMU虚拟出的ARM环境里基本都能覆盖到,而且可以随时截图、随时回滚。

1.3 Windows版QEMU的成熟度

很多人以为QEMU是Linux专属工具,实际上Windows版维护得相当好。官方提供Windows安装包,qemu-system-aarch64.exe就是专门跑ARM64系统模拟的。我当前测试用的QEMU版本是8.x,后续如果出了9.x也不影响,参数基本兼容。

2. 开工前准备:装QEMU、备固件、下载麒麟ISO

这一步先把四样东西准备好:QEMU本体、AArch64 UEFI固件、银河麒麟V10镜像、虚拟磁盘。缺一不可。

2.1 10分钟装好QEMU

Windows下装QEMU最省事的方式是用命令行包管理器。Windows 11自带的winget可以直接装:

winget install QEMU

如果你习惯用Chocolatey,也可以用:

choco install qemu -y

装完之后,把QEMU的安装目录加入PATH,通常是在C:\Program Files\qemu。然后打开一个终端窗口验证:

qemu-system-aarch64 --version

能输出版本信息就说明OK了。如果提示找不到命令,多半是PATH没配上,直接把QEMU安装目录手动加进系统环境变量就行。

安装目录下你会看到一堆qemu-system-*.exe,每个对应一种目标架构。我们用的是qemu-system-aarch64.exe,这个词要记牢,后面所有启动操作都靠它。

2.2 最容易忽略的AArch64 UEFI固件

这是整个流程里最容易卡壳的一步。QEMU默认是不带任何固件的,而ARM架构和x86不一样,它没有传统BIOS,上电后必须由UEFI固件接管,然后从UEFI引导流程去加载启动设备里的引导程序。

我一开始就没准备固件,直接拿着-M virt参数启动,结果虚拟机开机黑屏,什么反应都没有。后来才意识到,缺少了ARM版的UEFI固件文件QEMU_EFI.fd,系统根本走不到引导阶段。

这个固件从哪里来?Windows安装包里不带,需要单独获取。比较常见的途径是去Linux发行版的软件仓库里提取qemu-efi-aarch64软件包,包里面就有QEMU_EFI.fd。如果你手边有WSL2或者任意一台Linux机器,执行:

apt install qemu-efi-aarch64

然后在/usr/share/qemu-efi-aarch64/目录下就能找到这个30MB左右的固件文件。把它拷贝到Windows上,放到一个固定目录,例如E:\qemu\QEMU_EFI.fd。也可以从edk2固件的发布渠道下载,只要确保是AArch64架构的UEFI固件即可。

2.3 挑选银河麒麟V10镜像的坑

银河麒麟V10的版本分支比较多,有桌面版、服务器版,还有V10 SP1、SP2、SP3这些更新版本。下载的时候一定要看清楚架构标识,选择aarch64或arm64的ISO文件。我就见过有人下载了x86_64的镜像,然后启动时各种报错,折腾半天发现下错包了,纯属浪费时间。

如果你只是搭一个信创测试环境,建议优先下载服务器版镜像,比如Kylin-Server-V10-SP2-aarch64或类似版本。理由是服务器版对模拟环境的适配更好,图形界面开销小,系统也更精简,QEMU动态翻译的性能压力会小一些。桌面版虽然更直观,但模拟出来的图形性能比较吃力,体验一般。

镜像下载完成后,顺手校验一下SHA256哈希,Windows下用:

certutil -hashfile D:\iso\Kylin-Server-V10-SP2-aarch64.iso SHA256

这一步不是强迫症,镜像站偶尔会发生传输不完整的问题,与其等到安装中途报错,不如提前花十秒钟确认。

2.4 创建虚拟磁盘

QEMU的磁盘镜像文件用qemu-img创建。我习惯用qcow2格式,因为它支持动态增长,一开始只占很少的宿主空间,用到多少才扩多少,而且后面做快照也方便。

打开命令行,创建一块60GB的虚拟磁盘:

qemu-img create -f qcow2 E:\vm\kylin-arm64.qcow2 60G

60GB听起来大,但qcow2格式实际占用的空间可能就几个GB起步,不用担心浪费。如果你的宿主磁盘不宽裕,40GB也可以,麒麟系统核心安装完大概占用8到12GB左右。

3. 启动命令逐项拆解:把安装界面跑起来

到这里准备工作就算完成了,下面进入最有技术含量的一步——写启动命令。QEMU的命令行参数非常多,每条都有讲究,我先把一套装系统阶段最稳的配置直接贴出来。

3.1 完整启动脚本

用Windows命令行(cmd)执行,写在一行或使用^换行:

qemu-system-aarch64.exe ^ -M virt ^ -cpu cortex-a72 ^ -smp 4 ^ -m 4096 ^ -bios E:\qemu\QEMU_EFI.fd ^ -device VGA ^ -drive if=none,file=E:\vm\kylin-arm64.qcow2,format=qcow2,id=hd0 ^ -device virtio-blk-device,drive=hd0 ^ -drive if=none,file=D:\iso\Kylin-Server-V10-SP2-aarch64.iso,media=cdrom,id=cd0 ^ -device virtio-blk-device,drive=cd0 ^ -netdev user,id=net0 ^ -device virtio-net-device,netdev=net0 ^ -device nec-usb-xhci ^ -device usb-kbd ^ -device usb-mouse

如果在PowerShell里运行,换行符不用^,直接用反引号`,或者干脆把所有参数挤在一行写。QEMU对单行还是多行没有要求,只是多行方便阅读。

执行后应该会弹出一个窗口,里面先是UEFI的Logo信息,然后进入银河麒麟的安装引导界面。如果有任何一步卡住,先别慌,参数逐个检查,下面一节细讲。

3.2 每个参数在干什么

理解了参数含义,以后定制环境就游刃有余。

-M virt指定机器类型为ARM virt平台。这是QEMU为ARM虚拟化专门设计的通用主板模型,类似于x86下的标准PC,几乎所有ARM Linux发行版都支持这个平台。

-cpu cortex-a72指定模拟的CPU型号。A72是ARMv8-A架构的经典核,麒麟V10跑在上面没有问题。如果你想要更接近新硬件的特性,也可以换成-cpu max,让QEMU启用所有它能模拟的ARM CPU特性,有些软件对特定指令集有要求时,用max能提升兼容性。

-smp 4和-m 4096分别指定4个虚拟CPU核心和4GB内存。模拟器的多核效果和真实多核不一样,但系统能识别到对应数量的CPU,对安装和对软件的配置检查是足够的。

-bios指定UEFI固件,就是前面提到的那个QEMU_EFI.fd。没有它系统完全起不来。

接下来是磁盘和光驱的配置。-drive if=none,file=...,format=qcow2,id=hd0定义了一个不直接连接到任何控制器上的磁盘,然后在后面用-device virtio-blk-device,drive=hd0把它挂到virtio-blk总线上。光驱也同理。为什么要绕这一圈?直接if=ide在某些ARM virt平台上兼容性并不理想,而virtio设备是现代ARM虚拟化的标准方案,性能和兼容性都更稳。

网络方面,-netdev user,id=net0创建了一个用户态网络后端,QEMU会为虚拟机内置一个NAT网络,虚拟机可以上网,但外部访问虚拟机需要端口转发规则,这一点后面展开。-device virtio-net-device,netdev=net0把虚拟网卡挂到virtio-net总线上。

最后三个USB参数很关键。-device nec-usb-xhci创建一个USB控制器,-device usb-kbd和-device usb-mouse挂上USB键盘和鼠标。安装界面里如果鼠标键盘完全没反应,大多数时候是少了这套USB设备参数。

3.3 系统安装过程中容易卡住的地方

我第一次跑安装时就遇到黑屏进不去的状况。排查下来是缺少UEFI固件,加了-bios参数就好。如果你用的是这个脚本还进不了安装界面,从三个方向检查:确认ISO文件确实是aarch64版本;确认固件路径正确;确认没有在VGA参数上瞎改。

如果启动后进入了UEFI Shell,而不是安装器,说明引导顺序没有正确找到ISO里的引导文件。在Shell里输入fs0:切换到第一个文件系统,然后ls查看内容,尝试找到EFI\BOOT\BOOTAA64.EFI目录并手动执行。大部分ARM64 Linux发行版的UEFI引导文件都在这个路径。

分区环节要留意一个细节:自定义分区时一定要给UEFI引导保留一个EFI系统分区,挂载到/boot/efi,格式为vfat。如果只分根分区,安装器可能不会自动生成EFI分区,重启后又会掉回UEFI Shell。银河麒麟安装器默认布局一般会自动处理,但如果你习惯手动分区,这一点要记住。

安装过程中,鼠标经常会被"锁"在QEMU窗口里,按Ctrl+Alt+G可以释放鼠标回到Windows桌面。这个快捷键对QEMU用户来说是肌肉记忆级别的存在。

3.4 安装时的性能取舍建议

QEMU模拟ARM属于动态二进制翻译,每个ARM指令都会被翻译成x86指令再执行,性能天然打折。如果你的Windows宿主机内存有16GB以上,建议给虚拟机分8GB内存,编译和图形界面会舒服很多。CPU核心数给4到6个即可,注意在动态翻译模式下,太多核心的收益不是线性的,有时反而增加调度开销。

我个人的经验是,装图形界面版系统时,内存小于4GB会明显卡顿,在安装器界面都可能有严重的延迟感。如果你手头内存紧,就选服务器版镜像,不装图形桌面,安装速度能快不少。

4. 装完之后的三件事:网络、SSH、系统瘦身

系统安装完成、重启进入银河麒麟V10之后,第一件事不是急着点开各种应用,而是先把远程访问和服务环境理顺。

4.1 确认虚拟机网络状态

QEMU默认的用户态网络模式下,虚拟机的网卡会拿到一个形如10.0.2.15的IP地址,网关是10.0.2.2,DNS一般是10.0.2.3。这些是QEMU内置的口径,安装系统时DHCP会自动配好,你登录系统后用ip addr就能看到。

如果你在系统里执行ping 10.0.2.2看到通,说明虚拟网络工作正常。如果要访问外网,前提是宿主机本身能上网,因为用户态网络最终是借宿主机网络出去的。

4.2 配置端口转发,彻底摆脱图形窗口

长时间对着QEMU的模拟图形窗口总是不舒服,窗口小、分辨率低,而且鼠标偶尔漂移。最理想的姿势是跳过图形界面,通过SSH连接虚拟机。

做法是在启动时给网络参数加上端口转发规则,把宿主机的2222端口转发到虚拟机的22端口:

-netdev user,id=net0,hostfwd=tcp::2222-:22

完整替换掉原来那一行。这样启动虚拟机后,Windows宿主机上直接执行:

ssh root@127.0.0.1 -p 2222

就能进入银河麒麟的命令行了。在虚拟机一侧,记得确认SSH服务已经开启:

systemctl enable sshd --now systemctl status sshd

端口转发的好处是:测试脚本、文件传输、远程运维全部走标准SSH通道,不依赖图形窗口,稳定性大幅提升。哪怕QEMU窗口整个最小化,只要虚拟机在跑,SSH连接就不会断。

4.3 关闭图形服务,把资源留给测试程序

如果这台模拟机器是用来跑服务端软件测试的,图形桌面留着纯粹浪费模拟性能。装完系统、完成基本配置之后,可以切换到多用户文本模式:

systemctl set-default multi-user.target reboot

重启后就不再进入图形登录界面,系统内存占用和CPU负载都会明显下降。我在同一台Windows宿主机上测过,关闭图形桌面之后,软件编译和数据库安装的速度提升非常明显,因为QEMU省下了大量翻译图形指令的开销。

另外,如果你要用QEMU的guest agent特性,可以在系统里装上对应的agent包,例如qemu-guest-agent。这个组件可以和宿主机QEMU通信,在需要做文件系统静默、虚拟机内部关机等操作时比较好用。不过只是做常规测试的话,SSH已经完全够用了。

5. Windows与虚拟机之间共享文件:几种方案实测对比

模拟环境里测试软件,免不了要在Windows宿主机和银河麒麟虚拟机之间传文件。这块我踩过不少坑,专门开一章说说实测过的方案。

5.1 端口转发加SFTP,最省心的方案

既然已经配置了SSH端口转发,文件传输直接用SFTP即可,无需任何额外工作。Windows自带的OpenSSH客户端支持scp命令,或者直接用支持SFTP的图形客户端,例如WinSCP、MobaXterm。

命令行下最直接的用法:

scp -P 2222 D:\软件包\mysql-5.7.44.tar.gz root@127.0.0.1:/opt/

把Windows上的文件直接推送到虚拟机的/opt目录。反向传输同样可以,从虚拟机拉到Windows。这个方案的优点是完全建立在SSH通道上,可靠、加密、无额外配置;缺点是走网络协议,传输大文件时受虚拟网络带宽限制,但几GB以内的文件完全够用。

5.2 SMB网络共享,接近局域网体验

如果想要在虚拟机里直接挂载Windows的文件夹,SMB方案更贴近日常操作。在Windows端,把一个目录设置为共享,然后在虚拟机里执行:

sudo mkdir -p /mnt/share sudo mount -t cifs //10.0.2.2/share /mnt/share -o username=yourwindows账号,password=yourwindows密码

注意这里访问的IP是10.0.2.2,也就是虚拟机的网关地址,它同时代表着宿主机。实测下来,Windows的SMB共享在QEMU用户网络下是可以通的,但有两点要注意:Windows防火墙需要放行SMB相关端口;共享目录的权限和账号密码要准确,否则挂载时会报权限错误。

SMB方案适合虚拟机频繁读写Windows目录的场景,比如直接把Windows上的源码目录挂载进虚拟机里编译。

5.3 打包成ISO挂载,一次性拷入大文件

还有一种更"离线"的思路:把文件打包成ISO,然后挂载到QEMU的光驱上。对一次性拷贝大量文件来说,这种方式反而最快。

在Windows端,可以用UltraISO、AnyToISO之类的工具把目录制作成ISO,也可以用PowerShell脚本生成ISO。启动QEMU时把ISO作为cdrom挂上去,同时在脚本里启动后进入麒麟系统挂载它:

mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdrom

不过这个方案只适合一次性读入,如果你想持续性地在Windows和虚拟机之间交换数据,还是SSH或SMB更顺手。

5.4 Windows宿主机上不要指望virtiofs

QEMU在Linux环境下的virtiofs共享文件性能很好,但Windows版本的QEMU对vhost-user后端的支持非常有限,virtiofs基本跑不起来。我试过几种Windows下的后端方案,都不够稳定,最后还是老老实实回归SSH和SMB。这一点提前说明,省得你在网上搜到一堆Linux教程后在Windows上踩坑。

6. 高频踩坑:从黑屏到卡死的排查链路

这条弯路我替大家走过了,把常见的故障和排查顺序整理成一个清单。

6.1 开机黑屏

黑屏是遇到最多的现象,几乎九成是三个原因:固件缺失或路径不对、显示参数冲突、ISO架构选错。先检查-bios路径是否存在,再确认VGA参数,最后确认ISO文件名里有没有aarch64或arm64字样。

如果你改了显示参数还是黑屏,尝试把-device VGA换成-device virtio-gpu-pci,有些新内核的发行版对virtio-gpu支持更好。

6.2 卡在UEFI Shell

启动后没有进入系统,而是进入了Shell>提示符,说明引导设备没被正确识别或引导文件路径不对。这时候不要慌,在Shell里手动引导。先执行fs0:进入第一个EFI分区,用ls看看文件目录,然后尝试运行EFI\BOOT\BOOTAA64.EFI。如果能进入安装器,说明ISO没问题;如果提示找不到文件,顺手检查一下当前是不是fs0,有时候多个文件系统时引导分区是fs1。

还有一个小技巧:在按顺序尝试多个文件系统前,可以用map -r刷新设备映射,防止设备顺序错乱。

6.3 鼠标键盘完全没反应

安装界面里鼠标键盘失灵,通常是没有挂载USB设备。检查启动脚本里是否包含:

-device nec-usb-xhci -device usb-kbd -device usb-mouse

这三个参数必须同时存在。如果你用的是virtio-gpu-pci,也可以试试配套的virtio-input设备,但USB这套最通用。安装完成进入系统后,如果没有鼠标键盘,多半也是启动参数问题,不是系统问题。

6.4 图形界面卡顿和鼠标漂移

QEMU模拟ARM下的图形性能不会太好,鼠标漂移也是常见现象。如果实在需要在图形界面里操作,先按Ctrl+Alt+G释放鼠标,再重新抓取通常会改善。

系统进入桌面后,关掉视觉效果。银河麒麟桌面默认的特效在模拟环境下是性能杀手,可以在系统设置里把动画关闭,卡顿感会缓解很多。另一个优化手段是在启动参数里改用-device virtio-gpu-pci,并且安装系统自带的virtio-gpu驱动,分辨率支持和刷新体验比VGA好一些。

6.5 系统装完重启又进入安装器

如果是安装完重启后仍然进安装器而不是进系统,多半是引导顺序的问题。检查启动脚本中光驱的挂载,安装完成后应该让硬盘优先启动。最简单的方式是直接重启时不带ISO,或者把光驱的-drive参数从脚本中移除。QEMU默认从第一个可引导设备开始,硬盘排在光驱后面的话,就会先读到ISO。也可以给硬盘加上bootindex=0、光驱加bootindex=1来显式指定顺序。

6.6 SSH端口转发连不上

前面配置了hostfwd=tcp::2222-:22,但连不上时,先确认虚拟机里的SSH服务已经启动、22端口在监听;然后在宿主机上netstat -ano | findstr 2222看看端口有没有被其他程序占用;最后确认你连的是127.0.0.1而不是虚拟机的IP地址。

这里有个常见误会:QEMU的用户网络模式下,从宿主机访问虚拟机不能直接访问10.0.2.15,必须通过端口转发,也就是宿主机127.0.0.1:2222对应虚拟机10.0.2.15:22。先把这一点刻在脑子里,能省掉一半的排查时间。

6.7 虚拟系统整体性能异常慢

QEMU模拟ARM本来就慢,但如果到了操作一步等半天的程度,就要检查资源分配了。4GB内存对服务器版来说能跑,对桌面版来说就紧张。如果你的宿主机的CPU没有开启虚拟化相关特性,也不影响QEMU软件模拟,但整体吞吐会受宿主CPU单核性能影响很大。

还有一点,Windows的实时保护或者安全软件可能会在QEMU读写磁盘镜像时反复扫描,拖慢IO。实测中把虚拟机目录加入Defender的排除列表,磁盘性能提升非常明显。这个坑比较隐蔽,我一度以为是自己给的磁盘太小,其实是杀毒软件在实时扫描qcow2文件。

7. 模拟环境和真实鲲鹏的差异,以及还能往哪儿扩展

用QEMU模拟鲲鹏ARM跑银河麒麟,毕竟不等于真机。你心里要有一杆秤:哪些测试结果可以采信,哪些只能作为参考。

7.1 哪些结论可以信,哪些不能信

可以信的是软件层和系统层的行为:系统能不能装、服务能不能跑、依赖能不能满足、配置有没有问题、日志有没有异常、脚本能不能执行。这些测试在QEMU里的结果,和真机基本一致,因为用户的软件和Linux内核都是纯ARM64代码在跑,只是执行方式从硬件变成了动态翻译。

不能信的是性能数据和硬件外设相关的测试结果。QEMU的翻译开销意味着CPU密集型的跑分和真机完全不可比,虚拟化的virtio磁盘、virtio网卡也和真机的磁盘控制器、网卡驱动完全不同。如果有软件依赖特殊硬件能力比如硬件加速卡、特定型号网卡DPDK驱动,这类测试在QEMU环境里没有意义,只能等真机。

7.2 指令集层面的差异

QEMU的-cpu cortex-a72模拟的是ARMv8-A架构,而鲲鹏920处理器基于ARMv8.2架构,两者在指令集细节上有所差异。如果软件在运行中出现"非法指令"之类的报错,可以尝试把CPU参数改成-cpu max,启用QEMU能模拟的全部ARM特性。对于大多数用户态软件来说,这两种配置都能正常运行,但遇到指令集敏感的工具链、数学库时,max的兼容面更广。

7.3 用它验证软件栈:MySQL、Zabbix这些常见场景

搭好这套环境后,最常干的事就是在里面做中间件和应用的安装验证。就拿关键词里频繁出现的MySQL 5.7.44来说,ARM64架构下官方提供的二进制包覆盖并不完整,很多时候需要自己找源码包或者社区的ARM版本编译安装。在QEMU模拟环境里编译MySQL源码,速度比真机慢不少,所以建议给虚拟机加大swap空间,不然编译过程中内存一紧张就会直接卡死。

Zabbix 7.0这种监控系统的部署也是类似。先确认它的Zabbix Server、Zabbix Agent和数据库组件有没有aarch64版本的软件包,再按照官方文档逐步安装。QEMU模拟环境在验证整个部署流程和配置项时完全够用,甚至能帮你提前发现很多文档里不会写的问题。

7.4 往集群和云平台方向延伸的思路

如果你觉得单机QEMU还不够,其实OpenStack的Nova计算节点底层用的就是QEMU。OpenStack天然支持通过Nova调度不同架构的虚拟化计算节点,在数据中心里部署多架构虚拟机就是这么做的。你在Windows上用QEMU搭的这个单套环境,本质上就是OpenStack里一个ARM64计算节点的最小原型——同样的镜像格式、同样的虚拟化设备模型。

从单机调试到多节点分布式测试,这套方法论的迁移成本并不高,只是把Windows上的QEMU换成Linux服务器上的KVM加QEMU组合而已。

我自己现在的习惯是,每搭建一台这样的模拟机器,都会在旁边放一个启动脚本start-kylin.cmd,把常用参数按行写好,旁边再加一行注释说明内存、CPU、磁盘路径各自对应的位置。新一轮适配需求来的时候,直接复制改改路径就能用,十分钟内开出一台新的ARM64测试环境。这也是文章结尾想送给你的一条实在建议:这套环境最值钱的不是模拟本身,而是让你在没有真机的时候也能提前把流程跑通、把坑趟平,等真机到位时,你已经比谁都熟悉这套系统了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 10:06:48

Java List查找对象性能优化:从contains到HashMap的O(1)方案

先聊个实际场景吧。有一次线上接口报警,CPU 被打满,十几个 QPS 就把服务拖到超时。查了半天,锅竟然出在一个 1 万大小的 List 上——有同事在循环里反复调用list.contains()去判断某个对象是否存在。1 万条数据不算大,但循环 500 …

作者头像 李华
网站建设 2026/9/26 10:02:51

使用数据转换进行连续变量的特征提取

数据转换是数据分析和建模过程中至关重要的步骤之一。通过合理的转换,数据可以变得更加适合进一步的分析,从而提高模型的表现和数据的解释力。尤其在面对分布不均衡、方差不稳定或非线性数据时,数据转换往往是有效的解决方案。对于不同类型的数据,选择合适的转换方法至关重…

作者头像 李华
网站建设 2026/9/26 10:02:49

SQL Server 连不上?网络协议配置与故障排查实战指南

很多人在SQL Server这个问题上栽过跟头:客户端和数据库引擎明明都在正常运行,却死活连不上。打开SSMS输入服务器名称,点击连接,等待几秒钟后弹出一个“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误”。每次遇到…

作者头像 李华
网站建设 2026/9/26 10:02:47

数据预处理阶段数据样本缺失值处理

在现代的数据科学中,数据预处理是数据分析与机器学习过程中至关重要的一步。而在数据预处理中,缺失值处理是一个非常常见且重要的任务。数据缺失会直接影响模型的性能,甚至导致结果的偏差。因此,如何合理处理数据中的缺失值,成为了提高模型准确性与稳定性的关键步骤。本教…

作者头像 李华