龙芯 3A4000 安装 Debian stable

2022-01-17

2022-06-04 更新 v0.0.3

  • 版权声明:原创文章,未经博主允许不得转载

3A5000 开始,龙芯转向 loongarch ,新的架构虽然甩掉了历史包袱,但也需要一段时间来积累生态。在这半年多的时间里, loongnix20 loongarch64 进展飞速。如今龙芯的二进制翻译已经可以运行愤怒的小鸟等耳熟能详的游戏、PhotoShop CS6 等常用的 Windows 软件,而原生的(网页)微信和(第三方)qq 也为 loongarch 的日常使用加了一把劲。而 loongnix20 mips64el 这边则略显惨淡,已经有好几个月没有收到更新了,于是我不得不转向对龙芯 3A4000 及其之前的 cpu 支持改观巨大的 Debian 。

当然,当前 3A5000 因为没有支持而不能安装 Debian ,但是 Loongnix20 for Loongarch64 的很多包已经赶上或超过 Debian stable 。

上次提到,我们可以使用 debootstrap 获得一个根文件系统并以此为基础安装我们最终的 Debian 系统。由于内核不兼容,我们还可以通过替换内核包来解决这一问题。但是当时是从 Fedora28 上开始,如今 Fedora28 已经退出历史舞台,我们可以从 Loongnix20 mips64el 开始。另外, Debian 的内核现在可以跑地非常好。

由于 Loongnix20 本身是基于 Debian10 ,所以从 Loongnix20 开始还是有一些好处的。我本来想用 netboot ,这个是可以正常使用的,但是似乎需要 AMD 独显,而我手头的 AMD 独显恰好不能起来,所以还是简单直观 debootstrap 吧。另外,把文中的 stable 改为 sid ,即可安装 Debian sid ,因为它们的步骤是完全一样的。

关于 debootstrap 的具体情况参见 Debian Wiki

准备安装环境

准备 LiveCD

Loongnix20 的镜像可以从这里,直接下载,当前最新依然是 rc2 ,使用 Win32 Disk Imager 或者 dd 命令 写入你喜欢的U盘即可。

如果是 3A4000 之前的机器可能需要考虑一下U盘的兼容性问题。另外 3A3000 之前的机器似乎并不被 Loongnix20 支持,此时我们需要重新考虑使用 Fedora28 ,推荐 mate live 7.2 ,制作方法是一样的。

引导并安装 debootstrap

首先引导 LiveCD 进入桌面。

Loongnix20

Loongnix20 rc2 的镜像站地址是错误的,需要手动更改配置。

首先切换到 root 用户,密码为 loongson

$ su 

然后编辑 sources.list

# vim /etc/apt/sources.list

同步镜像并安装 debootstrap :

# apt-get update
# apt-get upgrade
# apt-get install debootstrap

如果没有磁盘分区工具可以安装一个:

# apt-get install gparted

Fedora28

更改 root 密码,后面可能会用到:

$ sudo passwd

直接同步镜像并安装 debootstrap :

$ sudo dnf upgrade
$ sudo dnf install debootstrap

如果没有磁盘分区工具可以安装一个:

$ sudo dnf install gparted

准备磁盘分区

分区请提前用 gparted 等图形化工具或更高级和灵活的命令行工具完成,下面所示是一个相对通用的分区示例,其中 /dev/sda1 为 boot 分区, /dev/sda2 为根目录, /dev/sda3 为 home 目录, /dev/sda4 作为交换分区:

# fdisk -l

Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: UNIC2 S100-480  
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
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Device         Start       End   Sectors  Size Type
/dev/sda1         34   2099199   2099166    1G EFI System
/dev/sda2    2099200 211814399 209715200  100G Linux filesystem
/dev/sda3  211814400 903874559 692060160  330G Linux filesystem
/dev/sda4  903874560 937703054  33828495 16.1G Linux swap

后面的操作提权到 root 进行:

$ su

LiveCD 的默认密码通常是 loongsonloongnix ,如果更改过 root 密码则使用修改后的密码。

挂载磁盘分区:

# mkdir /mnt/debian-stable
# mount /dev/sda2 /mnt/debian-stable

# mkdir /mnt/debian-stable/boot
# mkdir /mnt/debian-stable/home
# mount /dev/sda3 /mnt/debian-stable/home
# mount /dev/sda1 /mnt/debian-stable/boot

