[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
7. 配置内核
内容:
7.a. 时区
您首先需要选择您自己的时区,这样可以让系统知道它的位置在哪里。您可以在/usr/share/zoneinfo中找到您所在的时区,然后把它复制到/etc/localtime。请不要使用/usr/share/zoneinfo/Etc/GMT*下的时区,因为它们“名不副实”。例如,GMT-8事实上是GMT+8区。
代码 1.1: 设置时区信息 |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. 安装源码
选择内核
Linux内核是所有发行版的核心。它位于用户程序和系统硬件之间。Gentoo提供给我们几个可选的内核源码。完整的清单参见Gentoo内核指南。
对于x86架构的系统来说,我们有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控制器……)被编译进内核而不是作为模块加入的。否则您的系统将完全不能启动。
现在选择正确的处理器类型:
代码 3.2: 选择正确的处理器类别 |
Processor type and features --->
(Athlon/Duron/K7) Processor family
|
现在进入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
|
如果您在使用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时才会用到它。
如果您需要它,请不要忘记在内核中包含对您的网卡的支持。
如果您拥有支持HyperThreading(tm)的Intel CPU,或者您有多个CPU,您需要
激活"Symmetric multi-processing support":
代码 3.5: 启用SMP支持 |
Processor type and features --->
[*] Symmetric multi-processing support
|
注意:
在多核心系统中,处理器的数目相当于核心的数目。
|
如果你有多于4GB的内存,你需要启用"High Memory Support (64G)"。
如果您使用USB输入装置(比如键盘或者鼠标)那么不要忘记支持它们:
代码 3.6: 启用USB接口的输入设备支持 |
Device Drivers --->
[*] HID Devices--->
<*> USB Human Interface Device (full HID) support
|
如果你想要对你的笔记本的PCMCIA支持,也不要忘了在系统中允许PCMCIA card bridge。
代码 3.7: 启用PCMCIA支持 |
Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->
PCCARD (PCMCIA/CardBus) support --->
<*> PCCard (PCMCIA/CardBus) support
<*> 16-bit PCMCIA support
[*] 32-bit CardBus support
--- PC-card bridges
<*> CardBus yenta-compatible bridge support (NEW)
<*> Cirrus PD6729 compatible bridge support (NEW)
<*> i82092 compatible bridge support (NEW)
<*> i82365 compatible bridge support (NEW)
<*> Databook TCIC host bridge support (NEW)
|
当您完成了内核配置之后,请点击编译与安装.
编译与安装
既然现在您的内核已经配置成功了,那么就是时候编译并且安装它了。退出配置界面并且开启编译进程:
代码 3.8: 编译内核 |
# make && make modules_install
|
当内核编译完成后,复制内核镜像到/boot。您可以给内核任意命名,然后记住它。因为在您配置您的系统引导程序的时候您需要用到它。记得用您内核的名字和版本来替代kernel-2.6.30-gentoo-r5。
代码 3.9: 安装内核 |
# cp arch/i386/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/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
|
现在请从配置您的系统一章来继续您的安装。
[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|