Gentoo Logo

[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


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内核指南

对于IA64架构的系统来说,我们将使用gentoo-sources(包含了一些增加了额外功能的补丁)。

现在使用emerge来安装内核源代码。

代码 2.1: 安装内核源码

# emerge gentoo-sources

当您查看/usr/src时,您将会看到一个叫做linux的符号链接指向您安装的内核源码。在我们这个例子中,安装的源码指向gentoo-sources-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

现在,我们开始配置和编译您的内核。您可以用genkernel来做这件事。这将会建立一个和安装光盘所用的内核类似的通用内核。不过我们将首先说明如何"手动"配置一个内核,因为这是优化您系统环境的最佳方法。

如果您希望手动配置您的内核,点击默认:手动配置。如果您希望使用genkernel,您可以阅读备选:使用genkernel

7.c. 默认:手动配置

介绍

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

然而,一件事情真的:在手动配置内核之前,您必须了解您的系统。您可以安装pciutils(emerge pciutils),用其中的lspci来了解您需要的大部分信息。您现在可以在chroot的环境中运行lspci。您可以忽略任何pcilib抛出的警告(类似于pcilib: cannot open/sys/bus/pci/devices)。此外,您也可以在非chroot的环境执行lspci。结果相同。您还可以运行lsmod来查看安装光盘使用了哪些内核模块(这也是个不错的提示,它可以教你该选择哪些模块)。

现在进入到您的内核目录并且执行make menuconfig。这将会启动一个基于ncureses的配置菜单。

代码 3.1: 调用menuconfig

# cd /usr/src/linux
# make menuconfig

您将会看到一些配置条目。首先我们将会列出一些您必须启用的选项(否则如果没有一些额外的改动Gentoo将不能正常运行或者根本不能运行)。

启用必须的选项

确保对于启动您的系统所必须的驱动(比如SCSI controller……)被编译内核而不是作为模块加入的。否则您的系统将完全不能启动。

现在选择正确的系统类别和处理器类型。如果你不清楚你拥有的IA64系统类别,那么DIG-compliant是个不错的默认选项。如果你在SGI系统上进行安装,确保你选择了SGI系统类别,否则你的内核会死锁并拒绝启动。

代码 3.2: 选择正确的系统类别

System type --->
  (根据你的系统进行更改)
  DIG-compliant
Processor type --->
  (根据你的系统进行更改)
  Itanium 2

现在进入File Systems并且选择您使用的文件系统。请不要把它们编译成模块,否则您的Gentoo系统将不能挂载您的分区。同时您也要启用Virtual memory/proc file system的支持。

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

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

(依照你系统的需要启用下面所列出的一个或是多个选项)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

(确保为EFI分区启用了VFAT支持)
DOS/FAT/NT Filesystems  --->
  <*> VFAT (Windows-95) fs support

如果您在使用PPPoE接入Internet或者您在使用拨号的调制解调器,在内核中您需要下面的选项:

代码 3.4: 选择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时才会用到它。

如果您需要它,请不要忘记在内核中包含对您的网卡的支持。

如果您拥有支持HyperThreading(tm)的Intel CPU,或者您有多CPU系统,您需要激活"Symmetric multi-processing support":

代码 3.5: 启用SMP支持

Processor type and features  --->
  [*] Symmetric multi-processing support

如果您使用USB输入装置(比如键盘或者鼠标)那么不要忘记支持它们:

代码 3.6: 启用USB接口的输入设备支持

Device Drivers --->
  [*] HID Devices --->
    <*>   USB Human Interface Device (full HID) support

当您完成了内核配置之后,请点击编译与安装

编译与安装

既然现在您的内核已经配置成功了,那么是时候编译并且安装它了。退出配置界面并且开启编译进程:

代码 3.7: 编译内核

# make && make modules_install

当内核编译完成后,复制内核映像到/boot。您可以给内核任意命名,然后记住它。因为在您配置系统引导程序的时候需要用到它。记住替代kernel-2.6.24-gentoo-r5用内核的名字和版本。

代码 3.8: 安装内核

# cp vmlinux.gz /boot/kernel-2.6.24-gentoo-r5

现在请从内核模块一节继续安装。

7.d. 备选:使用genkernel

如果您在阅读这部分,那么您选择了使用genkernel脚本来配置您自己的内核。

现在您的内核源码树已经安装了,是时候用genkernel脚本自动编译您的内核了。genkernel是使用类似安装光盘中的内核配置来配置内核的。这表明当您用genkernel建立内核时,您的系统在启动时候将会如同安装光盘那样识别您所有的硬件。因为genkernel不需要手动配置内核,所以它对于那些不想自己编译特定内核的用户来说是一个理想的解决方案。

现在让我们来看看如何使用genkernel吧。首先,安装genkernel:

代码 4.1: 安装genkernel

# emerge genkernel

现在执行genkernel all编译您的内核源码。请注意,genkernel编译出的内核支持几乎所有硬件,编译需要一段很长的时间!

注意: EVMS2或LVM2的用户可能需要在genkernel命令行上添加--evms2--lvm2

代码 4.2: 运行genkernel

# genkernel all

一旦genkernel运行完成,一个包括全部模块和initial root disk(initrd)的内核将被建立。在后面配置引导程序时我们将会用到这个内核和initrd。请记下内核和initrd的名字,因为您将在配置引导程序的时候用到他们。initrd将会在启动“真正”的系统前自动识别硬件(如同安装光盘一样)。

代码 4.3: 查看创建的内核映像名和initrd

# ls /boot/kernel* /boot/initramfs*

7.e. 内核模块

配置模块

您应该在/etc/modules.autoload.d/kernel-2.6中列出您需要自动加载的模块。如果您愿意,您也可以加上模块的选项。

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

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

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

例如,要自动加载3c59x.ko模块,编辑kernel-2.6文件然后写入模块的名字。

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

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

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

3c59x

现在请从配置您的系统一章来继续您的安装。


[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


打印

查看全部

更新于2009年 4月 15日

总结: Linux内核是任何一个发行版本的核心。这一章节将说明如何配置内核。

Sven Vermeulen
作者

Grant Goodyear
作者

Roy Marples
作者

Daniel Robbins
作者

Chris Houser
作者

Jerry Alexandratos
作者

Seemant Kulleen
Gentoo x86开发人员

Tavis Ormandy
Gentoo Alpha开发人员

Jason Huebel
Gentoo AMD64开发人员

Guy Martin
Gentoo HPPA开发人员

Tim Yamin
Gentoo IA64开发人员

Pieter Van den Abeele
Gentoo PPC开发人员

Joe Kallar
Gentoo SPARC开发人员

Mike Frysinger
Gentoo * 开发人员

John P. Davis
编辑

Pierre-Henri Jondot
编辑

Eric Stockbridge
编辑

Rajiv Manglani
编辑

Jungmin Seo
编辑

Stoyan Zhekov
编辑

Jared Hudson
编辑

Colin Morey
编辑

Jorge Paulo
编辑

Carl Anderson
编辑

Jon Portnoy
编辑

Zack Gilburd
编辑

Jack Morgan
编辑

Benny Chuang
编辑

Erwin
编辑

Joshua Kinard
编辑

Stuart Longland
编辑

Tobias Scherbaum
编辑

Xavier Neys
编辑

Joshua Saddler
编辑

Gerald J. Normandin Jr.
审校

Donnie Berkholz
审校

Ken Nowack
审校

Lars Weiler
投稿

张乐
译者

沈辰俊
译者

杨珂
译者

叶宝泰
译者

杨小广
译者

vivian.ye
译者

余雷
译者

陈永骥
译者

王国辉
译者

娄东斌
译者

贾震
译者

余鈺炜
译者

陈代焱
译者

范华
译者

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Edurium
Copyright 2001-2010 Gentoo Foundation, Inc. Questions, Comments? Contact us.