安装基本的操作系统

debootstrap

# debootstrap --arch mips64el stable /mnt/debian-stable http://ftp2.cn.debian.org/debian

挂载额外需要的目录

# mount --bind /sys /mnt/debian-stable/sys
# mount --bind /proc /mnt/debian-stable/proc
# mount --bind /dev /mnt/debian-stable/dev

拷贝 efi 引导

由于没有找到龙芯 mips64el 的 efi 属于哪个软件包(loongarch64 属于 grub-efi-loongarch64),所以我们直接拷贝 LiveCD 启动后 /boot 目录下的二进制到欲安装系统的 /boot 目录。

拷贝 /boot 中除 vmlinuz* 、 initrid.ima* 、 System.map* 、 config-* 外的文件:

# cp -r /boot/boot /mnt/debian-stable/boot/
# cp -r /boot/grub /mnt/debian-stable/boot/
# cp -r /boot/EFI /mnt/debian-stable/boot/
# cp /boot/boot.cfg /mnt/debian-stable/boot/
# cp /boot/grub.cfg /mnt/debian-stable/boot/
# cp /boot/grub.efi /mnt/debian-stable/boot/

chroot 到新的根目录

# chroot /mnt/debian-stable /bin/bash

设置 root 密码

# passwd root

加入 non-free 源

更改 /etc/apt/sources.list ,这里给出一个示例:

deb http://ftp2.cn.debian.org/debian stable main non-free

默认安装了 nano 和 vi 文本编辑器。

另外这里复制粘贴了 tuna 源对 bullseye 的完整配置

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

验证网络并刷新软件包缓存

# ping debian.com
# apt-get update

安装 grub2

# apt-get install grub-common

安装内核

Debian 的内核是可以直接用的,但是由于默认配置下所有内核模块全部都被打包在 initrd.img 中,导致体积过大,启动时出现 out of memory 或者直接卡死的情况,我们在后面会进行配置来减小其尺寸。(默认配置下,不安装图形界面时 initrd.img 大概有 25M ,安装图形界面后为 52M ,此时不能正常引导。)所以这里我们同时安装 Loongnix20 的内核,作为默认内核不能启动时的备份。

从 Loongnix20 的镜像下载 Loongnix20 的内核软件包并安装,如果有更新的请使用更新的:

其中 linux-kbuild 被 linux-headers 依赖,所以我们安装它们后可以用 apt-mark 把它设成自动安装。

# apt-get install wget
# mkdir /home/tmp
# cd /home/tmp
# wget <loongnix kernel package link>
# apt-get install ./<loongnix kernel package name>
# apt-mark auto linux-kbuild-4.19

安装 Debian 的默认内核:

# apt-get install linux-image-loongson-3

安装驱动。如果是 amd 独显,这步安装包含独显驱动:

# apt-get install firmware-linux-free firmware-linux-nonfree

配置 initramfs.conf 。我们需要将配置改成只包含需要的模块:

# vim /etc/initramfs-tools/initramfs.conf

找到一行 MODULES=most 配置,将其改成下面的:

MODULES=dep

重新生成 initrd.img :

# update-initramfs -k all -c

检查其生成的大小,应该小了不少。

最后手动更新 grub 配置,安装内核的时候其实会自动更新一次:

# grub-mkconfig -o /boot/EFI/BOOT/grub.cfg

配置 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" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="00000000-0000-0000-0000-000000000000"
/dev/sda4: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="swap" PARTUUID="00000000-0000-0000-0000-000000000000"

配置 fstab ,这里给出一个示例:

# UNCONFIGURED FSTAB FOR BASE SYSTEM
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /       ext4    defaults,noatime        0       1
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /boot   ext3    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

本地化

首先配置 locales ,该包默认未安装。

# apt-get install locales
# sudo dpkg-reconfigure locales

按提示选择需要的 locale ,如果是 tui 图形界面,则用空格取消或选中。这里提供一个示例:

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

确定后根据提示选择默认 locale ,选择中文:

zh_CN.UTF-8

再次确定,将自动完成配置。

然后配置时区:

# sudo dpkg-reconfigure tzdata

依次选择 AsiaShanghai

配置 hosts

