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内核指南中获得。

对基于sparc的系统我们有gentoo-sources(推荐使用的2.6内核源代码)。

下面的例子里我们来安装gentoo-sources

代码 2.1: 安装内核源码

# emerge gentoo-sources

当你看一看/usr/src的时候应该能看到一个名为linux的符号链接指向你的内核源代码。在这个例子中,安装好的内核源代码指向linux-2.6.24-r5。你的版本可能会不同,注意这一点。

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

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

现在到了配置和编译内核的时候了。

7.c. 手工配置

介绍

手动配置内核经常被Linux使用者认为是最困难的步骤。事实并非如此——当您手动配置几次内核之后,您就不会再觉得它有多么难了。:)

不管怎么说,有一件事真的:当你开始手工配置内核的时候你必需要了解你的系统。绝大多数的信息可以用emerge来的pciutils(emerge pciutils)里的lspci来收集。你现在可以在chroot后的环境里使用lspci。你可以安全的忽略任何运行lspci所产生的pcilib警告(类似pcilib: cannot open/sys/bus/pci/devices)。或者你也可以在非chrooted的环境里运行lspci。结果是一样的。你也可以运行lsmod来查看安装光盘都加载了哪些内核模块( 这也是个不错的提示,它可以教你该选择哪些模块)。

现在进入你的内核源代码目录并执行make menuconfig。这将启动基于ncurses的配置菜单。

代码 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)

(选中一个或多个你系统需要的选项)
  <*> Ext3 journalling file system support
  <*> Second extended fs support

如果你使用PPPoE来连接到Internet或者使用拨号的调制解调器,你需要在内核中启用以下选项:

代码 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需要。

选择打开正确的总线支持:

代码 3.4: 打开SBUS/UPA

Console drivers --->
  Frame-buffer support --->
    [*] SBUS and UPA framebuffers             
      [*] Creator/Creator3D support     (仅对许多Ultras中使用的UPA槽适配器)
    [*] CGsix (GX,TurboGX) support      (仅对很多SPARCStations中使用的SBUS槽适配器)

理所当然你想OBP的支持

代码 3.5: 打开OBP支持

Misc Linux/SPARC drivers --->
  [*]  /dev/openprom device support

你还需要特定的SCSI支持

代码 3.6: 打开特定的SCSI支持

SCSI support --->
  SCSI low-level drivers --->
    <*> Sparc ESP Scsi Driver             (仅对SPARC ESP的板载SCSI适配器)
    <*> PTI Qlogic, ISP Driver            (仅对PTI或QLogic的SBUS SCSI控制器)
    <*> SYM53C8XX Version 2 SCSI support  (仅对Ultra 60的板载SCSI适配器)

为了支持你的网卡,选择下面的一个:

代码 3.7: 打开网络支持

Network device support --->
  Ethernet (10 or 100Mbit) --->
    <*> Sun LANCE support                   (仅对SPARCStation,比较旧的Ultra系统作为Sbus选项)
    <*> Sun Happy Meal 10/100baseT support  (仅对Ultra;同样支持PCI和Sbus上的"qfe")四口以太网)
    <*> DECchip Tulip (dc21x4x) PCI support (对于某些Netras,比如N1)
  Ethernet (1000Mbit) --->
    <*> Broadcom Tigon3 support (现代的Netra,Sun Fire机器)

当你有一台4口以太网接口的机器(10/100或是10/100/1000)的端口顺序和使用Solaris的时候不一样。你可以用sys-apps/ethtool来检查端口连接状态。

如果你正在使用qla2xxx磁盘控制器,你需要使用2.6.27或者更新的内核,并且你需要emerge sys-block/qla-fc-firmware。然后,执行make menuconfig并进入Device Drivers部分。你需要启用加载external firmware的支持。

代码 3.8: 启用external firmware

Device Drivers  --->
  Generic Driver Options  --->
  ()  External firmware blobs to build into the kernel binary
  ()  Firmware blobs root directory

把“External firmware blobs”设置为ql2200_fw.bin,并把“Firmware blobs root directory”设置为/lib/firmware

当你配置完内核以后,继续编译和安装。无论如何,编译完内核以后,请检查它的大小:

代码 3.9: 检查内核大小

# ls -lh vmlinux
-rw-r--r--    1 root     root         2.4M Oct 25 14:38 vmlinux

如果(未压缩)大小超过7.5MB,重新配置你的内核直到没有超过这些限制。把大多数的内核驱动都编译成模块是达到目的的一个办法。忽略这个将导致内核无法引导。

同样的,如果你的内核刚好有一点点大,你可以试试用strip命令来剥离:

代码 3.10: 剥离内核

# strip -R .comment -R .note vmlinux

编译和安装

选择你的内核已经配置好了,是时候编译和安装它了。退出配置然后开始编译:

代码 3.11: 编译内核

# make CROSS_COMPILE=sparc64-unknown-linux-gnu- && # make image modules_install

当内核编译完成后,拷贝内核镜像到/boot。记得替换<kernel-version>为你内核的实际版本。

代码 3.12: 安装内核

# cp arch/sparc/boot/image /boot/<kernel-version>

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

7.d. 内核模块

配置模块

您应该在/etc/modules.autoload.d/kernel-2.6中列出您需要自动加载的模块。如果您愿意,您也可以加上模块的选项。

要查看所有可用的模块,运行如下的find命令。不要忘记把“<kernel version>”替换成你刚编译好的内核版本:

代码 4.1: 查看所有可用的模块

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

例如,要自动加载3c59x.ko模块,编辑kernel-2.6文件然后写入模块的名字。

代码 4.2: 编辑/etc/modules.autoload.d/kernel-2.6

# nano -w /etc/modules.autoload.d/kernel-2.6

代码 4.3: /etc/modules.autoload.d/kernel-2.6

3c59x

现在请从配置您的系统一章来继续您的安装。


[ << ] [ < ] [ 主页 ] [ > ] [ >> ]


打印

查看全部

更新于2010年 1月 2日

总结: 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.