| 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 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内核指南中获得。
 
对基于sparc的系统我们有gentoo-sources(推荐使用的2.6内核源代码)。
 
下面的例子里我们来安装gentoo-sources。
 
| 代码 2.1: 安装内核源码 |  | 
# emerge gentoo-sources
 |  
当你看一看/usr/src的时候应该能看到一个名为linux的符号链接指向你的内核源代码。在这个例子中,安装好的内核源代码指向linux-2.6.20-r4。你的版本可能会不同,注意这一点。
 
| 代码 2.2: 查看内核源码符号链接 |  | 
# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root        12 Oct 13 11:04 /usr/src/linux -> linux-2.6.20-r4
 |  
现在到了配置和编译内核的时候了。 
 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将不会运行,或者在没有额外的微调时不能正常运转)。
 激活必需的选项 
首先,打开对开发和实验性质的代码或驱动。你需要这个,否则有些非常重要的代码或驱动将不会显示出来:
 
| 代码 3.2: 选择试验性的代码或驱动 |  | 
General setup --->
  [*] Prompt for development and/or incomplete code/drivers
 |  
现在到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)
  <*> Ext3 journalling file system support
  <*> Second extended fs support
 |  
如果你使用PPPoE来连接到Internet或者使用拨号的调制解调器,你需要在内核中启用以下选项:
 
| 代码 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需要。
 
选择打开正确的总线支持:
 
| 代码 3.5: 打开SBUS/UPA |  | 
Console drivers --->
  Frame-buffer support --->
    [*] SBUS and UPA framebuffers             
      [*] Creator/Creator3D support     
    [*] CGsix (GX,TurboGX) support      
 |  
理所当然你想OBP的支持
 
| 代码 3.6: 打开OBP支持 |  | 
Misc Linux/SPARC drivers --->
  [*]  /dev/openprom device support
 |  
你还需要特定的SCSI支持
 
| 代码 3.7: 打开特定的SCSI支持 |  | 
SCSI support --->
  SCSI low-level drivers --->
    <*> Sparc ESP Scsi Driver             
    <*> PTI Qlogic, ISP Driver            
    <*> SYM53C8XX Version 2 SCSI support  
 |  
为了支持你的网卡,选择下面的一个:
 
| 代码 3.8: 打开网络支持 |  | 
Network device support --->
  Ethernet (10 or 100Mbit) --->
    <*> Sun LANCE support                   
    <*> Sun Happy Meal 10/100baseT support  
    <*> DECchip Tulip (dc21x4x) PCI support 
  Ethernet (1000Mbit) --->
    <*> Broadcom Tigon3 support 
 |  
当你有一台4口以太网接口的机器(10/100或是10/100/1000)的端口顺序和使用Solaris的时候不一样。你可以用sys-apps/ethtool来检查端口连接状态。
 
当你配置完内核以后,继续编译和安装。无论如何,编译完内核以后,请检查它的大小:
 
| 代码 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 && make image modules_install
 |  
当内核编译完成后,拷贝内核镜像到/boot。记得替换<kernel-version>为你内核的实际版本。
 
| 代码 3.12: 安装内核 |  | 
# cp arch/sparc64/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'
 |  
比如,为了自动加载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
 |  
继续配置你的系统。
 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 本文档的内容遵循知识共享-署名-相同方式共享许可协议 |