Gentoo Logo

网站首页

文档相关:

作者列表:

Daniel Robbins
Chief Architect

Sven Vermeulen
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Aron Griffis
Gentoo Alpha Developer

Brad House
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Hans Joanphan
Translator


[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]


7. 配置内核

内容列表:

7.a. 时区

       你首先需要选择你的时区,这样你的系统知道起所在位置。在/usr/share/zoneinfo里查看你的时区,然后使用ln做一个符号链接到/etc/localtime

代码 1: 设定时区信息

# ls /usr/share/zoneinfo
(假设你要使用GMT)
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime

7.b. 安装源码

选择一个内核

       各个发行版的核心部分就是linux内核。这是处于用户程序和系统硬件之间的一层。Gentoo给其用户提供了几个可能的内核源码。你可以在Gentoo内核指南中得到一个全面的有关列表和描述。

       对于我们已有的x86架构的系统,在其他内核当中,vanilla-sources(linux内核开发者用作开发的默认内核源码)、gentoo-sources(带很多增强性能补丁的内核源码)、gentoo-dev-sources(带增强性能补丁和改进的2.6版本的内核源码)、xfs-sources(带最新XFS支持的内核源码)、gs-sources(用作服务器的内核源码)、gaming-sources(优化改进游戏性能的内核源码)、development-sources(2.6版本的vanlla内核源码),……

       如果你使用的是对网络依赖很小的安装,你不可以选择所有的上述版本,因为我们只提供其中的一部分。如果是这种情况,你被限制而只能使用gentoo-sourcesvanilla-sourcesdevelopment-sourcesgentoo-dev-sources

       选择你的内核源码,并用emerge安装。

代码 2: 安装一个内核源码

# emerge gentoo-sources

       当你到/usr/src里看一下,你应该可以看到一个叫做linux/的符号链接指向你的内核源码:

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

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

       如果不是这样(比如,符号链接指向一个不同的内核源码),在继续之前改变这个符号链接:

代码 4: 改变内核源码的符号链接

# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.4.25-gentoo linux

       现在该到配置和编译你的内核源码的时候了。你可以使用genkernel来做,这个会编译出一个同liveCD相似的通用内核。我们先来解释一下“手动”配置,因为这是优化你的系统环境的最好方法。

       如果你要手动配置你的内核,现在我们就可以从默认:手动配置继续。如果你要使用genkernel,那你则应该读读另一个选择:使用genkernel

7.c. 默认:手动配置

介绍

       手动配置内核常常被看作是每个Linux用户最难的一课。然而事实并非如此,配置完几次内核后,你甚至都不记得这麻烦;)

       但是,有件事真的:在手动配置你的内核之前,你必须对你的系统很了解。大部分的信息可以通过查看/proc/pci里的内容收集到(如果可以也可用lspci)。你也可以运行lsmod来看看LiveCD使用的内核模块(这会给你选择启用模块时一个非常好的提示)。

       现在,进入你的内核源码所在文件夹,并执行make menuconfig。这会启动一个基于ncurses的配置菜单。

代码 5: 运用menuconfig

# cd /usr/src/linux
# make menuconfig

       你会看到几个配置选项。首先我们列出一些必须启用的选项(否则Gentoo不会运作,或者在没有其他办法下无法正常的运作)。

激活必须的选项

       首先,激活development and experimental code/drivers的使用。你需要这个,否则一些非常重要的代码/驱动无法显示出来:

代码 6: 选择experimental code/drivers

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

       确认是使用正确的处理器类型编译:

代码 7: 选择正确的处理器类型

Processor type and features --->
  Subarchitecture Type (PC Compatible) --->
  (根据你的系统改变)
  Processor family (Athlon/Duron/K7) --->

       现在,到File Systems里,选择你使用的文件系统的支持。不要将他们编译为模块,否则你的Gentoo系统无法挂载你的分区。另外,也选上Virtual memory/proc file system/dev file systemAutomatically mount at boot

代码 8: 选择必须的文件系统

File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   Automatically mount at boot

(除非你使用2.6内核,否则去掉下面这个)
  [ ] /dev/pts file system for Unix98 PTYs

(选择下面你系统所需的一个或多个的选项)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

注释: 2.6内核的用户将会在Pseudo filesystemsFile systems的一部分)里找到上面提到的一些选项。

       如果你使用PPPoE连接到因特网,或者你使用一个拨号的调制解调器,你将需要选中内核中的下面选项:

代码 9: 选择PPPoE所需的驱动

Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

注释: 2.6内核的用户将会在Networking suportDevice Drivers的一部分)中找到上面提到的选项。

       这两个压缩选项并什么害处,但也不是绝对的需要,选项PPP over Ethernet也是这样的,它可能只会在配置为内核模式的PPPoE时被rp-pppoe用到。

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

       如果你有一个支持多线程的Intel CPU,或者你有一个多CPU系统,你应该启用"Symmetric muti-processing support":

代码 10: 启用SMP支持

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

       如果你已经配置完内核,从编译和安装继续。

编译和安装

       既然你的内核已经配置完了,该到编译和安装它的时候了。退出配置,并运行make dep && make bzImage modules modules_install

代码 11: 编译内核

(对于2.4内核)
# make dep && make bzImage modules modules_install

