安装Debian 11到长城龙芯3A2000C平台

缘由

最近在小黄鱼看到有卖家在卖龙芯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内核已经很不错了!

2024/1/20更新:

根据不少朋友的需求,我制作了基本操作系统一键恢复的镜像,以便于大家简化安装,具体下载地址和安装方法请参考《适用于长城龙芯3A2000C的DEBIAN基础操作系统一键恢复镜像》

准备用于启动的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盘

安装初始操作系统

进入安装环境

  1. 开机后按Del键进入BIOS环境,将启动顺序配置为USB设备优先
  2. 插入U盘启动后,在Grub界面,选择第二个选项进入安装环境

安装系统

  1. 选择桌面的安装图标,按正常操作流程进行安装
  2. 文件系统创建时选择手动配置,建议参考如下方式进行配置:
    • /boot ,ext4分区,大小500M以上
    • /home ,ext4分区,可以存放用户以及备份数据
    • / ,ext4分区,建议大一些比较好
    • swap ,swap分区,建议为内存大小的1-2倍
  3. 正常安装完成后拔掉U盘,重启系统,确认下可以正常使用。当前系统的内核版本应该是3.10.x,版本较低

通过网络安装Debian 11

文件系统准备

  1. 再次通过U盘启动到安装环境,但这次不进行安装,打开终端。
  2. 创建临时环境的挂载点
    su
    mkdir /mnt/deb
    
  3. 挂载目标硬盘上的根文件系统
    mount /dev/sda5 /mnt/deb    #假设/dev/sda5为根文件系统
    
  4. 删除目标文件系统上的所有文件
    rm -rf /mnt/deb/*
    
  5. 通过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
      
  6. 将官方的内核模块复制到目标系统
    cp -r /lib/modules /mnt/deb/lib/
    
  7. 挂载其他文件系统
    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
    

修改安装参数

  1. chroot到目标环境
    LANG=C.UTF-8 chroot /mnt/deb /bin/bash
    
  2. 修改root密码
    passwd root
    
  3. 修改安装源
    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
    
  4. 更新源
    apt-get update
    

通过网络安装

  1. 安装一些基本的软件
    apt-get install wget openssh-server locales network-manager
    
  2. 安装grub2
    apt-get install grub-common
    
  3. 安装内核
    apt install linux-image-loongson-3 linux-headers-loongson-3 linux-libc-dev
    
  4. 安装驱动
    apt-get install firmware-linux-free firmware-linux-nonfree
    
  5. 安装一些其他你需要使用的软件(例如nfs等等)
    apt-get install <软件包名>
    

配置目标系统

修改目标系统配置

  1. 修改主机名
    echo 'myhostname' > /etc/hostname
    vi /etc/hosts           #将myhostname加到127.0.0.1 localhost之后
    
  2. 配置fstab
    • 通过 blkid 来获得文件系统的UUID
      blkid
      
      执行命令可以得到类似下面的输出结果
      /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
      
  3. 本地化配置
    • 配置locales

      dpkg-reconfigure locales
      

      建议安装如下locales

      • en_US.UTF-8
      • zh_CN.GB2312
      • zh_CN.GBK
      • zh_CN.GB18030
      • zh_CN.UTF-8

      建议选择 en_US.UTF-8 为默认的locales

    • 配置时区

      dpkg-reconfigure tzdata
      

      依次选择 AsiaShanghai

  4. 创建新用户
    • 创建用户
      useradd -m myuser
      usermod -s /bin/bash myuser
      passwd myuser
      
    • 安装sudo
      apt-get install sudo
      
    • 将用户加入 sudo
    usermod -a -G sudo myuser
    

重建启动项

  1. 安装initramfs-tools
    apt-get install initramfs-tools
    
  2. 修改initramfs-tools配置只加载需要的模块
    • 修改 initramfs.conf
      vi /etc/initramfs-tools/initramfs.conf
      
    • 找到一行 MODULES=most 配置,将其改成 MODULES=dep
  3. 重新创建 initramfs
    update-initramfs -k 5.10.0-25-loongson-3 -u -v
    
  4. 修改grub配置 vi /boot/grub.cfg 找到启动项的段落,参考下面的片段修改配置文件(倒数第四行起,注意:vmlinuz和initrd.img的文件名要和你系统中的一致,Debian的repo中的版本会更新,导致文件名版本号不一样。如果这里有问题,系统会无法启动。
        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 LANG=en_US.UTF-8
        initrd /initrd.img-5.10.0-25-loongson-3
        boot
    

重启测试

退出临时环境并重启

exit
shutdown -r now

系统启动后检查内核和操作系统的版本信息

uname -a
cat /etc/debian_version

2024/1/20更新:

根据不少朋友的需求,我制作了基本操作系统一键恢复的镜像,以便于大家简化安装,具体下载地址和安装方法请参考《适用于长城龙芯3A2000C的DEBIAN基础操作系统一键恢复镜像》

许可证

关于Debian的许可证信息,请查阅Debian官网的 许可证 页面。

免责说明

Debian Linux 以及XFCE桌面环境均为开源软件,基于GNU GPL许可证,且针对龙芯3A2000C平台的适配也为测试性工作。本人及任何相关方均不会对此系统的稳定运行及数据安全做出任何承诺。使用本系统出现的任何问题以及问题带来的相关衍生后果均与本人及相关方无关。请对重要数据做好备份。

28 thoughts on “安装Debian 11到长城龙芯3A2000C平台

  1. 我发现了个比较奇怪的情况,就是我在Debian 11上手动安装了6.1内核来启动,和您的情况一样都是卡在了initramfs,但是我发现,在这个情况下,ssh是可以连接进系统的,只是运行的非常的卡。

    感觉应该可以手动改一改东西让6.1内核跑起来,但是我不太清楚如何调试这些东西,想问一下您知道如何在这种情况下查看日志和调试吗

  2. 重建启动项 第4步那里我没有看到 vi /boot/grub.cfg 文件,是新建编辑吗?还是会到退出chroot编辑的

  3. 好复杂呀,请问大佬,有没有做好的镜像分发给小弟们,好让我等紧跟大佬的步伐?

  4. 我发一个大坑,就是手痒把BIOS里面-安全管理-属性设置-启用cache一致性设置为了否(默认为是),导致initrd 卡死不开机,后面改为默认是就可以开机了。我一直怀疑安装问题,都重装到ip被清华拉黑了,检测到频繁的二进制动作拒接服务。问题是原来loognix重启是可以进系统的,Debian不行。

  5. 银河麒麟V10-SP1-2303可以直接安装上的,内核版本5.4.18。加个独显(我用的是HD7450)后可以流畅播放在线视频,包括B站、好看、CCTV等,并且在1080p的屏幕上也能顺畅移动鼠标,基本可以满足普通办公需求:-)
    我还有个飞腾FT1500/4的机器,固件是昆仑3.0-desktop。怎么都装不上系统,银河麒麟V10-sp1 arm版、UOS7 arm版 都不行,U盘、移动硬盘都试过不行。启动时屏幕显示2行:Load uImage failded!\uImage Load u-boot-general.dtb failed!
    但是卖家送的硬盘上已经装好银河麒麟V4,启动、使用都正常,不知道怎么装上的……

  6. 请问大家有没遇到过debian 11启动时进不了xfce桌面?似乎是概率发生的,特点是在lightdm登录页面的时候鼠标会卡住,同时键盘可以正常用,但是输入密码并 enter后就会直接花屏。

    1. 再次补充一下这个问题,这个问题跟供电应该有些关系,我发现只要出现这个问题,可以把电源完全断开,再接一下就可以正常启动,并进入xfce,鼠标也正常。但又不是硬件问题,因为更换电源并不能解决。如果大家遇到,可以把电源插头重新插拔一下。我看日志找不出相关报错,期待高手能碰到并解决。

  7. 你好,我想问一下,只要我插上键盘,主板就不能通过自检,一直黑屏,请问有什么办法吗,我也是长城龙芯3a2000

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据