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

对于AMD64架构的系统来说,我们有gentoo-sources(包含增加了额外功能的补丁)。

选择你的内核源代码并使用emerge来安装。

代码 2.1: 安装内核源码

# emerge gentoo-sources

当您查看/usr/src时,您将会看到一个叫做linux的符号链接指向您安装的内核源码。在我们这个例子中,安装的源码指向gentoo-sources-2.6.30-r5。您的版本可能有所不同,所以请你记住这一点。

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

# ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-2.6.30-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控制器……)被编译内核而不是作为模块加入的。否则您的系统将完全不能启动。

然后我们将精确的选择处理器类型。x86_64内核维护者强烈推荐用户打开MCE功能,这样他们能够得到任何硬件问题的通知。在x86_64中,这些错误并不是如同其他架构那样写入dmesg,而是写入/dev/mcelog。这需要安装app-admin/mcelog。如果你想运行32位程序,请一定选中IA32 Emulation。默认情况下,Gentoo将会安装一个multilib系统(可以同时执行32位和64位程序),所以很大可能你会需要这个选项。

代码 3.2: 选择处理器类型和特性

Processor type and features  --->
   [ ] Machine Check Exception
   [ ] Intel MCE Features
   [ ] AMD MCE Features
  Processor family (AMD-Opteron/Athlon64)  --->
    ( ) Opteron/Athlon64/Hammer/K8
    ( ) Intel P4 / older Netburst based Xeon
    ( ) Core 2/newer Xeon
    ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

现在进入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)

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

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

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

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

如果您有多个CPU或者一个多核心(e.g. AMD64 X2)系统,您应该激活 "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.30-gentoo-r5

代码 3.8: 安装内核

# cp arch/x86_64/boot/bzImage /boot/kernel-2.6.30-gentoo-r5

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

7.d. 备选:使用genkernel

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

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

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

代码 4.1: 安装genkernel

# emerge genkernel

然后,复制安装光盘上的内核配置文件到genkernel搜索配置文件的默认位置:

代码 4.2: 复制安装光盘的配置文件

# zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config

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

另外需要注意的是,如果您的启动分区没有使用ext2或者ext3文件系统,您必须使用genkernel --menuconfig all来手动配置您的内核,把您所使用的文件系统编译进内核。(不能编译为模块!)。EVMS2和LVM2的用户很可能也需要加上--evms2--lvm2参数。

代码 4.3: 运行genkernel

# genkernel all

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

代码 4.4: 查看内核和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

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


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


打印

查看全部

更新于2010年 1月 2日

总结: 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开发人员

Pieter Van den Abeele
Gentoo PPC开发人员

Joe Kallar
Gentoo SPARC开发人员

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
编辑

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.