6.4. 加载缺失的固件

正如 第 2.2 节 “需要固件的设备” 里面所说,有些设备需要加载固件。大部分情况下,如果没有固件设备就无法工作;有时没有固件不会影响基本的功能,但增强功能就无法使用。

如果没有设备驱动程序所需的固件,debian-installer 将显示对话框要求加载缺失的固件。假如选取了选项,debian-installer 将扫描现有设备松散的固件文件或包含固件的软件包。如果搜索到,固件会被复制到正确的位置 (/lib/firmware),然后加载驱动程序模块。

[注意] 注意

具体哪些设备会被扫描和支持哪个文件系统,取决于系统的架构、安装方法和安装的阶段。特别是在安装的早期阶段,从 FAT 格式的 U 盘加载固件更容易成功。

假如了解设备毋需固件也可以工作,或者设备在安装时并不需要使用,您可以跳过加载固件。

在安装过程中,debian-installer 只提示装入的内核模块所需的固件。并不是所有的驱动程序都包含在 debian-installer中,特别是 radeon 没有包括在内,所以这说明一些设备的能力在安装开始前与安装结束后没有区别。结果,一些硬件没有能够用尽潜力。如果怀疑是这种情况的话,或者只是好奇,那么检查一下新引导的系统上 dmesg 命令的输出,并搜索 firmware

6.4.1. 准备介质

官方的安装映像不含商用的固件。这些固件通常是从移动介质,比如 U 盘来加载。另外,包含这些商用固件的非官方的安装映像位于 https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/。制作这种 U 盘(或者其他的介质,比如硬盘分区)时,固件文件或软件包必须放置在文件系统的根目录或者名为 /firmware 的目录下。推荐使用 FAT 文件系统,因为在安装过程的早期阶段它肯定能被支持。

大多数固件的压缩包和 zip 文件可以从这里获得:

下载对应版本的压缩包或 zip 文件,然后解压到介质的文件系统里面。

如果您需要的固件没有包含在压缩包里面,可以从档案库(non-free 部分)下载特定的固件。以下概要列出大多数固件软件包,但不保证完整,有些还是非固件软件包:

也可以复制单独的固件文件到介质。要求不严的固件还可以从已经安装的系统或硬件制造商那里获得。

6.4.2. 固件和安装好的系统

任何安装期间加载的固件会自动被复制到安装好的系统。多数情况下这可以保证需要固件的设备可以在系统重新启动之后正常工作。然而,如果安装好的系统运行在与安装程序不同的内核版本,有可能由于版本的偏差造成固件不能加载。

如果固件从一个固件软件包加载,debian-installer 会为安装好的系统也安装该软件包,并自动添加软件包仓库的 non-free 部分到 APT 的 sources.list。这样做的优点在于如果有固件的新版本存在会自动更新。

如果安装过程中跳过加载固件,相关的设备可能无法在安装好的系统中工作,直到手动安装好固件或软件包。

[注意] 注意

如果固件从不严格的固件文件加载,复制到安装好的系统的固件将不会自动更新,除非对应的固件软件包(如果有的话)在系统安装之后安装。

6.4.3. 完善已安装的系统

取决于安装方式,可能有某些必需的固件在安装时没有检测到,对应的固件不可用,或者您当时选择不安装某些固件。有些情况下,一次成功的安装仍然可能在重启后黑屏或者出现显示错误。如果出现这种情况,可以尝试以下的临时解决办法:

  • 在内核命令行中添加 nomodeset。这可能可以帮助系统进入到fallback graphics模式。

  • 使用 Ctrl+Alt+F2 组合键切换到 VT2,这可能可以提供一个可以使用的登录提示符。

一旦登录进了已安装的系统,遵循以下步骤可能可以自动检测缺失的固件,并启用它们:

  1. 安装 isenkram-cli 软件包。

  2. root用户运行 isenkram-autoinstall-firmware 命令。

通常,重启是保证各个内核模块已经正确初始化的最简单的方法;这在使用 nomodeset 参数作为临时措施以启动系统的情况下尤为重要。

[注意] 注意

安装固件软件包很可能需要启用软件仓库的 non-free 区。截至 Debian GNU/Linux 11.0,运行 isenkram-autoinstall-firmware 命令会自动完成该工作,这是通过创建一个指向通用镜像的专门文件(/etc/apt/sources.list.d/isenkram-autoinstall-firmware.list)实现的。