Linux operation 23Win 10 64位(X86 架构CPU)安装ARM架构的虚拟机(银河麒麟高级服务器操作系统 V10)
Posted Rusty well began
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux operation 23Win 10 64位(X86 架构CPU)安装ARM架构的虚拟机(银河麒麟高级服务器操作系统 V10)相关的知识,希望对你有一定的参考价值。
1、银河麒麟高级服务器操作系统 V10(鲲鹏版)下载:
官网下载
https://www.kylinos.cn/scheme/server/1.html
1.银河麒麟高级服务器操作系统V10
x86/兆芯/海光
Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso
https://pan.baidu.com/s/19CmmJWl0jDzUTJxEcJZ3Tg
提取码:now7
arm64/飞腾/鲲鹏
Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso
https://pan.baidu.com/s/1GOLao-6WmGqUkCXf1CA6qg
提取码:1vt8
龙芯
Kylin-Server-10-SP1-mips64el-Release-Build18-20210809.iso
Kylin-Server-V10-SP1-General-Release-2111-LoongArch64.iso
https://pan.baidu.com/s/1iKDQuLKfj5jZEW1CQBFCxA
提取码:xv2u
2.银河麒麟桌面操作系统V10
x86/兆芯/海光
Kylin-Desktop-V10-SP1-Release-2107-x86_64.iso
https://pan.baidu.com/s/1-LYpgpMLM240EtEaIlk8Xg
提取码:9sl8
arm64/飞腾/鲲鹏
Kylin-Desktop-V10-SP1-Release-2107-arm64.iso
https://pan.baidu.com/s/13Yc3d_Wg5tt5sLn_KLPveg
提取码:85on
龙芯
Kylin-Desktop-V10-SP1-Release-2107-mips64el.iso(3A4000)
Kylin-Desktop-V10-SP1-RC6-Build10-210807-loongarch64.iso(3A5000)
https://pan.baidu.com/s/13LCfK0GUp3L5s2f7ITTyPw
提取码:qhdt
2、安装虚拟机
经常使用的电脑是x86架构的cpu,这样我们平常对于同样是x86架构的64位处理器的操作系统,我们可以利用vmware等虚拟软件进行虚拟,而对于不同cpu架构的arm架构的操作系统,我们可以通过QEMU模拟器来进行模拟一个arm环境,方便我们进行对某些运行在arm架构系统上面的软件进行模拟。
<1>银河麒麟高级服务器操作系统 V10(鲲鹏版)镜像(ARM架构)
Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso
<2>QEMU 软件的下载地址
https://qemu.weilnetz.de/w64/2021/qemu-w64-setup-20210505.exe
<3>UEFI(BIOS的替代方案)的下载地址
http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd
<4>文件路径
文件 | 目录 |
---|---|
Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso | D:\\vm\\arm64 |
qemu-w64-setup-20210505.exe | D:\\vm\\arm64 |
QEMU_EFI.fd | D:\\vm\\arm64 |
<5>安装qemu
在D:\\vm\\arm64目录下新建文件夹qemu,将qemu安装到D:\\vm\\arm64\\qemu目录下;
<6>安装好之后,利用qemu生成一个硬盘文件:
进入qemu目录下运行cmd命令,调出命令行界面,运行命令:
qemu-img create -f qcow2 D:\\vm\\arm64\\kylindisk.qcow2 40G
最终得到一个命名为kylindisk.qcow2的磁盘文件,以后我们利用此文件进行安装虚拟机;
文件路径
文件 | 目录 |
---|---|
Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso | D:\\vm\\arm64 |
qemu-w64-setup-20210505.exe | D:\\vm\\arm64 |
QEMU_EFI.fd | D:\\vm\\arm64 |
kylindisk.qcow2 | D:\\vm\\arm64 |
<7>安装虚拟机
进入到qemu目录,使用cmd命令调出命令行界面,执行以下命令:
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\\vm\\arm64\\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\\vm\\arm64\\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=D:\\vm\\arm64\\Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp::2222-:22
note:命令中的路径要与文件目录对应上,否则可能会报错
之后在自动弹出的QEMU虚拟机中安装系统:
<8>启动虚拟机
安装好后,我们需要再次启动(无需指定iso文件启动);
进入到qemu所在目录,使用cmd命令行,执行以下命令:
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios D:\\vm\\arm64\\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=D:\\vm\\arm64\\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp::2222-:22
<8>之后可以使用shell工具(如:x-shell,tabby)进行连接
宿主访问虚拟机需要访问本机端口:2222
ssh 127.0.0.1:2222
COM 端口上的 Win32 重叠读取文件返回 ERROR_OPERATION_ABORTED
【中文标题】COM 端口上的 Win32 重叠读取文件返回 ERROR_OPERATION_ABORTED【英文标题】:Win32 Overlapped Readfile on COM Port returning ERROR_OPERATION_ABORTED 【发布时间】:2008-11-20 23:07:14 【问题描述】:好的,一个适合蜂巢思维的人...
我的代码 - 直到今天 - 在许多系统上都可以正常运行并部署在许多站点上。它涉及线程从串行端口读取和写入数据。
尝试检查新设备时,我的代码在 ReadFile 之后调用 GetOverlappedResult 时出现 995 ERROR_OPERATION_ABORTED 错误。有时读取会起作用,有时我会收到此错误。只需忽略错误并重试即可 - 令人惊讶的是 - 不会丢失任何数据。不需要 ClearCommError。
这是sn-p。
if (!ReadFile(handle,&c,1,&read, &olap))
if (GetLastError() != ERROR_IO_PENDING)
logger().log_api(LOG_ERROR,"ser_rx_char:ReadFile");
throw Exception("ser_rx_char:ReadFile");
WaitForSingleObjectEx(r_event, INFINITE, true); // alertable, so, thread can be closed correctly.
if (GetOverlappedResult(handle,&olap,&read, TRUE) != 0)
if (read != 1)
throw Exception("ser_rx_char: no data");
logger().log(LOG_VERBOSE,"read char %d ( read = %d) ",c, read);
else
DWORD err = GetLastError();
if (err != 995) //Filters our ERROR_OPERATION_ABORTED
logger().log_api(LOG_ERROR,"ser_rx_char: GetOverlappedResult");
throw Exception("ser_rx_char:GetOverlappedResult");
我的第一个猜测是归咎于我以前没有使用过的 COM 端口驱动程序(它是 Blackmagic Decklink 上的 RS422 端口,仅供参考),但这感觉像是在逃避。
哦,还有 Vista SP1 Business 32 位,我的罪过。
在我把它归结为“别人的问题”之前,有没有人知道可能导致这种情况的原因?
【问题讨论】:
我不认为这是你的问题,但你没有正确使用WaitForSingleObjectEx
。您应该检查 (1) dwWait == WAIT_OBJECT_0
或 (2) dwWait == WAIT_TIMEOUT && dwError == ERROR_IO_PENDING
。
【参考方案1】:
您如何在 ReadFile 之前设置 OVERLAPPED 结构? - 我总是将它们归零(显然 hEvent 除外),这可能是部分迷信,但我觉得它在过去给我带来了问题。
恐怕责怪驱动程序(如果它是非 MS 而不仅仅是参考的微小调整)并非完全不切实际。编写一个 COM 驱动程序是一件非常复杂的事情,测试它的困难在于每个编写的应用程序使用串行端口和它们的 IOCTL 略有不同。
另一个常见问题是不设置整个端口 - 例如不调用 SetCommTimeouts 或 SetupComm。我不知道你是否犯了这种错误,但我遇到过有人说他们没有使用超时,而实际上他们的意思是他们没有调用 SetCommTimeouts 所以他们正在使用它们但没有一个概念他们将要做什么......
这种东西对于第 3 方 COM 驱动程序来说可能是谋杀,因为人们经常对 MS 驱动程序的任何旧废话侥幸逃脱,而且它并不总是与其他设备相同。
【讨论】:
我同意超时看起来是一个可能的原因,特别是因为没有输入丢失并且 ReadFile 调用一次只读取一个字节。但是,如果应用程序正确设置了端口,那么责怪驱动程序是很现实的,包括它是否是 MS 的驱动程序。 我正在清除 OVERLAPPED 结构(除了 hEvent)并在 COMMTIMEOUTS 中的所有字段中调用 SetCommTimeouts,并将其设为零。我尝试更改为非重叠 i/o 并得到相同的结果。是时候尝试另一个通讯端口了...【参考方案2】:除了将 OVERLAPPED 归零之外,您还可以检查您是如何设置 olap.hEvent 的,也就是说,您对 CreateEvent 的参数是什么?如果您正在创建一个预先发出信号的事件(即 CreateEvent 的第三个参数为 TRUE),我希望立即返回。另外,不要忘记,如果您将 manualReset(CreateEvent 的第二个参数)指定为 FALSE,GetOverlappedResult() 将帮助您清除事件 - 这可能解释了为什么它第二次起作用。
无法从您的 sn-p 中真正判断出这些是否会影响您 - 希望这会有所帮助。
【讨论】:
以上是关于Linux operation 23Win 10 64位(X86 架构CPU)安装ARM架构的虚拟机(银河麒麟高级服务器操作系统 V10)的主要内容,如果未能解决你的问题,请参考以下文章
微软❤Linux!Win 10 支持 Bash 和 Ubuntu