安装Debian unstable到清华同方L860-T1

简介

清华同方L860-T1笔记本电脑采用了龙芯3A4000处理器,7A1000桥片,没有独立显卡,因此在安装Debian Unstable时容易出现无法初始化图形界面的问题,本篇文章记录了本人从网络博客文章中学习如何自行安装Debian到龙芯处理器电脑的过程中积累的一些经验和做法。

准备工作

  • 拥有一台清华同方L860-T1笔记本电脑
  • 准备一个u盘
  • 拥有wifi网络或有线网络

    Debian 官方的安装包是不能在龙芯上直接使用的。所以,要使用一些其他的方法。

    方法四、DebootStrap
    该方法适用于 UEFI 启动,也适用于固件和 PMON 。文中以 UEFI 为范例。
    Debootstrap 是一个可以快速获得基本 Debian 系统的一个工具,可以将 Debootstrap 看作是一种特殊的安装工具。它不同于 Debian Installter , 不需要安装用的 CD/DVD ISO, 仅需连接到 Debian 软件仓库,软件仓库简介 (英文) . 无论你是否使用 Debian , 只要是任何的 Linux/GNU 发行版,例如 Fedora/Gentoo/Arch/OpenSUSE, 甚至是 Ubuntu , 均可运行 Debootstrap . 当然如果你正在使用 Ubuntu , 你一定到 Debian 的软件仓库下载一个 Debootstrap , 而不能使用 Ubuntu 自己的 debootstrap。

    准备启动优盘

    U盘的大小建议不小于32GB,不过这年头小U盘其实很难找到了。
    在windows电脑上使用Ventoy启动神器来制作启动u盘,在本人的建议下Ventoy支持了mips64el架构,按照软件说明制作即可。

    下载启动镜像

    本人使用UOS统信操作系统,下载地址在此
    选择统信UOS桌面专业版MIPS64el下载
    下载完成后放入u盘根目录即可。

    开始安装

    引导进入UOS安装界面

    将u盘插入电脑usb口,开机进入bios选择u盘启动
    重启后进入ventoy启动菜单,选择uos镜像文件
    进入uos启动菜单,选择install ...选项,即可引导进入安装界面。

    需要说明的是uos是没有专门的live模式的,我们这里进入安装模式,随后通过命令行界面进行操作。本人之所以选择uos镜像是因为他自带的源里有许多方便的小工具,实测运行起来也很稳定。比如银河麒麟的2107版镜像就无法在L860-T1上引导成功。

    进入命令行界面

    进入图形化安装界面后,按键盘Ctrl+Alt+F2(可能需要同时按住Fn键)切换到命令行界面。

    连接网络

    命令行界面会自动登陆uos用户,输入 sudo -i 进入root用户
    输入

nmcli dev wifi connect WIFI连接点名称 password WIFI密码

即可连上wifi。

如果连接上wifi后开始出现大量的调试信息,导致输入文字困难,可以使用dmesg -n 1命令来关闭带外日志输出

也可选择有线网络连接。

下载安装debootstrap包