查看你的 hostname :

# cat /etc/hostname

改变 hostname 可以参考 hostnamehostnamectl 命令。

如果为空,则默认 hostname 为 localhost ,这里设 hostname 为 loongson-pc , 在 /etc/hosts 中添加一条配置:

127.0.1.1       loongnix-pc.localdomain loongnix-pc

建立新用户

添加一个喜欢的用户, -m 选项为这个用户建立默认的用户目录:

# useradd -m myuser

我们默认这个新建立的用户名为 myuser

设置新用户的默认 shell :

# usermod -s /bin/bash myuser

设置密码:

# passwd myuser

安装 sudo

# apt-get install sudo

将前面建立的新用户加入 sudo 用户组:

# usermod -a -G sudo myuser

运行 visudo 可以看到默认的配置,其中部分摘录如下:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

可以看到 sudo 用户组是被允许运行 sudo 命令的。

重启系统

此时对基本操作系统的安装已经完成,可以重启进入新的 Debian 系统了。

其实也可以不重启,在 chroot 的环境里装,特别是使用 wifi 的情况下,在命令行界面配置相对复杂。如果不重启,直接跳到“安装图形界面”部分即可。

退出 chroot :

# exit

重启:

# reboot

重启后将进入到文本命令行的登陆界面,此时可以继续用 root 登陆,也可以用普通用户登陆。

登陆后检查网络。

有线联网

需要手动运行 dhcp :

# dhclient

Wifi

可以使用配置比较简单的 iwd ,注意它依赖 4.20+ 的内核,也就是说 Loongnix20 的内核(4.19)用不了。

# apt-get install iwd
# systemctl start iwd.service
# iwctl

安装图形界面

后面依然默认为 root 用户。

开箱即用的 KDE Plasma

# apt-get install task-kde-desktop

将安装包括 sddm 、 liberoffice 等配套的软件。

开箱即用的 MATE desktop environment

# apt-get install task-mate-desktop

将安装包括 lightdm 、 liberoffice 等配套的软件。

简洁的 KDE Plasma

如果不想装太多多余的自带软件,可以部分安装。

plasma-desktop 和 sddm 是基本的两个包, plasma-nm 则是网络管理:

# apt-get install plasma-desktop sddm plasma-nm

下面列举一些 plasma 上的必备软件:

  • dolphin 默认的文件管理器
  • konsole 默认的终端模拟器
  • okular 默认的文档查看器
  • ark 默认的压缩软件
  • kde-spectacle 默认的截图工具(当然 flameshot 也很棒)
  • kate 默认的文本编辑器(虽然通常是 kwrite)
  • kcalc 默认的小计算器
  • plasma-browser-integration 浏览器集成(需要浏览器安装同名插件)
  • phonon 媒体控制

安装所有:

# apt-get install dolphin konsole ark kde-spectacle kate kcalc plasma-browser-integration

phonon 是默认安装了的,它有两个后端,分别为 vlc 和 gstreamer 。默认安装的是 phonon4qt5-backend-vlc ,如果需要可以换成 phonon4qt5-backend-gstreamer :

# apt-get install phonon4qt5-backend-gstreamer
# apt-get remove phonon4qt5-backend-vlc

注意两者至少存在一个,所以先 install 后 remove 。

Cutefish

可以参考我的另一篇博客

重启

如果你在前面重启过一次了,可以通过 systemctl 启动相应的登陆管理器来登陆图形界面。

如果你能现在还在 chroot 环境,可以按照前面提到的方法退出 chroot 环境并重启进入到新安装的 Debian 上,顺利的话你应该能直接进入到图形界面并使用普通用户(而不是 root 用户)登陆了。如果默认内核无法启动请在 grub 界面选择 Loongnix20 的内核。

后面的内容请在图形界面下完成。

输入法

这里推荐 fcitx5 并以 KDE Plasma 为例,其他桌面可以参考 Wiki

安装 fcitx5

$ sudo apt-get fcitx5 fcitx5-pinyin kde-config-fcitx5 fcitx5-frontend-gtk2

kde-config-fcitx5 是和 KDE Plasma 配套的配置程序。

除了 fcitx5-frontend-gtk2 ,其他依赖的包应该都默认安装了。

设置默认输入法

