官网下载的 ISO 映像里不带 nonfree 的固件。直接把这个 ISO 写到 U 盘进行安装,可能导致安装过程中出现找不到网卡、阵列卡等硬件的驱动的错误。
写入硬盘镜像到 U 盘之后。去官网下载 nonfree 固件的压缩包,名字类似这样的 debian_9_stretch_20200209_firmware.tar.gz。下载下来压缩包的名字是 firmware.tar.gz。
把里面的文件解压到 U 盘的 firmware 文件夹下。之后按照正常步骤安装即可。
sudo apt install -y apt-transport-https
装好包以后就能支持 https 传输协议了。
DMS 模块无法加载:
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: firmware: failed to load i915/glk_dmc_ver1_04.bin (-2)
Jan 30 22:55:46 j4105 kernel: firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: Direct firmware load for i915/glk_dmc_ver1_04.bin failed with error -2
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/glk_dmc_ver1_04.bin. Disabling runtime power management.
Jan 30 22:55:46 j4105 kernel: i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
搜索 Debian 软件包的内容,可以找到 glk_dmc_ver1_04 这个文件在 firmware-misc-nonfree 包中。
apt install firmware-misc-nonfree
可以解决问题。
比较常见的是螃蟹网卡没有驱动的问题。
$ dmesg | grep firmware
[ 178.948233] r8169 0000:03:00.0: firmware: failed to load rtl_nic/rtl8168e-3.fw (-2)
[ 178.948252] r8169 0000:03:00.0: Direct firmware load for rtl_nic/rtl8168e-3.fw failed with error -2
[ 178.948257] r8169 0000:03:00.0 enp3s0: unable to load firmware patch rtl_nic/rtl8168e-3.fw (-2)
non-free 源中的 firmware-realtek 包里包含了多数螃蟹网卡的驱动,使用 apt search firmware-realtek
查看包的详细信息, Description 部分描述了包内都有哪些驱动。
如果这个包内包含的驱动和网卡型号符合, apt install firmware-realtek
安装后重启系统,网卡驱动就能正常加载了。
[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0xb2 (or later)
出现这个问题时,升级 BIOS 才是比较靠谱的做法。但在无法更新 BIOS 的时候,使用 apt install intel-microcode
(contrib 和 non-free 软件源内的包) 也可以更新 microcode,但重装系统之后 microcode 又回到了旧版。
安装系统用的 ISO 文件可作为本地软件源,在断网情况下提供部分软件的安装包。
执行 sudo mount -o loop </path/to/debian.iso> </path/to/mount_point>
挂载 ISO 文件。
执行 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
备份源列表。
然后 sudo vim /etc/apt/sources.list
加入如下内容:
deb [trusted=yes] file://</path/to/mount_point> <system_name>
apt 本地源配置完成。
先给个例子,清华大学的 Debian Buster 软件源会有如下内容:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
源码镜像一般不用,注释了也没有问题。
在使用网络软件源升级系统后,系统内部可能会留下一些不再有用的链接。
sudo symlinks -r /usr | grep dangling
查找 /usr 目录下不再有用的链接。
sudo symlinks -r -d /usr
删除 /usr 目录下不再有用的链接。
注意第 6 7 两行:
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
它表示使用 backports 源,即 反向移植 的内容。
据 Debian 官方说法,这个 backports 里的包多数来自于 Debian 的 testing 版本。少数来自于 unstable 版本。
这些软件包经过调整和重新编译后可以在 Debian 稳定版中使用,但依旧存在与其他属于 stable 版本的软件发生冲突的可能。
谨慎使用这个源吧。
官方源也有一类软件放在 <version_name>-proposed-updates
下。
Debian 大版本 release 后还有小版本的更新,比如 10.1, 10.2, 10.3 等,这些 release 被称为 point release 。
这个 proposed-updates 的目的是为下一次的 point release 做准备工作。
也就是说,软件包下一次 point release 要发布的更新先放在 proposed-updates 中,积累到一定的量之后正式发布 point release。
使用 proposed-updates 软件源可以提前更新下个小版本的软件,也就只对软件更新的早晚产生影响。
所以,这个源可用可不用。
dpkg -l | grep '<package_name>'
查看软件安装状态。
这时一般会出现有两个 (或者三个) 字母组成的 flag:
执行 sudo dpkg -i <package-file-name>.deb
完成安装。这里的 -i 表示 install。
执行 sudo dpkg -r <package-file-name>
移除软件包。
执行 dpkg -l | grep '<package-file-name>'
查看包安装状态。 rc 表示软件包已经删除 Remove,但配置文件 Config-file 还在。
执行 sudo dpkg -P <package-file-name>
彻底删除软件包。包括配置文件。
执行 sudo dpkg -l | grep "^rc" | awk '{print $2}' | xargs sudo dpkg -P
删除所有 rc 包的残余配置文件。
Linux 系统保存了所有发生事件的日志。可以参考最近安装软件包的日志。
grep " install " /var/log/apt/history.log
仅显示用 apt 命令安装的的程序,不会显示被依赖安装的软件包。grep " install " /var/log/dpkg.log
显示所有的软件安装包,包括最近安装的过程中所依赖的软件包。Debian 系系统在 /var/cache/apt/archives 中保留 deb 包的缓存文件。
sudo du -sh /var/cache/apt
查看当前缓存文件的空间占用情况。
sudo apt-get autoclean
清理过时的软件包。
sudo apt-get clean
移除所有 apt 缓存中的软件包。
上两条命令清理得不是非常干净,会残留 kb 级的缓存,但不过如果很久没清理的话,效果很好。
sudo apt-get autoremove
移除系统不再需要的依赖库和软件包。
被删除的这些包是为了满足某个包的依赖关系,被自动安装的,此时已不再需要。这条命令也会删除系统中的 linux 旧内核 (有更精确的操作方法,但是操作比较麻烦,这里略过)。
命令执行后,配置文件依旧在相应位置。
sudo apt-get autoremove --purge
可以同时清除软件包和软件的配置文件。
dpkg --list | grep "^rc"
查看残余的配置文件。结果是这样的:
mgz@albb:~$ dpkg --list | grep "^rc"
rc linux-image-4.19.0-10-amd64 4.19.132-1 amd64 Linux 4.19 for 64-bit PCs (signed)
rc linux-image-4.19.0-9-amd64 4.19.118-2+deb10u1 amd64 Linux 4.19 for 64-bit PCs (signed)
rc ntp 1:4.2.8p12+dfsg-4 amd64 Network Time Protocol daemon and utility programs
rc 表示软件包已经删除 R emove,但配置文件 C onfig-file 还在。
执行 sudo dpkg -l | grep "^rc" | awk '{print $2}' | xargs sudo dpkg -P
删除所有 rc 包的残余配置文件。