[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
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内核指南。
对于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)
<*> 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选项也不是必需的,只在使用rp-pppoe并被配置成是使用核心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位的内核,在你安装完Gentoo并重启之后,你将需要emerge kgcc64。不过,我们并不推荐您运行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'
|
例如,要自动加载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
|
现在请从配置您的系统一章来继续您的安装。
[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|