Debian 使用 im-config 来配置默认输入法, im-config 依赖 zenity 并没有被默认安装,在终端运行 im-config 应该可以看到相关报错。

安装 zenity :

$ sudo apt-get install zenity

使用 im-config 配置:

$ im-config

选择 fcitx5 即可。

其他主题

Debian 还打包了一款主题:

$ sudo apt-get install fcitx5-material-color

可以从上游页面了解相关的信息。

如果有程序用不了输入法

可以运行下面的命令辅助查找问题所在:

$ fcitx5-diagnose

浏览器

龙芯浏览器

可以安装 lbrowser v3 ,无法安装 v2 (依赖关系不满足)。

这里下载最新 for mips 的 deb 包并手动安装即可。

Firefox

可以正常使用,性能不及 lbrowser 。

$ sudo apt-get install firefox-esr

如果有 amd 独显,可以强制打开硬件加速,不然比较难用。

强制使用硬件加速

打开 Firefox ,地址栏键入 about:config ,有警告接受即可。

根据 Mozilla Wiki ,搜索并修改下面几条设置,将其设为 true :

  • webgl.force-enabled
  • webgl.msaa-force
  • layers.acceleration.force-enabled

作用分别为:强制启用 WebGL 、强制启用 WebGL 抗锯齿、强制启用硬件渲染(无视黑名单/白名单)。由于黑名单/白名单的存在,即使在设置中启用了硬件加速, Firefox 也会在大部分情况用软件渲染。

设置完成后请重启 Firefox 。

WebGL Aquarium 是一个小测试,可以用来对比强制打开硬件加速前后的性能变化。

硬件解码

注意这里的硬件解码主要依赖的是 amd 的独显,硬解依赖的驱动 mesa-vdpau-drivers 通常已经默认安装了。

古老的 loongnix 显卡支持列表 附在这里(应该已经没啥参考价值了)。

如果没有默认安装:

$ sudo apt-get install mesa-vdpau-drivers

安装 vdpauinfo 和 vainfo 查看硬件编解码信息:

$ sudo apt-get install vdpauinfo vainfo
$ vdpauinfo
$ vainfo

安装 radeontop 查看显卡的使用情况:

$ sudo apt-get install radeontop
$ sudo radeontop

视频播放

vlc

$ sudo apt-get install vlc

smplayer

$ sudo apt-get install smplayer

设置硬解

找到设置中的 General 选项卡,在 General 中选择 Multimedia engine 为 mplayer ,在 Video 中选择 Output driver 为 vdpau 。

mpv

$ sudo apt-get install mpv

音乐播放

audacious

$ sudo apt-get install audacious

网易云音乐

可以使用 netease-cloud-music-gtk ,根据其 readme 自行编译即可,也可以下载我编译好的 deb 包

这个包不能在 loongnix20 上使用,如果需要在 loongnix20 上使用可以下载这个

Debian 安装:

$ sudo apt-get install ./netease-cloud-music-gtk_1.2.2_mips64el.deb

Loongnix20 安装:

$ sudo apt-get install ./netease-cloud-music-gtk_1.2.2_lnd_mips64el.deb

安装 osdlyrics 支持桌面歌词:

$ sudo apt-get install osdlyrics

由于缺少依赖包(好奇为啥会缺), osdlyrics 会无法启动,安装缺少的依赖包:

$ sudo apt-get install python3-chardet

启动 netease-cloud-music-gtk ,设置打开桌面歌词,播放音乐时再启动 osdlyrics 即可显示歌词。

即时通讯

icalingua

该项目已经不再维护,如果需要代码可以查看我的 fork ,可以在这里下载我保存的软件包,如果你也有保留它之前发布的软件包,也可以分享在评论区。另外可以考虑 Icalingua plus plus ,但是它并不提供 mips64el 和 loongarch64 体系结构的二进制。

icalingua 是一个基于 Electron 的超棒的第三方 QQ ,现在支持 loongnix20 (论坛已因不可抗力爆破),它在 Debian 也能很好地运行。

本项目希望为 Linux 打造一个会话前端框架,通过实现 Adapter 后端接口来适配各种聊天平台。目前已经拥有基于 oicq 以及 Icalingua 自有协议的后端

项目 release 下载 mips64el 架构的包,当前最新是 2.4.5 ,则选择 icalingua-2.4.5-mips64el.tar.xz 。

