cola整体网络 @ c/homelab ·
edit-2
1 day ago

[第一届晒机大赛] mips64最后的绝唱,双路龙芯3B4000装机记录

前言

某日在浏览闲鱼时,发现有商家正在出售全新带挡板的曙光贴牌龙芯3B4000双路主板(型号为A1906),售价仅600元!主板附带有两个2U散热器,单个散热器价值就达到了100元,相当于主板售价仅400元,简直超值!

硬件规格

主板布局

龙芯3B4000处理器

4 Core 4 Thread 1.8Ghz GS464V MIPS64EL + LoongISA 2.0

龙芯7A1000桥片

PCIE扩展

白色PCIE2.0 X8:用来安装龙芯自家的安全专用卡
黑色PCIE2.0 X16:实际速率只有X8,通过7A1000直接分配出来
蓝色PCIE2.0 X8:通过PEX8632 PCIE2.0扩展芯片将7A1000分配的8条PCIE通道扩展至32条得到的(带宽共享PCIE2.0 X8)

板载网卡

一颗Intel I350AM4四口千兆网卡芯片供操作系统使用
一颗博通BCM5461千兆网卡芯片供BMC管理介面使用

BMC管理介面

ASPEED AST2400(后置IO面板附带的VGA接口为该芯片自带的集成显卡输出)

后置IO面板

两个USB2.0接口,两个USB3.0接口,一个RS232串口,一个VGA接口,四个千兆RJ45网口,一个BMC Mangle网口

内存选择

3B4000最高支持DDR4 2400Mhz内存,且支持REG ECC。这里使用的是4根 海力士 DDR4 2133 1Rx4 8G REG ECC 规格的内存条。

在第一次开机时,需要进行长达5分钟的内存学习。在学习完成后,每次开机等待10s左右就能通过自检,并且能在系统内查询到ECC功能已启用。

组装服务器

内存:海力士 DDR4 2133 1Rx4 8G REG ECC内存 *4根
硬盘:致钛 SC001 512G SATA SSD
网卡:Mellanox ConnectX-5 单口QSFP+
机箱:益恒2U 6盘位边缘计算服务器机箱 470mm深度
电源:长城 GW-CRPS800 800W双路冗余电源模块

主板"front panel"机箱前面板接口定义如图:
(Intel 24 pin规范)

配置BMC远程管理平台

在服务器硬件安装完成后,就要准备上架进机柜里了。
那么首先就需要将BMC远程管理平台配置好,以方便后期安装系统以及维护调试,这样就不需要在出问题的时候拿着显示器与键盘跑去服务器面前调试了。
因为主板是通过第三方购买的,并没有官方支持;而且网络上也搜索不到这块主板的有效信息,只能自己寻找BMC的管理IP地址,以及账户密码。
庆幸的是这个主板预留了BMC介面的调试串口,使用杜邦线与RS232串口相连,波特率选择38400,即可完成通信。
其接口定义图如下:

进入BMC console界面后,首先尝试使用祖传通用账号密码,默认都为 admin ,成功登录进入bash界面。
使用 busybox ifconfig 命令查看BMC网卡绑定的IP地址。

eth0为bmc内部地址,eth1为mangle网口地址,获得BMC管理接口绑定的IP地址为192.168.2.123。
在同一局域网下使用别的设备通过浏览器访问: https://192.168.2.123/ ,即可使用默认账号密码,进入BMC管理界面。

在WEB界面内选择 远程控制 选项卡,会出现 KVM 按钮,点击即可加载KVM远程管理程序。
因为BMC硬件规格有点老,还是只能使用jnlp程序进行KVM访问,而且只能使用JAVA1.8版本。

安装运行后即可进行远程管理了。

系统选择

BMC远程管理平台配置完成后,就可以愉快的安装系统了。

一开始考虑使用Debian12,但是上游的6.X内核在3B4000上会出现ACPI不受控的问题,具体表现为重启以及关机操作并不会触发主板执行相关操作。系统关闭后会直接黑屏没有进一步的执行,需要手动reset才可以。

之后考虑使用安同开源社区开发的安同OS(AOSC OS),因为安同OS为滚动发行版,各种软件包版本较新;且安同OS的MIPS版本在编译时针对龙芯3系列的GS464微架构启用了优化。

