.Net8运行在Arm64上的初体验

前言

.Net是可以运行在Arm上面的,但是有一定的限制。比如dotnet sdk在MacOS系统上不能运行Arm的32位程序。本篇来看下最新的.Net8 Preview2运行在Linux-Arm64位的系统上。.

概括

运行如下命令
下载arm64的root系统和.Net8的arm64 SDK。解压,然后放到root tmp文件夹下面安装。

#wget https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64-root.tar.xz#wget https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-8.0.100-preview.2-linux-arm64-binaries#mkdir root#tar -xvf ubuntu-22.04-server-cloudimg-arm64-root.tar.xz -C root/#cp -r dotnet-sdk-8.0.100-preview.2.23157.25-linux-arm64.tar.gz root/tmp#cd root/tmp#mkdir dotnet#tar -xvf dotnet-sdk-8.0.100-preview.2.23157.25-linux-arm64.tar.gz -C dotnet#cd ..#cd ..#chroot root

看下当前系统版本:

#uname -aLinux tang-virtual-machine 5.19.0-38-generic #39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 21:16:15 UTC 2 aarch64 aarch64 aarch64 GNU/Linux

进入到tmp目录下看下.Net8的信息

#tmp/dotnet/dotnet --infoFailed to create CoreCLR, HRESULT: 0x8007000EHost:  Version:      8.0.0-preview.2.23128.3  Architecture: arm64  Commit:       30b879924a.NET SDKs installed:  8.0.100-preview.2.23157.25 [/tmp/dotnet/sdk].NET runtimes installed:  Microsoft.AspNetCore.App 8.0.0-preview.2.23153.2 [/tmp/dotnet/shared/Microsoft.AspNetCore.App]  Microsoft.NETCore.App 8.0.0-preview.2.23128.3 [/tmp/dotnet/shared/Microsoft.NETCore.App]Other architectures found:  NoneEnvironment variables:  Not setglobal.json file:  Not foundLearn more:  https://aka.ms/dotnet/infoDownload .NET:  https://aka.ms/dotnet/download

可以看到它这个还是有一定的问题,比如无法创建CoreCLR,以及找不到全局json file等。如果是.Net7的话,会提示找不到路径。这里是模拟运行,实体机不知道怎么样。

结尾

以上是在X64的Linux发行版下运行的Arm64位OS,然后让.Net8运行在Arm64上。还有一个Host主机,也就是Windows11。
大致是:

windows->VM->Ubuntu->Arm64->.Net8。