下面解压并安装之,后面提供一段示例,请根据实际情况具体修改。

解压并移动到自定义的位置:

$ tar xvf ./icalingua-2.4.5-mips64el.tar.xz
$ sudo mv ./icalingua-2.4.5-mips64el /opt/icalingua

在 2.4.5 版本中,此时二进制位置为 /opt/icalingua/electron ,图标位置为 /opt/icalingua/resources/app/dist/electron/static/icons/512x512.png

桌面图标将建立在 /usr/local/share/applications/ ,如果没有该目录需要创建该目录:

$ sudo mkdir /usr/local/share/applications
$ sudo touch /usr/local/share/applications/icalingua.desktop

根据作者的指导,可以得到 calingua.desktop 的内容如下:

[Desktop Entry]
Categories=chat;Network;
Exec=/opt/icalingua/electron %u
Icon=/opt/icalingua/resources/app/dist/electron/static/icons/512x512.png
Name=Icalingua
Comment=A Linux client for QQ and more
StartupNotify=true
Terminal=false
Type=Application

至此安装完成,可以点击图标使用了。

如果需要卸载,运行以下命令:

$ sudo rm /usr/local/share/applications/icalingua.desktop
$ sudo rm -r /opt/icalingua

微信 WeChat

参考 AUR 的打包,但是 mips64el 架构的版本似乎一直没有后续更新,所以版本落后 X86_64 非常多,但是还是可以用的。

可以使用我打包的版本:

适用于 Debian stable

适用于 Loongnix20

telegram

安装 telegram-desktop 一定到在 sources.list 里放上 backports 源,参考 tuna 源的完整配置,因为 main 里的版本实在太低了,是不能登陆的,你需要安装 backports 的版本。直接 apt-get install telegram-desktop 不知道为啥给我装了 main 里低版本的。

查看所有可用的版本:

$ apt-cache search telegram-desktop

Package: telegram-desktop
Version: 3.1.1+ds-1~bpo11+1
Installed-Size: 94864
Maintainer: Nicholas Guriev <guriev-ns@ya.ru>
Architecture: mips64el
...省略

Package: telegram-desktop
Version: 2.6.1+ds-1+deb11u1
Installed-Size: 86397
Maintainer: Nicholas Guriev <guriev-ns@ya.ru>
Architecture: mips64el
...省略

查看上面假设的输出,请安装版本高的,比如 3.1.1+ds-1~bpo11+1

$ sudo apt-get install telegram-desktop=3.1.1+ds-1~bpo11+1

QQ for linux

linuxqq,你用不用吧。

团队协作

飞书

飞书的 mips64el 版本可以直接在官网下载,其支持几乎所有的国产架构,非常好用。

办公套件

这部分就不多说了,直接 wps 。

直接从官网下载安装即可。

假设下载的安装包为 wps-office_11.1.0.10702_mips64el.deb :

$ sudo apt-get install ./wps-office_11.1.0.10702_mips64el.deb

还需要安装缺少的字体,字体从这里下载,双击每个文件安装即可。

蓝牙连接

蓝牙套件是随 KDE Plasma 默认依赖安装的,但是首次使用可能出现可以配对但无法连接的情况,因为 PulseAudio 有模块未载入:

$ pactl load-module module-bluetooth-discover

分区工具

KDE Partition Manager

KDE Partition Manager 是 KDE Plasma 默认的分区工具。

$ sudo apt-get install partitionmanager

GNOME Partition Editor

GParted 其实没啥好说的,应该是好多人在 Linux 上接触的第一个图形化分区工具。

$ sudo apt-get install gparted

Markdown 编辑器

不知道为啥 ghostwriter 没有,所以这里只能介绍 retext 。一个简洁的编辑器吧,反正就图个预览。本来 kate 也可以有预览,但是这个特性似乎没有打开。

$ sudo apt-get install retext

OBS Studio

可以正常使用,直接安装即可。偶现音频采集的故障,具体不知道如何解决。

$ sudo apt-get install obs-studio

JetBrains 全家桶

参见狗剩百科 ,这里就不再赘述了。

by SDUST weilinfox

posted @ 2022-01-17 16:28  桜風の狐  阅读(5015)  评论(5编辑  收藏  举报