国产化之Arm64 CPU+银河麒麟系统安装.NetCore
背景
某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,银河麒麟就是一个 Linux 发行版,数据库使用达梦 V8,这个数据库很多概念和 Oracle 相似,CPU 平台的范围:龙芯、飞腾、鲲鹏等。
龙芯团队自己支持了.netcore3.1,飞腾之类的是 ARM 架构,官方已经支持。.netcore3.1 仅在 x64 体系结构上支持包管理器安装,对于 ARM 等其他体系结构,必须通过其他一些方式安装 .NET。
这里就以 ARM 架构举例,其它 CPU 平台的安装过程都一样,要下载的包不同而已。
环境
- 主机操作系统:Windows 10
- 虚拟化工具:QEMU
- 虚拟机 CPU:cortex-a53(ARMv8 架构,支持 Arm64)
- 虚拟机操作系统:银河麒麟 v4
下载
.NET Core 3.1 的官方下载地址是这里 :https://dotnet.microsoft.com/en-us/download/dotnet/3.1
因为这里选择 ARMv8 架构的 CPU,所以下载 Linux 的 Arm64 版本;如果是 x64 架构,就选择 x64。
如果是龙芯处理器,请前往龙芯官网下载:http://www.loongnix.cn/index.php/Dotnet
怎么上传到服务器?
如果是下载到本地的,可以通过 SFTP 上传到服务器;如果想在服务器下载,可以通过 wget 命令直接下载。
安装
x64、Arm 处理器
进入安装文件目录,我这里是下载到当前用户的根目录了,所以:
cd ~
执行以下命令,将安装包解压到当前用户根目录的 dotnet 文件夹下(可以更换路径):
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-3.1.416-linux-arm64.tar.gz -C $HOME/dotnet
注意:不同平台的安装包名字不一样,要修改成你下载的,比如 x64 平台下的包是 dotnet-sdk-3.1.416-linux-x64.tar.gz 。
然后还需要将 dotnet 导出到环境变量 PATH 中,编辑文件 /etc/profile ,在最后添加以下两句:
export PATH=$PATH:$HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
然后执行命令:source /etc/profile,让配置生效。
看看 dotnet 是否安装成功了,执行命令:dotnet –info ,正常应该显示如下:
MIPS、龙芯处理器
因为没有龙芯处理器,这块只能干说了,因为银河麒麟是 Debian 系的,所以下载那个 deb 包,直接命令安装就行了。
sudo apt install ./dotnet-sdk-3.1.11-rc1_loongarch64.deb
安装完成之后,也通过 dotnet –info 看一下结果。
其它依赖
如果依赖 System.Drawing.Common 程序集,还需要 libgdiplus 6.0.1 或更高版本,这个是 mono 提供的,如果你的 CPU 平台是 arm64 或者 x64,可以在下面的链接下载这个包,上传到服务器上进行安装:
链接: https://pan.baidu.com/s/1WYIbxqh8OPTHBJWZoWafHw?pwd=pr4q
x64 平台这样安装:
sudo apt install ./libgif7_5.1.4-0.3~16.04.1_amd64.deb
sudo apt install ./libgdiplus_6.0.5-0xamarin1+ubuntu1604b1_amd64.deb
arm64 平台:
sudo apt install ./libgif7_5.1.4-0.3~16.04.1_arm64.deb
sudo apt install ./libgdiplus_6.0.5-0xamarin1+ubuntu1604b1_arm64.deb
如果你是其它 CPU 平台的,可以参考 mono 项目的这篇文章:
https://www.mono-project.com/download/stable/
针对这个问题,官方在.NET6 中已经放弃了 System.Drawing.Common 的跨平台属性,也许更好的办法是使用其它图形库代替它,比如:SkiaSharp、Microsoft.Maui.Graphics、ImageSharp 。
测试
依次执行以下命令:创建一个目录 dotnetsample,然后创建一个 web 项目,最后运行这个项目。
cd ~
mkdir dotnetsample
cd ./dotnetsample
dotnet new web
dotnet run --urls=http://*:5000
在浏览器中访问,显示如下结果:
如果走到这一步,那么恭喜你,安装成功了!
收获更多架构知识,请关注微信公众号 萤火架构。原创内容,转载请注明出处。