wget http://ftp.cn.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.127_all.deb
apt install ./debootstrap_1.0.127_all.deb`

建立安装路径

mkdir /mnt/deb

磁盘分区

备份文件警告!
请务必在执行后续操作前,备份目标计算机上的所有重要文件!本人不会对您任何操作 / 误操作造成的损失负责!
parted /dev//dev/nvme0n1
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 300MiB
(parted) mkpart boot ext4 300MiB 1300MiB
(parted) mkpart root ext4 1300MiB 103700MiB
(parted) mkpart home ext4 103700MiB 236820MiB
(parted) mkpart swap 236820MiB 100%
(parted) set 1 boot on
(parted) quit

partprobe /dev/nvme0n1
mkfs.vfat -F 32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
mkfs.ext4 /dev/nvme0n1p4
mkswap /dev/nvme0n1p5

挂载必要位置

mount /dev/nvmen1p3 /mnt/deb

“/dev/nvmen1p3” 为新硬盘规划为根分区 “/” 的路径。

开始网络安装Debian根文件系统

debootstrap --arch mips64el unstable /mnt/deb http://ftp.cn.debian.org/debian

“/mnt/deb” 是刚才挂载的路径。“http://ftp.cn.debian.org/debian” 是镜像站的地址。

坐下来,等一等,喝杯咖啡,根文件系统就创建好了。

挂载更多必要位置

mount /dev/nvme0n1p4 /mnt/deb/home
mount /dev/nvme0n1p2 /mnt/deb/boot
mkdir -p /mnt/deb/boot/efi
mount /dev/nvme0n1p1 /mnt/deb/boot/efi
mount --bind /dev /mnt/deb/dev
mount -t devpts /devpts /mnt/deb/dev/pts
mount -t proc proc /mnt/deb/proc
mount -t sysfs sysfs /mnt/deb/sys
mount -t tmpfs tmpfs /mnt/deb/tmp

使用genfstab生成fstab文件

输入apt update更新软件列表
下载如下包

apt install arch-install-scripts

/etc/fstab 文件指定了系统启动时挂载文件目录的规则,需要仔细配置。

编写该文件,可以自己亲历亲为,仔细编写即可。但懒人有懒人的方法,不喜欢自己写这种配置文件,怕出错的话,也完全可以用 ArchLinux 团队提供的 genfstab 脚本,自动生成配置文件。刚才联网下载的arch-install-scripts就包含这个脚本。

使用 genfstab,需要在 LiveCD 操作系统中运行,且需要在运行前将 所有分区挂载到位。如果有 swap 分区的话,也需要确认已经启用。

使用命令swapon /dev/nvme0n1p5开启swap分区后执行

genfstab -U /mnt/deb

查看输出结果是否符合预期,如果符合,则再次运行

genfstab -U /mnt/deb > /mnt/deb/etc/fstab

将fstab文件写入正确路径。

但是本人在安装unstale时遇到一个问题,就是genfstab命令生成的文件中关于fat32分区挂载的参数中涉及cp936这个字符集,而unstable的locales配置里并没有zh_CN GB2312、zh_CN.GB18030 GB18030和zh_CN.GBK GBK这几个字符集,导致无法支持cp936这个字符集,从而会开机启动时挂载失败,要解决这个文件,需要手动修改fstab文件,将挂载参数的一大串直接改为defaluts即可。例如:

# /dev/nvme0n1p1
UUID=D7E1-BB08          /boot/efi     vfat          rw,relatime,fmask=0022,dmask=0022,codepage=936,iocharset=iso8859-1,shortname=mixed,errors=remount-ro    0 2

改为

# /dev/nvme0n1p1
UUID=D7E1-BB08          /boot/efi     vfat          defaults    0 2

拷贝必要启动文件

下载银河麒麟版的内核、模块和固件,龙芯内核和模块、xorg显示驱动到debian的home目录下

cd /mnt/deb/home

wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux-firmware/linux-firmware_1.201kylin1_all.deb

wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/linux-headers-5.4.18-53_5.4.18-53.42_all.deb
wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/linux-headers-5.4.18-53-generic_5.4.18-53.42_mips64el.deb
wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/linux-image-5.4.18-53-generic_5.4.18-53.42_mips64el.deb
wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/linux-modules-5.4.18-53-generic_5.4.18-53.42_mips64el.deb
wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/linux-modules-extra-5.4.18-53-generic_5.4.18-53.42_mips64el.deb
wget http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/c/crda/crda_3.18-1build1_mips64el.deb

wget http://ftp.loongnix.cn/os/loongnix/20/mips64el/pool/main/l/linux/linux-image-4.19.0-13-loongson-3_4.19.190-rc2.lnd.1_mips64el.deb

wget http://ftp.loongnix.cn/os/loongnix/20/mips64el/pool/main/l/linux/linux-headers-4.19.0-13-loongson-3_4.19.190-rc2.lnd.1_mips64el.deb

wget http://ftp.loongnix.cn/os/loongnix/20/mips64el/pool/main/l/linux/linux-kbuild-4.19_4.19.190-rc2.lnd.1_mips64el.deb

wget http://ftp.loongnix.cn/os/loongnix/20/mips64el/pool/main/x/xserver-xorg-video-loongson/xserver-xorg-video-loongson_0.2.0-2_mips64el.deb

其中,

  • linux-firmware_1.201kylin1_all.deb是银河麒麟提供的固件
  • linux-headers-5.4.18-53_5.4.18-53.42_all.deb
    、linux-headers-5.4.18-53-generic_5.4.18-53.42_mips64el.deb、linux-modules-5.4.18-53-generic_5.4.18-53.42_mips64el.deb、linux-modules-extra-5.4.18-53-generic_5.4.18-53.42_mips64el.deb是银河麒麟提供的内核模块文件
  • linux-image-5.4.18-53-generic_5.4.18-53.42_mips64el.deb是银河麒麟提供的内核
  • crda_3.18-1build1_mips64el.deb是linux-modules-extra-5.4.18-53-generic_5.4.18-53.42_mips64el.deb的依赖文件。
  • 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-headers-4.19.0-13-loongson-3_4.19.190-rc2.lnd.1_mips64el.deb的依赖文件
  • xserver-xorg-video-loongson/xserver-xorg-video-loongson_0.2.0-2_mips64el.deb是龙芯提供的桌面显示驱动

复制启动文件至 Debian 的分区。

cp -r /boot/efi/* /mnt/deb/boot/efi

chroot进入Debian系统

chroot /mnt/deb /bin/bash

安装必要的包

apt install grub-common locales tzdata initramfs-tools sudo

安装内核、模块和固件

apt install /home/*.deb

修复蓝牙无固件的bug

这里需要特殊说明的是在L860-T1上,wifi驱动可以正常识别,但蓝牙固件无法加载成功,后来发现是目录位置不同的问题,加上一句命令即可修复蓝牙缺少固件的问题。

ln -sf /lib/firmware/rtl_bt /lib/firmware/imc_bt

配置 initramfs.conf

我们需要将配置改成只包含需要的模块:
nano /etc/initramfs-tools/initramfs.conf
找到一行 MODULES=most 配置,将其改成下面的:
MODULES=dep

重新生成 initrd.img

update-initramfs -k all -c

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

生成grub菜单

最后手动更新 grub 配置,安装内核的时候其实会自动更新一次:
grub-mkconfig -o /boot/EFI/BOOT/grub.cfg

修改语言环境

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

  • en_US.UTF-8 UTF-8
  • zh_CN.UTF-8 UTF-8

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

  • zh_CN.UTF-8

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

注意这里的配置按键

  • 空格键 是 选择
  • TAB 键 是 切换
  • enter 键 (回车键) 是 确认

这里,粗心的人如果没看清楚界面上的使用说明,就会被小坑一把,如果直接按了回车键,就跳到了默认语言设置页面,导致配置中文失败。

配置时区

dpkg-reconfigure tzdata
依次选择 AsiaShanghai

配置 hosts

查看你的 hostname :
cat /etc/hostname
在UOS安装盘下,会默认为UOS,这里为了方便,本人把他改为了localhost
echo localhost > /etc/hostname
如果改为其他, 还需要在 /etc/hosts 中添加一条配置:
127.0.0.1 你的主机名.localdomain 你的主机名

建立用户

adduser 你的用户名
请输入 2 遍设置的密码。

按提示输入用户的其他信息。

Changing the user information for lio
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]

如果信息无误,输入 “Y”,结束。

如果需要再次设置密码,请执行以下命令。
passwd 你的用户名

设置sudo权限

usermod -a -G sudo 你的用户名

安装mate桌面环境

apt install task-mate-desktop
中间有可能暂停要求你同意某些事项,同意即可继续安装,这个安装东西较多,持续时间有点长,耐心等待一会儿就好了。

第一次重启

退出 chroot
exit

重启
reboot

拔出启动u盘
启动时选择 “Debian GNU/Linux”

如果需要选择内核版本,可以进入高级模式,选择对应内核启动,银河麒麟的5.4内核有drm驱动,文本界面比较流畅,龙芯的4.19内核有entxviv驱动,文本界面有点卡,蓝牙也有点bug,但是对即插即用网络打印机、扫描仪支持的特别好。视频播放性能上,4.19也比5.4要好一些。

如果不出问题,应该就可以进入图形登陆界面了。输入上面设置的用户名和密码,就可以登陆了。

进入桌面后联网

使用wifi或者有线联网。

安装必要软件

这部分比较繁琐,后头填坑。
下面讲讲我遇到的一些显示问题的解决方法:

修改默认显示驱动为softpipe

部分软件如微信,在系统llvmpipe图形驱动下工作不正常,软件界面会花屏到无法观看。需要手动将默认显示驱动更换为softpipe才行。具体方法如下:
终端中输入
sudo nano /etc/environment
增加以下系统变量

LIBGL_ALWAYS_SOFTWARE=true
GALLIUM_DRIVER=softpipe

ctrl+o并回车保存,ctrl+x关闭文件。重启计算机即可。

目前softpipe的性能很差,只能满足一般办公需要。对与没有独立显卡的L860-T1也是没有办法的事情,后期本人会再研究研究怎么更好的使用本本自带的LS7A1000桥片自带的GC1000显示芯片。后期填坑吧。

附录

配置retroarch

softepipe下,retroarch的默认配置性能非常低下,平均不到2帧,简直就是PPT。使用以下方法来提高性能。

  1. 进入Settings - Video - Output 修改 Video选项为vulkan;
  2. 返回上一层菜单,在Video下,将Threaded Video选项打开;
  3. 进入Synchronization,关闭Vertical Sync (VSync)选项。
    如此设置后,通过菜单退出retroarch后,在启动,即可获得菜单20帧左右,游戏60帧左右的性能了,可以愉快的Metal Slug啦!

配置SMplayer

  1. 选项 - 首选项 - 常规 - 多媒体引擎 选择 mpv
  2. 在视频选项卡下,选择输出驱动为x11,确定保存即可。
    可以获得姣好的视频播放性能。其他选项可能导致视频播放前屏幕黑屏。

参考文献:

  1. https://my.oschina.net/chipo/blog/3077050
  2. https://www.cnblogs.com/weilinfox/p/15813976.html
  3. https://www.dhao2001.com/2022/03/19/loongson-first-run-install-debian/