安同开源社区同样有两台双路龙芯3B4000服务器作为构建服务器使用,在使用上游6.x内核时也出现了相同问题,所以内核使用了flygoat特别调校的龙梦(lemote)内核,暂时停留在5.4版本。

一开始使用的是安同OS的loongson3版本livekit安装盘,但发现grub引导配置有问题,手动修复后提示如下信息:

mount: /run/initramfs/live: unknown filesystem type 'vfat'

经过多方询问,发现可能是AOSC安装盘可能没把vfat的kernel module打包进initramfs镜像内,只能退而求其次,使用Tarball包手动安装。

准备LiveCD

首先需要准备:

  1. Loongnix20的镜像:http://ftp.loongnix.cn/os/loongnix/20/mips64el/isos/ (使用rc2版本)

  2. AOSC OS Tarball:https://releases.aosc.io/os-loongson3/desktop/ (使用20240405版本;Server版本因为许久未更新,导致apt安装更新时会报依赖错误,这里使用的是desktop版本。安装后执行 oma remove kde-base 命令,即可卸载所有GUI界面。)

将下载好的Loongnix20-rc2镜像,通过使用 Win32 Disk Imager 软件或者使用 dd 命令写入进U盘。

引导进入LiveCD

在开机时多次按下键盘F2按键,直到进入BIOS界面。
切换到“启动”选项卡,选择插入的U盘,进行引导并进入LiveCD。

Loongnix20

Loongnix20的LiveCD系统,网络连接默认使用的是DHCP方式获取,取得IP后即可通过使用同一局域网下的其它设备进行SSH连接操作,账户名与密码均为 loongson

通过SSH连接进入后,首先切换到 root 用户,密码为 loongson

$ su

准备磁盘分区

这边使用 cfdisk 工具进行分区操作.

$ /usr/sbin/cfdisk /dev/sda

如果原来的硬盘是MBR分区格式,需要将分区格式修改为GPT,使用如下命令进行操作:
(注:它会清空你选择的硬盘的所有分区及数据)

$ /usr/sbin/cfdisk -z /dev/sda

相对通用的分区示例如下:

  1. /dev/sda1 作为EFI引导分区,一般设置为1G。
  2. /dev/sda2 作为交换分区,一般设置为与物理内存相同的小。
  3. /dev/sda3 作为系统根目录,将剩下的空闲容量分配完即可。

操作完成后大概是这个样子的:

$ /usr/sbin/fdisk -l

Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: ZHITAI SC001 Act
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt

Device        Start        End   Sectors   Size Type
/dev/sda1      2048    2099199   2097152     1G EFI System
/dev/sda2   2099200   35653631  33554432    16G Linux swap
/dev/sda3  35653632 1000214527 964560896 459.9G Linux filesystem

格式化分区并挂载

分配好分区后,因为分区里还没有存在文件格式,需要进行格式化操作:

$ mkfs.fat /dev/sdb1 # 将EFI分区格式化为fat文件格式
$ mkfs.ext4 /dev/sdb3 # 将根目录分区格式化为ext4文件格式
$ mkswap /dev/sdb2 # 制作交换分区
$ swapon /dev/sdb2 # 启用交换分区

挂载磁盘分区:

$ mkdir /mnt/aosc # 新建一个用来挂载系统根目录的临时目录
$ mount /dev/sda3 /mnt/aosc # 将根目录分区挂载到/mnt/aosc目录上
$ mkdir /mnt/aosc/boot # 创建引导目录,用于挂载EFI分区
$ mount /dev/sda1 /mnt/aosc/boot # 挂载EFI分区到/mnt/aosc/boot目录上

释放文件

将下载好的AOSC OS Tarball包上传至LiveCD内任意目录,这边使用的是/tmp目录。
上传完成后就需要将文件释放至系统根目录下:

$ cd /mnt/aosc # 先进入创建好的系统根目录准备释放文件
$ tar --numeric-owner -pxvf /tmp/aosc-os_desktop_20240405_loongson3.tar.xz # 解压释放文件

解压后执行 ls -l 指令查看权限是否正确,否则之后的安装将可能出现错误。
正确的权限应该是这样的:
(列表里的所有者都应该是 root:root )