(对于2.6内核)
# make && make modules_install

       内核编译完成后,将内核的镜像拷贝到/boot

代码 12: 安装内核

# cp arch/i386/boot/bzImage /boot/kernel-2.4.25-gentoo
# cp System.map /boot/System.map-2.4.25-gentoo

       将你的内核配置文件也拷贝到/boot也是很明智的,以防万一 :)

代码 13: 备份你的内核配置

# cp .config /boot/config-2.4.25-gentoo

       现在从安装不同的内核模块继续。

7.d. 另一个选择:使用genkernel

       如果你正在读这个章节,你已经选择使用我们的genkernel脚本来给你配置内核。

       既然你的内核源码树已经安装,可以用我们的genkernel脚本来为你自动编译一个内核。genkernel配置内核就同我们的LiveCD内核的配置几乎一样。这意味着你使用genkernel来编译你的内核,你的系统将会在启动时检测出你所有的硬件,这就同LiveCD一样。因为genkernel不需要任何内核手动配置,这对于一些不大适应编译自己内核的用户来说,是一个绝好的处理办法。

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

代码 14: 安装genkernel

# emerge genkernel

       现在,运行genkernel all来编译你的内核。这里我们要注意到,因为genkernel编译一个支持几乎所有硬件的内核,编译的完成将会占用很长的时间。

       注意到,如果你的boot分区没有使用ext2或者ext3作为文件系统,你需要用genkernel --menuconfig all来手动配置你的内核,并在内核加上你的文件系统的支持(不要编译为模块)。

代码 15: 运行genkernel

# genkernel all

       一旦genkernel完成,一个模块很全的内核和一个initial root disk(initrd)将会被创建。我们将在文档后面的配置启动程序时使用这个内核和initrd。在写启动程序的配置文件时,就直接写下这个内核和initrd的名字。initrd将会在机器启动后和“真实”系统启动前运行,执行硬件的自动检测(就同LiveCD一样)。

代码 16: 检查新创建的内核镜像和initrd的名字

# ls /boot/kernel* /boot/initrd*

       现在,让我们再来执行一个步骤--安装hotplug,使得我们的系统更像LiveCD。当initrd自动检测到系统启动需要的硬件时,hotplug会自动检测到其他所有的东西。安装和启用hotplug,输入以下命令:

代码 17: 安装和启用hotplug

# emerge hotplug
# rc-update add hotplug default

7.e. 安装不同的内核模块

安装额外的模块

       如果准确的话,你应该给你系统其他的硬件安装ebuilds。这里有一些你可以安装的内核相关的ebuilds:

Ebuild 目的 命令
nvidia-kernel 给XFree86提供NVIDIA图形加速 emerge nvidia-kernel
nforce-net NVIDIA NForce(2)主板集成的网卡 emerge nforce-net
nforce-audio NVIDIA NForce(2)主板集成的声卡 emerge nforce-audio
e100 Intel e100 Fast Ethernet Adapters emerge e100
e1000 Intel e1000 Gigabit Ethernet Adapters emerge e1000
emu10k1 Creative Sound Blaster Live!/Audigy支持 emerge emu10k1
ati-drivers 给XFree86提供ATI Radeon 8500+/FireGL图形加速 emerge ati-drivers
ati-drivers-extra ATI图形化工具 emerge ati-drivers-extra

       可能会意识到,其中的一些ebuilds会出现比较大的依赖性问题。为确认安装一个ebuilds需要什么软件包,可以使用emerge --pretend。比如,对于emu10k1软件包:

代码 18: 查看全面的软件包安装列表

# emerge --pretend emu10k1

       如果你不喜欢要安装的软件包,使用emerge --pretend --verbose来看看检查依赖性时所用的USE参数:

代码 19: 查看USE参数的使用

# emerge --pretend --verbose emu10k1
...
[ebuild  N    ] media-sound/aumix-2.8  +gpm +nls +gtk +gnome +alsa -gtk2

       在前面这个例子中,你可以看到,emu10k1的一个依赖的软件包(aumix)使用了gtkgnome这两个USE参数,而gtk(依赖于XFree)也得跟着一起编译。

       如果你不想所有的这些都被编译,取消所有的USE参数选择,如:

代码 20: 取消所有的USE参数来安装emu10k1

# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1

       如果你对所得的结果满意,去掉--pretend来开始安装emu10k1

配置模块

       你应该在/etc/modules.autoload.d/kernel-2.4(或者kernel-2.6)中列出你要自动加载的模块。如果你需要,也可以给这些模块添加额外的选项。

       查看所有已有的模块,可以运行下面的find命令。不要忘了将"<kernel version>"换成你刚编译的内核的版本:

代码 21: 查看所有已有的模块

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

       比如,为自动加载3c59x.o模块,编辑kernel-2.4或者kernel-2.6文件,并输入模块的名字。

代码 22: 编辑/etc/modules.autoload.d/kernel-2.4

(2.4内核的例子)
# nano -w /etc/modules.autoload.d/kernel-2.4

代码 23: /etc/modules.autoload.d/kernel-2.4 或者 kernel-2.6

3c59x

       现在运行modules-update来提交对/etc/modules.conf文件的修改:

代码 24: 运行modules-update

# modules-update

       从配置你的系统继续安装。


[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]


本文档内容按照Creative Commons - Attribution / Share Alike协议发布。