龙芯 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 的默认密码通常是 loongson
或 loongnix
,如果更改过 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-image-4.19.0-13-loongson-3_4.19.190-rc2.lnd.1_mips64el.deb
- linux-headers-4.19.0-13-loongson-3_4.19.190-rc2.lnd.1_mips64el.deb
- linux-kbuild-4.19_4.19.190-rc2.lnd.1_mips64el.deb
其中 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
依次选择 Asia
和 Shanghai
。
配置 hosts
查看你的 hostname :
# cat /etc/hostname
改变 hostname 可以参考 hostname
和 hostnamectl
命令。
如果为空,则默认 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 非常多,但是还是可以用的。
可以使用我打包的版本:
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