Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356662
  • 博文数量: 120
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-11 17:50
文章分类

全部博文(120)

文章存档

2008年(120)

我的朋友

分类:

2008-04-03 15:25:56

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给其用户提供了几个可能的内核源码。你可以在中得到一个全面的有关列表和描述。

       对于我们已有的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,那你则应该读读。

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命令。不要忘了将""换成你刚编译的内核的版本:

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

# find /lib/modules// -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
阅读(716) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~