第 5 章 配置 Linux 内核

目录
5.1. 使用 LILO 配置 Linux 内核
5.2. 使用 GRUB 配置 Linux 内核
5.3. 使用 SYSLINUX 配置 Linux 内核

Linux 内核被配置为通过传递以下参数来选择控制台console参数。console参数可以重复给出,但每种控制台技术只能给出一次参数。所以console=tty0 console=lp0 console=ttyS0是可以接受的,但是console=ttyS0 console=ttyS1将不起作用。

当列出多个控制台时,输出将发送到所有控制台,输入将从最后列出的控制台获取。最后一个console是 Linux 用作/dev/console设备。

的语法在console参数在 图 5-1 中给出。

图 5-1. 内核console语法,以 EBNF 表示

console=ttyS<serial_port>[,<mode>]
console=tty<virtual_terminal>
console=lp<parallel_port>
console=ttyUSB[<usb_port>[,<mode>]

<serial_port>是串行端口的编号。这在 图 4-2 中定义,并在 第 2.2 节 中讨论。本 HOWTO 中的示例使用第一个串行端口,给出<serial_port>0,这反过来给出了内核参数console=ttyS0.

如果你在你的 Linux 安装中使用 devfs 设备文件系统,那么第一个串行端口的内核参数仍然是ttyS0,即使第一个串行设备不再被称为/dev/ttyS0而是/dev/ttys/0.

<mode>图 2-7 中定义,并在 第 2.3 节 中讨论。本 HOWTO 中的示例使用 9600 位/秒,1 个起始位,8 个数据位,无奇偶校验,1 个停止位,以及无 CTS/RTS 流控制,给出<mode>9600n8。当当前的内核流控制错误被纠正后,本 HOWTO 将再次推荐值9600n8r.

<usb_port>可以指定包含串行端口的 USB 加密狗的地址,以用作串行控制台。[1] 例如,串行端口console=ttyS0,9600n8当移动到 USB 串行加密狗时,将写成console=ttyUSB0,9600n8USB 子系统在启动过程中启动得相当晚,在 USB 子系统加载之前启动期间打印的控制台消息将会丢失。

如果没有console参数,内核将使用第一个虚拟终端,即/dev/tty0。键盘上的用户可以通过按 Ctrl-Alt-F1 来使用此虚拟终端。

如果你的计算机包含视频卡,那么我们建议你也将其配置为控制台。这可以通过内核参数来完成console=tty0.

对于同时具有视频卡和串行控制台(在标记为 "COM1:" 的端口中)的计算机,本 HOWTO 建议使用以下内核参数

图 5-2. 推荐的内核参数,带有视频卡的 PC

console=tty0 console=ttyS0,9600n8

内核消息将同时出现在第一个虚拟终端和串行端口上。来自 init 系统和系统日志记录器的消息将仅出现在第一个串行端口上。当查看连接的监视器时,这可能会有点令人困惑:机器似乎会启动然后挂起。不要惊慌,init 系统已经启动,但现在正在向串行端口打印消息,但屏幕上没有任何打印内容。如果配置了 getty,那么login提示符最终将出现在连接的监视器上。

对于没有视频卡的 PC,本 HOWTO 建议使用以下内核参数

图 5-3. 推荐的内核参数,没有视频卡的 PC

console=ttyS0,9600n8

这些参数由引导加载程序传递给启动内核。接下来,我们将配置你的 Linux 安装使用的引导加载程序,以传递console参数给内核。

注释

[1]

连接到 USB 加密狗的串行控制台仅在 Linux 内核版本 2.5.7 及更高版本中可用。2.5 系列内核是开发者内核,尚未准备好用于生产环境。