$ ls -l
total 60K
lrwxrwxrwx  1 root root    7 Apr  5 05:31 bin -> usr/bin/
drwxr-xr-x  4 root root 4.0K Apr  5 05:38 boot/
drwxr-xr-x  3 root root 4.0K Apr  5 05:31 dev/
drwxr-xr-x 74 root root 4.0K Apr  5 05:35 etc/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 home/
lrwxrwxrwx  1 root root    7 Apr  5 05:31 lib -> usr/lib/
lrwxrwxrwx  1 root root    7 Apr  5 05:31 lib64 -> usr/lib/
drwxr-xr-x  4 root root 4.0K Apr  5 05:31 media/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 mnt/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 opt/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 proc/
drwxr-x---  2 root root 4.0K Apr  5 05:38 root/
drwxr-xr-x  7 root root 4.0K Apr  5 05:32 run/
lrwxrwxrwx  1 root root    7 Apr  5 05:31 sbin -> usr/bin/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 srv/
drwxr-xr-x  2 root root 4.0K Apr  5 05:31 sys/
drwxrwxrwt  2 root root 4.0K Apr  5 05:31 tmp/
drwxr-xr-x  9 root root 4.0K Apr  5 05:31 usr/
drwxr-xr-x 13 root root 4.0K Apr  5 05:35 var/

生成新系统的fstab文件

$ /mnt/aosc/usr/bin/genfstab -U -p /mnt/aosc >> /mnt/aosc/etc/fstab

执行完以上命令后一定要检查生成的 fstab 文件是否正确!
使用 blkid 命令查看分区UUID信息,检查一下对应的分区有没有绑定错。
生成好的文件大概是这个样子的:

$ cat /mnt/aosc/etc/fstab

# /boot was on /dev/sda1 during installation
UUID=******     /boot   vfat    defaults        0 2
# / was on /dev/sda3 during installation
UUID=******     /       ext4    defaults        0 1
# swap was on /dev/sda2 during installation
UUID=******     none    swap    defaults        0 0

挂载额外需要的系统目录

$ mkdir /mnt/aosc/run/udev
$ for i in dev proc sys run/udev; do mount --rbind /$i /mnt/aosc/$i; done

拷贝EFI引导分区

因为没有找到龙芯3号(mips64el架构)的grub软件包,所以此时直接拷贝LiveCD启动后的 /boot/EFI 整个目录下的GRUB引导文件,到准备安装系统 /boot 目录下。

$ cp -r /boot/EFI /mnt/aosc/boot

进入AOSC系统

chroot到新安装系统的根目录:

$ chroot /mnt/aosc /bin/bash

设置root密码

$ passwd root

修改dns解析服务器地址

默认的dns解析服务器地址配置的有问题,需要修改 resolv.conf 才能进行系统更新:

$ nano /etc/resolv.conf

nameserver 223.5.5.5
nameserver 119.29.29.29

配置软件源

主源有时候拉取的速度比较慢,所以需要根据自己的网络环境选择合适的软件源。
软件源列表参见AOSC Wiki的镜像站页面:https://aosc.io/repo
这边使用的是清华源:

$ nano /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/anthon/debs stable main

更新系统软件包

$ apt update
$ apt full-upgrade

引导配置

因为该平台昆仑固件的引导方式不是直接获取/boot目录下的grub.cfg文件,所以需要修改默认的 update-grub 脚本。

$ nano /usr/sbin/update-grub

找到 exec grub-mkconfig -o /boot/grub/grub.cfg "$@" 这一行,将其改成下面的:

exec grub-mkconfig -o /boot/EFI/BOOT/grub.cfg "$@"

初始化 RAM Disk

$ update-initramfs

理论上,到这一步就已经更新了grub引导信息。
如果没有,则执行一次 update-grub 命令手动更新一下。

设置系统时区

以 Asia/Shanghai 为例:

$ ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置系统语言

$ nano /etc/locale.conf

LANG=en_US.UTF-8

设置主机名

配置成你喜欢的主机名,例如:

$ nano /etc/hostname

Katyusha-Loongson-MIPS

重启并进入AOSC OS

此时对基本操作系统的安装已经完成,可以重启进入安同OS了。
退出chroot:

$ exit

重启:

$ reboot


当出现以上界面后,恭喜你,系统已经装好了!

登录系统后,如果没有网络可以使用 nmtui 命令配置网卡.

neofetch信息

完工~

4
message-square
5
  • karminski-牙医MA
    1 day ago

    卧槽牛逼!!!这个DDR4内存能点亮我觉得都算奇迹了

  • linweixin
    1 day ago

    600 块钱。。感觉好拉跨的样子。。。为了龙芯吧👀