龙芯的进步实在是太快了,2002年才推出第一款芯片,2013年左右开始做商用CPU,2023年就把差距缩小到3年以内,现在最新的3A6000已经几乎追平i3-10100了。而且论架构其实和comet lake不相上下,唯一缺点就是主频上不去。期待后续8核的3B6000,起码能和10代i7掰掰手腕。
为什么龙芯不用最好的工艺,原因是龙芯需要做到可控,所以选择了我们国内能自行生产的最高工艺,而不是业界最高的工艺来设计。这个原因就可以理解了。不过在超级计算机的设计应用上主频并不是最主要的因素,芯片间的互联互通效率才是,龙芯在这方面目前也已经有所突破,值得期待。其实2010年曙光就用龙芯做成过曙光6000超级计算机。
最近在小黄鱼看到有卖家在卖龙芯3A2000C的主板(带CPU),虽然这个平台有点老,也不是最新的LoongArch架构,还是早年的MIPS64el架构,但架不住便宜啊!35元包邮,主板带CPU还带散热器!主板上还有4个SATA口!还要啥自行车!35元买不了吃亏买不了上当!于是下单来了一套。
收到后尝试安装系统,结果发现官方最新支持这个平台的只有19年的一个基于Fedora的版本,而且,内核居然是……3.10的,这都什么年代了,还在玩3.10……
于是开始尝试安装mips64el架构的Debian,可无论怎么试,用什么办法,都没有办法启动安装U盘,也许是主板BIOS的问题吧。最后,折腾了半天,终于用网络安装的方法,借着官方的老系统,把Debian 11系统装上了,内核升级到了5.10.0。
我也尝试了最新的6.1内核和Debian 12,无奈开机加载initramfs时候就死机了,估计内核和这主板有啥冲突吧,退而求其次,这个稳定的5.10内核已经很不错了!
准备用于启动的LiveCD介质
下载系统支持的安装镜像
支持龙芯3A2000C的官方安装镜像下载地址如下:
http://ftp.loongnix.cn/os/loongnix/1.0/liveinst/old/loongnix-20190331.iso
创建用于安装的U盘
在Linux环境下,使用如下命令
cp loongnix-20190331.iso /dev/sdb #假设sdb为U盘设备,不能使用文件系统sdb1,直接使用设备
在Windows下,可以使用
Win32ImageWriter
直接写入U盘
安装初始操作系统
进入安装环境
开机后按Del键进入BIOS环境,将启动顺序配置为USB设备优先
插入U盘启动后,在Grub界面,选择第二个选项进入安装环境
安装系统
选择桌面的安装图标,按正常操作流程进行安装
文件系统创建时选择手动配置,建议参考如下方式进行配置:
/boot
,ext4分区,大小500M以上/home
,ext4分区,可以存放用户以及备份数据/
,ext4分区,建议大一些比较好swap
,swap分区,建议为内存大小的1-2倍正常安装完成后拔掉U盘,重启系统,确认下可以正常使用。当前系统的内核版本应该是3.10.x,版本较低
通过网络安装Debian 11
文件系统准备
再次通过U盘启动到安装环境,但这次不进行安装,打开终端。
创建临时环境的挂载点
su mkdir /mnt/deb
挂载目标硬盘上的根文件系统
mount /dev/sda5 /mnt/deb #假设/dev/sda5为根文件系统
删除目标文件系统上的所有文件
rm -rf /mnt/deb/*
通过debootstrap重建debian的文件系统结构
由于要安装Debian 11,因此需要通过Debian 11的
debootstrap
来创建,可以从这里下载适配debootstrap
脚本:http://ftp.cn.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123+deb11u1_all.deb
由于当前LiveCD的官方操作系统是基于Fedora的,没有dpkg命令,因此可以使用bzip2和gzip将deb文件解压后将data目录中的相关脚本全部复制到/usr目录下的相应位置
使用
debootstrap
来重建目标文件系统结构debootstrap --arch mips64el bullseye /mnt/deb http://ftp.cn.debian.org/debian
将官方的内核模块复制到目标系统
cp -r /lib/modules /mnt/deb/lib/
挂载其他文件系统
mount /dev/sda1 /mnt/deb/boot #假设sda1为boot分区 mount /dev/sda2 /mnt/deb/home #假设sda2为home分区 mount --bind /sys /mnt/deb/sys mount --bind /proc /mnt/deb/proc mount --bind /dev /mnt/deb/dev
修改安装参数
chroot到目标环境
LANG=C.UTF-8 chroot /mnt/deb /bin/bash
修改root密码
passwd root
修改安装源
vi /etc/apt/sources.list
参考下面的配置修改
sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
更新源
apt-get update
通过网络安装
安装一些基本的软件
apt-get install wget openssh-server locales network-manager
安装grub2
apt-get install grub-common
安装内核
apt install linux-image-loongson-3 linux-headers-loongson-3 linux-libc-dev
安装驱动
apt-get install firmware-linux-free firmware-linux-nonfree
安装一些其他你需要使用的软件(例如nfs等等)
apt-get install <软件包名>
配置目标系统
修改目标系统配置
修改主机名
echo 'myhostname' > /etc/hostname vi /etc/hosts #将myhostname加到127.0.0.1 localhost之后
配置fstab
通过
blkid
来获得文件系统的UUIDblkid
执行命令可以得到类似下面的输出结果
/dev/sda1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" BLOCK_SIZE="4096" TYPE="ext3" PARTUUID="00000000-0000-0000-0000-000000000000" /dev/sda2: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00000000-0000-0000-0000-000000000000" /dev/sda3: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="swap" PARTUUID="00000000-0000-0000-0000-000000000000" /dev/sda5: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00000000-0000-0000-0000-000000000000"
修改
/etc/fstab
vi /etc/fstab
参考下面的配置修改
fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX / ext4 defaults,noatime 0 1 UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot ext4 defaults,noatime 0 2 UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /home ext4 defaults,noatime 0 2 UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none swap defaults 0 0
本地化配置
en_US.UTF-8
zh_CN.GB2312
zh_CN.GBK
zh_CN.GB18030
zh_CN.UTF-8
配置locales
dpkg-reconfigure locales
建议安装如下locales
建议选择
en_US.UTF-8
为默认的locales配置时区
dpkg-reconfigure tzdata
依次选择
Asia
和Shanghai
创建新用户
usermod -a -G sudo myuser
创建用户
useradd -m myuser usermod -s /bin/bash myuser passwd myuser
安装sudo
apt-get install sudo
将用户加入
sudo
组
重建启动项
安装initramfs-tools
apt-get install initramfs-tools
修改initramfs-tools配置只加载需要的模块
修改
initramfs.conf
vi /etc/initramfs-tools/initramfs.conf
找到一行
MODULES=most
配置,将其改成MODULES=dep
重新创建
initramfs
update-initramfs -k 5.10.0-25-loongson-3 -u -v
修改grub配置
vi /boot/grub.cfg
找到启动项的段落,参考下面的片段修改配置文件(倒数第四行起)set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msd$ else search --no-floppy --fs-uuid --set=root b6a3a91c-82b0-4ac6-ba62-19a9d4cf63c7 fi echo 'Loading Linux 5.10.0-25-loongson-3 ...' linux /vmlinuz-5.10.0-25-loongson-3 root=/dev/sda2 ro rhgb quiet loglevel=0.UTF-8 initrd /initrd.img-5.10.0-25-loongson-3 boot
重启测试
退出临时环境并重启
exit shutdown -r now
系统启动后检查内核和操作系统的版本信息
uname -a cat /etc/debian_version
一些为龙芯3A2000C移植编译的软件
前段时间我为龙芯3A2000C平台编译移植了一些软件,现在分享给大家。这些软件基于Debian 11操作系统,有些有一定的依赖关系,可能需要安装对应的软件包才能正常安装使用。
RetroArch / libretro的模拟器核心
官方没有针对mips64el架构编译核心,debian repo中也仅有少数几个,我编译/移植了大部分常见的模拟器核心,供大家尝试。其中PS1因为性能原因,在龙芯3A2000C平台只能呈现“幻灯片”模式,其他还比较流畅。
安装方法:
使用root权限将压缩包内的所有.so文件复制到 /usr/lib/mips64el-linux-gnuabi64/libretro/
重新启动RetroArch即可在Cores中看到这些核心
启动游戏选择合适的核心进行游玩
VICE – Commodore电脑模拟器
我编译了最新版本的VICE模拟器,可以模拟从Commodore PET到Commodore 128的几乎所有Commodore 8位电脑机型。基本可以在龙芯3A2000C平台流畅运行(模拟C64机型时,需要把声音模拟降低一些品质)。
OpenTTD 运输大亨
运输大亨游戏是一个开源的TTD游戏的重制版本,在原作上做了大量改进,并支持MOD,而且早已支持网络对战。我移植了最新的版本到龙芯3A2000C平台,进行了优化编译,目前可以非常流畅的运行。