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

对于HPPA架构,我们有gentoo-sources

代码 2.1: 安装内核源码

# emerge gentoo-sources

当您查看/usr/src时,您将会看到一个叫做linux的符号链接指向您安装的内核源码。在我们这个例子中,安装的源码是hppa-sources-2.6.23-gentoo-r8。你的内核版本可能与此不同,请记得这一点。

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

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux -> linux-2.6.23-gentoo-r8

现在,我们开始配置和编译您的内核。您可以用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将不能正常运行或者根本不能运行)。

必须启用的选项

首先进入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)

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

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

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

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

如果你有HIL鼠标或键盘,不要忘记编译进对它们的支持。

代码 3.4: 启用HIL支持

Input core support --->
  [*] Keyboard support
  [*] Mouse support
  [*] Event interface support

如果你的HIL口上没有鼠标,只使用基本支持就可以了:

代码 3.5: 基本HIL支持

HIL support --->
  [*] HIL Keyboard (basic) support

不过如果你想要完整的HIL支持,请选中下面的选项:

代码 3.6: 完整的HIL支持

HIL support --->
  [*] HP System Device Controller i8042 Support
  [*] HIL MLC Support
  [*] HIL Keyboard (full) support
  [*] HIL Mouse & Pointer support

也请包括显示驱动支持:

代码 3.7: 显示驱动支持

Graphics support --->
  [*] Support for frame buffer devices
      [*] HP STI frame buffer device support
  Console display driver support --->
      [*] STI text console

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

编译与安装

重要: 如果你想编译一个64位的内核,你首先需要emergekgcc64。不过,我们并不推荐您运行64位内核。只有在这两种情况下你才需要运行64位内核,一是你有4G以上内存,二是你的服务器(比如A500)需要64位内核。

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

代码 3.8: 编译内核

# make && make modules_install

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

代码 3.9: 安装内核

# cp vmlinux /boot/<kernel-version>

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

7.d. 备选:使用genkernel

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

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

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

代码 4.1: 安装genkernel

# emerge genkernel

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

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

代码 4.2: 运行genkernel

# genkernel all

一旦genkernel运行完成,一个包括全部模块和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开发人员

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.