声明: 本手册已经被新版本代替了,不再被维护。

7. 配置内核

内容:

7.a. 时区

首先你需要选择你的时区以便系统知道在哪里。在/usr/share/zoneinfo里找到你的时区,然后拷到/etc/localtime。请不要使用/usr/share/zoneinfo/Etc/GMT*时区,因为它们的名字并不代表所列的时区。比方说,GMT-8实际上是GMT+8。

代码 1.1: 设置时区信息

# ls /usr/share/zoneinfo
(假设你想使用GMT)
# cp /usr/share/zoneinfo/GMT /etc/localtime

7.b. 安装源代码

选择内核

所有发行版构造的核心就是Linux内核。它的层次介于用户程序和系统硬件之间。Gentoo给它的用户提供了很多内核源代码。一个完整的说明列表可以从Gentoo内核指南中获得。

对基于sparc的系统我们有gentoo-sources(推荐使用的2.6内核源代码)。

下面的例子里我们来安装gentoo-sources

代码 2.1: 安装内核源码

# emerge gentoo-sources

注意: 如果你正在使用qla2xxx磁盘控制器,你需要emerge =vanilla-sources-2.6.16*不是gentoo-sources),因为自2.6.17内核开始不再支持此控制器。

当你看一看/usr/src的时候应该能看到一个名为linux的符号链接指向你的内核源代码。在这个例子中,安装好的内核源代码指向linux-2.6.24-r5。你的版本可能会不同,注意这一点。

代码 2.2: 查看内核源码符号链接

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root        12 Oct 13 11:04 /usr/src/linux -> linux-2.6.24-r5

现在到了配置和编译内核的时候了。

7.c. 手工配置

介绍

手动配置内核经常被Linux使用者认为是最困难的步骤。事实并非如此——当您手动配置几次内核之后,您就不会再觉得它有多么难了。:)

不管怎么说,有一件事真的:当你开始手工配置内核的时候你必需要了解你的系统。绝大多数的信息可以用emerge来的pciutils(emerge pciutils)里的lspci来收集。你现在可以在chroot后的环境里使用lspci。你可以安全的忽略任何运行lspci所产生的pcilib警告(类似pcilib: cannot open/sys/bus/pci/devices)。或者你也可以在非chrooted的环境里运行lspci。结果是一样的。你也可以运行lsmod来查看安装光盘都加载了哪些内核模块( 这也是个不错的提示,它可以教你该选择哪些模块)。

现在进入你的内核源代码目录并执行make menuconfig。这将启动基于ncurses的配置菜单。

代码 3.1: 调用menuconfig

# cd /usr/src/linux
# make menuconfig

映入眼帘的是很多配置部分。我们将先列出一些必需打开的选项(否则Gentoo将不会运行,或者在没有额外的微调时不能正常运转)。

激活必需的选项

首先到File Systems里选择你使用的文件系统的支持。不要把它们编成模块,不然Gentoo将无法挂载你的分区。Virtual memory/proc file system也选上:

代码 3.2: 选择必需的文件系统

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(选中一个或多个你系统需要的选项)
  <*> Ext3 journalling file system support
  <*> Second extended fs support

如果你使用PPPoE来连接到Internet或者使用拨号的调制解调器,你需要在内核中启用以下选项:

代码 3.3: 选择PPPoE所必需的驱动

Device Drivers --->
  Networking support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

这两个压缩选项并没有坏处但并不一定需要,PPP over Ethernet选项也是,它可能仅被ppp配置为内核方式的PPPoE需要。

选择打开正确的总线支持:

代码 3.4: 打开SBUS/UPA

Console drivers --->
  Frame-buffer support --->
    [*] SBUS and UPA framebuffers             
      [*] Creator/Creator3D support     (仅对许多Ultras中使用的UPA槽适配器)
    [*] CGsix (GX,TurboGX) support      (仅对很多SPARCStations中使用的SBUS槽适配器)

理所当然你想OBP的支持

代码 3.5: 打开OBP支持

Misc Linux/SPARC drivers --->
  [*]  /dev/openprom device support

你还需要特定的SCSI支持

代码 3.6: 打开特定的SCSI支持

SCSI support --->
  SCSI low-level drivers --->
    <*> Sparc ESP Scsi Driver             (仅对SPARC ESP的板载SCSI适配器)
    <*> PTI Qlogic, ISP Driver            (仅对PTI或QLogic的SBUS SCSI控制器)
    <*> SYM53C8XX Version 2 SCSI support  (仅对Ultra 60的板载SCSI适配器)

为了支持你的网卡,选择下面的一个:

代码 3.7: 打开网络支持

Network device support --->
  Ethernet (10 or 100Mbit) --->
    <*> Sun LANCE support                   (仅对SPARCStation,比较旧的Ultra系统作为Sbus选项)
    <*> Sun Happy Meal 10/100baseT support  (仅对Ultra;同样支持PCI和Sbus上的"qfe")四口以太网)
    <*> DECchip Tulip (dc21x4x) PCI support (对于某些Netras,比如N1)
  Ethernet (1000Mbit) --->
    <*> Broadcom Tigon3 support (现代的Netra,Sun Fire机器)

当你有一台4口以太网接口的机器(10/100或是10/100/1000)的端口顺序和使用Solaris的时候不一样。你可以用sys-apps/ethtool来检查端口连接状态。

当你配置完内核以后,继续编译和安装。无论如何,编译完内核以后,请检查它的大小:

代码 3.8: 检查内核大小

# ls -lh vmlinux
-rw-r--r--    1 root     root         2.4M Oct 25 14:38 vmlinux

如果(未压缩)大小超过7.5MB,重新配置你的内核直到没有超过这些限制。把大多数的内核驱动都编译成模块是达到目的的一个办法。忽略这个将导致内核无法引导。

同样的,如果你的内核刚好有一点点大,你可以试试用strip命令来剥离:

代码 3.9: 剥离内核

# strip -R .comment -R .note vmlinux

编译和安装

选择你的内核已经配置好了,是时候编译和安装它了。退出配置然后开始编译:

代码 3.10: 编译内核

# make CROSS_COMPILE=sparc64-unknown-linux-gnu- && # make image modules_install

当内核编译完成后,拷贝内核镜像到/boot。记得替换<kernel-version>为你内核的实际版本。

代码 3.11: 安装内核

# cp arch/sparc64/boot/image /boot/<kernel-version>

选择继续安装独立内核模块

7.d. 安装独立内核模块

配置模块

你应该在/etc/modules.autoload.d/kernel-2.6中列出想要自动加载的模块。如果你愿意也可以对模块添加额外的参数。

要查看所有可用的模块,运行如下的find命令。不要忘记把“<kernel version>”替换成你刚编译好的内核版本:

代码 4.1: 查看所有可用的模块

# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'

比如,为了自动加载3c59x.ko模块,编辑kernel-2.6并输入模块的名字。

代码 4.2: 编辑/etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6

代码 4.3: /etc/modules.autoload.d/kernel-2.6

3c59x

继续配置你的系统