Gentoo Linux 1.4 安装指南

原文更新:September 30, 2003
内容简介: These instructions step you through the process of installing Gentoo Linux 1.4, release version (not _rc versions). The Gentoo Linux installation process supports various installation approaches, depending upon how much of the system you want to custom-build from scratch.

1. 安装简介


 

       首先,如果你是个gentoo新手,欢迎你进入Gentoo Linux世界!Gentoo Linux 可以采取多种方法安装。如果你在寻找一种快捷安装方法,你可以使用预编译包安装,如果你想安装过程完全由自己来定义,你可以从源代码来编译你的Gentoo Linux。采用哪种方法完全取决于你。

       官方1.4发布版本的重要变化就是我们所提供的2CD的安装套装。这份套装你可以在The Gentoo Linux Store订购,或者访问我们的镜像站点下载 。我们现在提供的2CD安装套装支持x86 (486及以上),i686 (Pentium Pro, Pentium II, Athlon/Duron及以上), Pentium III, Pentium 4 and Athlon XP。想知道你所需要哪一种安装套装,请阅读store中每种产品的详细说明,说明中对各种CPU平台做了相关介绍。

       你可以在我们的镜像上下载各种LiveCD。其中x86平台的LiveCD位于releases/x86/1.4/livecd/子目录中。

       现在我们来看看安装套装中的内容:第一张CD(CD1)我们称作“Live CD 安装盘”,它是一张启动光盘,这意味着你可以直接将其放入CD驱动器来运行 Gentoo Linux。你可以使用这张光盘来把Gentoo Linux安装到你的硬盘中。除了内置启动环境之外,CD1包含了你快速安装Gentoo Linux所需的所有东西,甚至不需要网络连接。同时CD1中还包括了一些如重要的XFree X服务器组件等预编译的软件包。如果你有CD1的ISO镜像文件,命名时要在后面加上-cd1字样。

       与CD1不同,第二张CD(CD2)不能用来启动系统,CD2中包含大量系统所需的预编译软件包,如优化过的KDE,GNOME,OpenOffice,Mozilla, Evolution等。CD2不是必须的,主要是针对那些想简易快速安装Gentoo Linux的人设计的。CD2中所有的软件包在标准的单CPU平台下,如果要从源代码开始编译的话大约需要 36个小时。如果你有CD2的ISO镜像文件,命名时要在后面加上-cd2字样。

注释: 完整的Gentoo Linux安装光盘套装包含一套 Gentoo参考平台(Gentoo Reference Platform),它是一个包括了GNOME,KDE, Mozilla and OpenOffice的完整的预编译Gentoo Linux,。使用Gentoo Reference Platform ("GRP")来可以实现快速打包安装Gentoo Linux。 “原始编译(compile from source)”方法包含所有的安装功能和选项。设计GRP的的目的是为了让部分用户安装Gentoo Linux更为方便快速,而不需接触到Gentoo最为强大原始编译”安装模式。

       除了2CD安装套装以外,我们还提供一种称为“基本(basic)”的可启动系统的Live CD。系统启动后,你可以配置你的网络连接,然后从网络开始安装 Gentoo Linux。“basic”光盘的优势在于体积小所以其ISO文件更便于下载。如果你是个高级用户,并且具备较快的网络连接速度,想安装最新的 Gentoo Linux,那么这是你最佳的选择。如果你有“basic”Live CD的ISO镜像文件,命名时要在后面加上-basic字样。

       不管选择何种方法安装Gentoo Linux,你必须具备以下硬件条件:486以上处理器,至少64M内存(虽然Gentoo Linux可以在64M内存+64M交换空间下运行,但运行速度较慢)。

       如果你使用我们Live CD启动了系统,你可以选择几种安装方式。Gentoo Linux可以从三个"stage"压缩包文件中的一个开始安装。选择哪一个要看你的最终系统中自己编译的部分占多大比例。如果你选择stage1,你将需要bootstrap然后来自己建立系统;stage2压缩包文件通常是 stage1的“半成品”;stage3压缩包包含了一个已经编译好的Gentoo Linux基础系统。如果你对“GRP”安装方式感兴趣,你就应该选择stage3。

       如果你不采用GRP方式安装,那么应该选择 stage1,stage2和stage3中的哪一个呢? 下面的介绍应该能帮你做出选择。

       从stage1开始安装,你能够完全自定义和控制编译过程的优化设置来初始你的系统。这使得高级用户可以知道自己在做什么。这也是一个让你更多了解Gentoo Linux核心的方法。

       从stage2开始安装,你可以跳过bootstrap,这样你可以应用到我们特别为stage2做的各种优化设置。

       从stage3开始安装,你将可以快速地安装 Gentoo Llinux,这意味着你的系统将是我们为你所编译的(主要指比较完善的设置,较高的效率和稳定性)。Gentoo Linux的重要发布版本都有特别为stage3做的最佳优化,所以从stage3开始安装你将可以获得一个快速优化过的系统。

       如果你是第一次安装 Gentoo Linux, 请选择 stage3 压缩包,或基于 stage3 的GRP。

注释:高级用户: 如果你使用stage3安装,请不要修改/etc/make.conf中的 CHOST 设置值。如果必须修改,你应该从stage1开始编译你的而系统和需要的 CHOST 设置。CHOST的设置一般应该象这样:i686-pc-linux-gnu。

重要: 如果你在安装过程中遇到问题,而且愿意报告错误(BUG)的话,请访问http://bugs.gentoo.org。如果这个错误需要返回到开发者(比如KDE开发组)Gentoo Linux Developers会为你发送。

注释: Live CD安装指南也许已经过期,查看最新文档请访问:http://www.gentoo.org/doc/en/gentoo-x86-install.xml

       现在,让我们概括一下安装过程。首先,我们要下载、刻录一张LiveCD。然后用它开机启动到有一个root提示(prompt),接下来我们要建立硬盘分区和文件系统,释放stage1、stage2或stage3压缩包。如果使用stage1或stage2开始,我们必须一步一步进行直到stage3。当系统达到stage3状态,我们要进行必要的设置(设定相关配置文件,安装一个启动程序等等),重启之后我们将有一个具备基本功能的Gentoo Linux 系统。当你的基本系统正常运转之后,你可以用我们提供的2CD安装套装中的“CD2”来安装你需要的预编译的软件包,如KDE,GNOME,OpenOffice ,Mozilla等。

       根据你选择的安装方式,下面是各种方式一个对照:

Stage压缩包是否需要网络连接所需安装介质步骤
1basic 或 CD 1硬盘分区/建立文件系统, emerge sync, bootstrap, emerge system, 最后设置
2basic 或 CD 1硬盘分区/建立文件系统, emerge sync, emerge system, 最后设置
3如果使用CD1不需要,其它则需要basic 或 CD 1硬盘分区/建立文件系统, emerge sync (使用 CD 1则不需要), 最后设置
3+GRPCD 1, CD 2 可选硬盘分区/建立文件系统, 最后设置, 安装CD1上的软件包 (可选), 重启, 安装其它如 KDE,GNOME等软件包(使用 CD2)

注释: ATA RAID硬件用户开始安装前需阅读本文档尾部的关于ATA RAID说明。

2. 启动


 

警告: 开始前需认真阅读本节,特别是启动参数。否则可能导致误设键盘、无法启动 pcmcia 服务等...

       使用LiveCD启动机器后,你会看到一个漂亮的 Gentoo 图示。这时你可以按下 Enter 键来开启安装进程,或使用LiveCD的自定义启动参数然后按下 Enter 键。如:gentoo nousb nohotplug。如果你的机器有一个以上的处理器("SMP"),你应该在提示符下键入smp而不是gentoo。这样 LiveCD 就可以检测到你所有的CPU,而不仅仅是第一个。

       参考下表了解可用的内核参数和选项,或者按 F2、F3查询帮助。

可用内核说明
gentoo标准Gentoo内核 (默认值)
nofb关闭framebuffer模式
smp在noframebuffer模式下载入smp内核
acpi开启acpi + 初始过程加载 acpi 模块
memtest启动时开启内存检测程序
可用启动选项说明
doataraid从 initrd 装载 ide raid 模块
dofirewire从 initrd 装载 firewire 模块 (适用于 firewire cdroms,等.)
dokeymap启用 non-us 键盘布局映射
dopcmcia启用 pcmcia 服务
doscsi检测 scsi 设备 (可能对某些网卡造成损害)
noapm关闭 apm 模块
nodetect禁止 hwsetup/kudzu 以及 hotplug 程序运行
nodhcp关闭 DHCP
nohotplug关闭 hotplug 服务
noraid关闭 evms 模块
nousb关闭从 initrd 装载 USB 模块,禁止 hotplug
ide=nodma强制关闭无法使用的IDE设备的DMA
cdcache缓存光盘中的数据到内存。这可能需要占用40M内存,但这样你可以卸载/mnt/cdrom 来挂载其它光盘。

       当你按下 Enter 键,你会看到一个更漂亮的启动界面和一个进度条。

       启动进程完成后,你会自动登录为“root”,最高权限用户。你会看到一个 root 终端提示符(“#”) ,同时你可以通过按 Alt-F2,Alt-F3及Alt-F4来切换到其它终端界面。返回第一个终端请按Alt-F1。

注释:高级用户: 当 LiveCD 启动后,出于安全原因,root的登录密码是随机设定的,如果你要使用sshd来进行远程登录LiveCD,你必须键入passwd,根据提示来重新设定 Live CD 的 root 登录密码,否则你将无法通过网络远程登录 LiveCD。

       你应该也注意到 # 上方有一些说明文字, 这些文字将告诉你如何设定你的网络连接以及光盘里 Gentoo Linux Stage 压缩包和其它软件包的位置。

3. 选择性硬件设置


 

       当Live CD启动时,它会尝试检测你的所有硬件并装载相应的内核模块。大部分情况下,它可以做得很好,但某些情况下,它可能会漏掉一些你需要的模块。如果 PCI自动检测错过了一些系统硬件,你必须手动装载相应的内核模块。如要查看所有支持的网卡模块,键入 ls /lib/modules/`uname -r`/kernel/drivers/net/*,装载某个模块键入:

代码 3.1: PCI 模块设置

# modprobe pcnet32(替换 pcnet32 为你的网卡模块名)

       如果你正使用某些未被检测到的 SCSI 硬件,你需要从/lib/modules中装载相应模块,方法如下:

代码 3.2: 装载 SCSI 模块

# modprobe aic7xxx(替换 aic7xxx 为你的 SCSI 适配器模块名)
# modprobe sd_mod(sd_mod 是模块支持的 SCSI disk磁盘)

注释: SCSI 光盘驱动器和硬盘已在内核里支持

注释:高级用户: Gentoo LiveCD 默认已经开启硬盘 DMA 模式以加快硬盘数据传输速度,如果没有,你可以使用 hdparm 命令来开启硬盘 DMA,方法如下:

代码 3: 设置 DMA

(替换 hdX 为你的硬盘标识)
# hdparm -d 1 /dev/hdX(开启 DMA)
# hdparm -d1 -A1 -m16 -u1 -a64 /dev/hdX(开启 DMA 和其它增强选项)
# hdparm -X66 /dev/hdX(强制使用 Ultra-DMA -- 危险 -- 可能破坏硬盘数据)

4. 选择性网络设置


 

或许系统已经设置好了? 

       如果你的系统有一个网卡,很可能网络已经自动设置好了。如果是这样,你就可以使用LiveCD上提供的如 ssh,scp, ping, irssi, wget 和 links等网络工具了。

       如果网络设置完毕,可以使用/sbin/ifconfig命令来查看除 lo 以外的网络接口,比如 eth0 :

代码 4.1: 用 /sbin/ifconfig 查看工作中的网络接口

eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 

       你应该尝试 ping 一下你的ISP的DNS服务器(地址可以在/etc/resolv.conf找到)或是你喜欢的其它网站,以确认你的系统已经正常连接到网络,域名解析工作正常等等..

代码 4.2: 进一步的网络测试

# ping -c 3 www.yahoo.com

       那么你的网络设置好了吗?如果是的,你可以跳过本节下面的部分。

PPPoE 设置 

       如果你使用 PPPoE 来连接到网络,LiveCD(任何版本)都已内置了一个rp-pppoe工具来帮你实现。你要做的就是使用adsl-setup脚本来配置你的连接。你必须提供连接到 ADSL Modem 的网络接口、帐户名和密码、DNS的IP地址以及是否需要设置防火墙。

代码 4.3: 配置 PPPoE

#  adsl-setup 
#  adsl-start 

       如果发生错误,请仔细检查/etc/ppp/pap-secrets中的帐户名和密码,以及/etc/ppp/chap-secrets 中设定的网络接口是否正确。

自动网络设置  

       如果网络没有自动设置好,最简单的方法就是运行net-setup script:

代码 4.4: 网络设置脚本

# net-setup eth0

       当然,如果你高兴,你可以手动设置网络,下面将教你如何做:

手动配置动态IP(DHCP) 

       设置 DHCP 非常简单,如果你使用静态IP,请跳到下面静态IP设置部分。

代码 4.5: DHCP 设置

# dhcpcd eth0

注释: 某些 ISP 需要提供主机名(hostname),如果需要,请在上面命令后加上-h 你的主机名参数。

       如果你看到 dhcpConfig 警告, 别紧张,请跳至下面网络测试部分。

手动设置静态IP 

       我们只需要设置网络能够让我们下载系统构件所需的源代码,Localhost界面就可以了。下表是需要设置的参数以及说明。

参数说明示例值
IP地址你的网卡必须指定一个IP地址192.168.1.2
广播地址(Broadcast)向这个网络上的其它主机广播你的IP地址192.168.1.255
子网掩码(Netmask))子网掩码配合IP地址使用同一网络,以方便查询你的IP地址是在哪个网络里面,便于辨认主机255.255.255.0
网关(Gateway)用于转发你的的IP地址封包到本地网络以外的地方(通常用于 Internet 共享)192.168.1.1

       键入一下命令, 替换 $IFACE为你的网络接口 (通常为 eth0), 替换$IPNUM 为你的IP地址, 替换$BCAST 为你的广播地址,替换 $NMASK 为你的子网掩码。对于route 命令,替换 $GTWAY 为你的默认网关地址。

代码 4.6: 静态 IP 设置

# ifconfig $IFACE $IPNUM broadcast $BCAST netmask $NMASK
# route add -net default gw $GTWAY netmask 0.0.0.0 metric 1 $IFACE

       接下来我我们来建立/etc/resolv.conf文件,用来解析域名(用域名来定位 Web/FTP 服务器而不是用IP地址)。你可以使用nano -w /etc/resolv.conf来创建/etc/resolv.conf。 nano 是一个小巧易用的文本编辑器。

       下面是一个 /etc/resolv.conf文件范例:

代码 4.7: /etc/resolv.conf 范例

domain mydomain.com
nameserver 10.0.0.1
nameserver 10.0.0.2

       替换10.0.0.1 和 10.0.0.2 为你的主DNS和辅DNS地址。

代理服务器设置 

       如果你必须使用代理服务器,你必须在开始前先设置你的代理服务器环境变量:

代码 4.8: 设置代理服务器

HTTP 代理服务器:
# export http_proxy="http://machine.company.com:1234"FTP 代理服务器:
# export ftp_proxy="ftp://machine.company.com"RSYNC 代理服务器:
# export RSYNC_PROXY="rsync://machine.company.com"

网络设置完成! 

       到此,网络应该已经设置完毕了。你可以使用内置的ssh, scp, links, irssi 和 wget 命令连接到网络。

5. 设置系统日期和时间


 

       现在你需要使用date命令设置系统的日期和时间。

代码 5.1: 设置系统日期

# date
Thu Feb 27 09:04:42 CST 2003
(如果日期有误,使用下面的命令来设置)
# date 022709042003(日期格式:月日时分年)

6. 文件系统、硬盘分区和区块设备


 

区块设备简介 

       这个部分,我们将仔细介绍一下Gentoo Linux和大部分Linux有关磁盘、Linux 文件系统、硬盘分区以及区块设备的概念。一旦你熟悉了这部分内容,你就可以进入下面硬盘分区和建立文件系统安装部分。

       我们将以”区块设备“开始。最有名的区块设备恐怕就是Linux系统中的第一个IDE设备了:

代码 6.1: /dev/hda, 代表你系统中的第一个IDE设备

/dev/hda

       如果你的系统使用的是SCSI硬盘, 那么你的第一个SCSI设备就是:

代码 6.2: /dev/sda, 代表你系统中的第一个SCSI设备

/dev/sda

       以上的区块设备代表连接磁盘的界面。用户程序可以访问磁盘而不用关心你的硬盘是IDE、SCSI还是其它类型。程序将随机读取512-byte区块镜像简单磁盘存取。

硬盘分区和 fdisk 

       Linux下,我们使用mkfs (或者 mke2fs, mkreiserfs, 等.)命令后面接上设备名来创建文件系统。

       当然,你可以将整个硬盘来作为一个分区,例如/dev/hda或/dev/sda,但实际上没人这样做。一般情况下,我们将硬盘划分成几个小一点的分区,我们称之为“partitions”。我们使用fdisk这个工具来划分分区并指定其大小。

       我们也用 fdisk来查看分区表,所以我们要指定一个硬盘设备给它作为参数:

注释: 除了“fdisk”以外,还有cfdisk、parted 和 partimage可以用来分区。我们建议使用fdisk,因为它是 Unix/Linux 世界里最知名的强大分区工具。

代码 6.3: 运行 fdisk

# fdisk /dev/hda

       或者

代码 6.4: 运行 fdisk 查看/dev/sda分区表

# fdisk /dev/sda

重要: 如果你的硬盘和分区中有重要数据,请不要将变动保存至分区表,否则会导致数据丢失。

       运行fdisk后,你会看到下面的提示:

代码 6.5: fdisk 提示符

Command (m for help): 

       键入p 来显示当前硬盘分区设置:

代码 6.6: 分区设置范例

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help): 

       上面的画面显示这个硬盘有7个Linux分区(分区后面标识 "Linux")和一个交换分区(swap)(分区后面标识 "Linux swap")。

       每个分区名在左面显示,从/dev/hda1一直到/dev/hda9。早期的PC上,分区工具只能在一个硬盘上划分4个分区(称为 "primary"(主)分区)。有点限制,新版的"fdisk"可以使用 extended partitioning(扩展分区)。一个扩展分区中可以创建多个logical(逻辑分区),因此克服了4个主分区的限制。

       从/dev/hda5开始后面的都是逻辑分区。1到4是为主分区和扩展分区保留的。

       因此我们看到,上面的例子中,hda1 到 hda3是三个主分区。 hda4是扩展分区,它包含了从hda5 到 hda9的5个逻辑分区。实际上你不能使用扩展分区hda4来建立文件系统--所以我们能建立文件系统的只有 hda1 到 hda3 和 hda5 到 hda9。

       同时我们注意到每个分区都有一个 "Id",也叫“分区类型”。一旦你建立了一个分区,你必须同时正确设定它的分区类型。 ‘83’代表Linux文件系统,‘82’代表Linux swap交换分区类型,‘fd’是使用软件RAID推荐的类型。你可以使用fdisk中的 t选项来设定分区类型。Linux内核在启动时会按照分区类型自动检测文件系统和交换分区。

使用 fdisk 来建立硬盘分区 

       现在你是否对硬盘分区有一定的了解了呢?下面我们将带你一步一步建立硬盘分区。当你建立好硬盘分区后,你的分区表应该象这个样子:

代码 6.7: 完成分区后的分区表

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1        14    105808+  83  Linux
/dev/hda2            15        81    506520   82  Linux swap
/dev/hda3            82      3876  28690200   83  Linux

Command (m for help):

       我们建议新手建立三个分区。第一个分区(/dev/hda1)是位于硬盘最前面的一个小分区称作启动分区。启动分区保存着系统启动时需要的重要数据--如Grub启动程序(如果你使用Grub)、Linux系统内核。启动分区是为了确保系统启动数据不被意外所影响。正常情况下启动分区是unmounted(不被挂载)的。如果你使用SCSI,你的启动分区应该是/dev/sda1。

       我们建议把启动分区放在硬盘最前面,虽然这不是强制性的,但这是一个有用的老办法,因为以前的lilo 无法在超过1024 cylinder(柱面)处装载内核。

       第二个分区(/dev/hda2)用来建立交换分区(swap)。内核在内存用尽时将其用来当作虚拟内存。这个分区不需太大,一般 512MB 即可。如果你使用SCSI,这个分区应该是/dev/sda2。

       第三个分区应该足够大,或许你应该把全部剩余空间给它。这个分区我们称作根("root")分区,其中我们要存储所有系统数据和 Gentoo Linux本身。如果你使用SCSI,这个分区应该是/dev/sda3。

       在开始分区之前,请阅读下面的关于分区和文件系统的建议说明。

分区大小类型设备范例
启动分区,包含内核和启动数据32 Mb建议使用ext2/3 (最简单); 如果使用 ReiserFS 在挂载时要加上 -o notail 参数。 如果你使用 ext3 或 ReiserFS, 在设定分区 大小时一定要加入日志式记录空间,建议 64 Mb/dev/hda1
swap 分区 (以前限制不大于 128 M,现在是 2GB)通常情况下,swap 空间一般介于系统物理内存的1到2倍Linux swap/dev/hda2
root 根分区,包含主要系统数据 (/usr, /home, 等.)>=1.5 GbReiserFS, 建议ext3 或 ext2/dev/hda3

       OK,现在我们来建立这些分区。首先键入fdisk /dev/hda 或 fdisk /dev/sda(倚赖于你使用IDE或SCSI硬盘)。然后键入p来查看现有分区表。硬盘上有什么要保留的吗?如果有,请马上停止。如果继续的话,所有数据将会丢失

重要: 下面的步骤将会把硬盘上的数据全部删除!所以如果你的硬盘上有数据的话,请确认这些数据没有保留的必要。同时再次确认你选择的是正确的硬盘驱动器。

       现在,我们把所有的分区删除。键入d然后按 Enter 键。你将会被提示删除哪个分区。要删除/dev/hda1,键入:

代码 6.8: 删除一个分区

Command (m for help): d
Partition number (1-4): 1

       这个分区已被设定为删除。如果你按 p 它将不会出现在分区表中,但注意在你保存修改到分区表之前,这个分区仍然存在,如果你删除错误,请马上按 q 撤消刚才的删除操作。

       现在,假如你确定要删除所有的分区,请重复按 p 显示分区表,然后按 d 和分区号来删除分区。最后你的分区表应该象这个样子:

代码 6.9: 空白分区表

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

       现在我们来建立启动分区(boot partition)。键入 n 建立新分区,然后按 p 告诉 fdisk 你想建立的是一个主分区,按 1 建立第一个主分区。当提示 first cylinder 时按 Enter 键,当提示 last cylinder 时键入 +32M 设置分区大小为 32Mb。请参考下面说明:

注释: 日志文件系统需要额外的空间以存放日志数据。默认空间大小为 33 Mb,因次,如果你的启动分区使用日志文件系统,那么在 fdisk 提示 last cylinder 时键入 +64M 。

代码 6.10: 建立启动分区

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Hit Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

       现在,当你按 p 时,你就会看到如下输出:

代码 6.11: 已经建立的第一个分区

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux

       接下来,我们建立交换分区(swap)。按 n 建立新分区,然后按 p 告诉 fdisk 你想建立的是一个主分区,按 2 建立第二个主分区。当提示 first cylinder 时按 Enter 键,当提示 last cylinder 时键入 +512M 设置分区大小为 512Mb。然后按 t 来设置分区类型为 82 (”Linux Swap”)。然后按 p 来查看结果:

代码 6.12: Swap 分区已经建立

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap

       最后,我们来建立根分区。按n 建立新分区,然后按 p 告诉 fdisk 你想建立的是一个主分区,按 3 建立第三个主分区。当提示 first cylinder 时按 Enter 键,当提示 last cylinder 时按 Enter 表示使用所有剩余空间。然后按 p 来查看结果:

代码 6.13: 根分区已经建立

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
/dev/hda3         82      3876  28690200   83  Linux

       最后我们在启动分区上设置一个启动标识。标识 /dev/hda1 为“启动”分区,按 a 然后按 1 。如果现在按 p ,你会看到 /dev/hda1 的“Boot”一栏上有一个 *标记。现在,让我们将更改写入分区表。按 w 然后回车。你为 Gentoo Linux 安装所做的的硬盘分区工作就已经完成了。

注释: 如果你使用 fdisk 或 cfdisk,建立完分区后要重启系统以使系统能检测到新分区。

建立文件系统 

       现在分区已经建立,下面需要为启动分区和根分区建立文件系统,以使它们可以被挂载和存储数据。同时我们还要配置交换分区以存储交换数据。

       Gentoo Linux 支持多种文件系统,每种文件系统都有其长处和不足。目前我们支持ext2, ext3, XFS, JFS 和 ReiserFS 文件系统。

       ext2文件系统是一种较旧的文件系统,不支持日志功能,启动时耗费的时间较长。目前新一代日志文件系统可以以更快的速度和更高的效率启动系统检查。

       ext3是基于ext2文件系统的日志版,提供了 metadata 日志系统,可以使用日志系统还原。ext3是一个相当不错且稳定的文件系统,在大部分情况下都表现良好,不足之处是它不使用“Trees”,所以不能有效地处理过大的文件。但它参数设计不错,是个非常不错的文件系统。

       ReiserFS整体来说是个不错的文件系统,由于它基于 B*-tree 设计,因此在处理小文件(小于 4k)时性能要优于ext2 和 ext3( 10%-15%)。对于内核版本在 2.4.18以上,推荐使用 ReiserFS 文件系统,从很少到大文件,到目录中的几万个文件,ReiserFS都能达到较高的效率。启动分区不推荐使用 ReiserFS 文件系统。

       XFS是一个日志文件系统,Gentoo Linux 也支持它,你可以使用 xfs-sources 内核配合 XFS。如果你使用高速 SCSI 设备并配有不间断电源,我们推荐你使用XFS,否则请使用其它文件系统。

       JFS是IBM开发的高性能日志文件系统。虽然目前已是个成品,但关于稳定性没有更多的记录。 point.

       如果你正在寻找一种耐用的日志文件系统,推荐使用 ext3,如果你想找一个各方面都相当优秀的日志文件系统,我们推荐使用 ReiserFS。 ext3和ReiserFS都相当成熟,推荐一般使用。

       基于以上的介绍,我们使用下面的命令来为建立的分区建立文件系统:

代码 6.14: 建立文件系统 (范例)

# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3

       我们将为启动分区 /dev/hda1 选择 ext3,因为这种文件系统坚固耐用并被大部分启动程序所支持。我们用 mkswap 命令在 /dev/hda2 建立交换分区。根分区 /dev/hda3 我们选择 ReiserFS ,以为它能提供完整的日志系统并具有较高的性能。现在我们来建立文件系统:

       你可以看到,在安装过程中有许多类似 mkfs 的命令:

       mkswap 命令用来建立交换分区:

代码 6.15: 初始化交换分区

# mkswap /dev/hda2

       建立 ext2 文件系统,使用 mke2fs 命令:

代码 6.16: 建立 ext2 文件系统

# mke2fs /dev/hda1

       建立 ext3 文件系统,使用 mke2fs -j命令:

代码 6.17: 建立 an ext3 文件系统

# mke2fs -j /dev/hda3

注释: 有关2.4内核下使用 ext3 文件系统的其它信息请访问: http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html.

       建立 ReiserFS 文件系统,使用 mkreiserfs 命令:

代码 6.18: 建立 ReiserFS 文件系统

# mkreiserfs /dev/hda3

       建立 XFS 文件系统, 使用 mkfs.xfs 命令:

代码 6.19: 建立 XFS 文件系统

# mkfs.xfs /dev/hda3

注释: 你可以在 mkfs.xfs 命令后加上 -d agcount=3 -l size=32m 参数。 -d agcount=3 参数表示减少簇群的数量。XFS 邀请每 4Gb 至少一个簇群,例如你有一个 20Gb的分区,那么这个参数至少要设为5。-l size=32m 参数表示增加日志存储空间到 32Mb 以提高性能。

       建立 JFS 文件系统, 使用 mkfs.jfs 命令:

代码 6.20: 建立 JFS 文件系统

# mkfs.jfs /dev/hda3

7. 挂载分区


 

       现在,我们先激活新建的交换分区,以便为下面的工作提供虚拟内存:

代码 7.1: 激活交换分区

# swapon /dev/hda2

       下面我们将建立 /mnt/gentoo/boot 挂载点,然后挂载我们的系统到这个挂载点中。一旦启动分区和根分区挂载完毕,任何复制到 /mnt/gentoo 中的文件就会成为我们新系统的一部分。注意如果你有 /usr 或 /var 文件系统,你必须建立相应的目录 /mnt/gentoo/usr 和 /mnt/gentoo/var并挂载。

重要: 如果你的启动分区(存有内核)使用 ReiserFS,那么在挂载时要确保带有 -o notail,这样Grub才能正确安装。同时确保在你的新 /etc/fstab 文件中的 boot 分区一行也有 notail 参数(ReiserFS专用)。如果你使用 Lilo 启动,你就不需要 -o notail 参数,如果你不确定,安全起见,就带上 -o notail 参数。

代码 7.2: 创建挂载点

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

重要: 如果你在挂载 ext2 类型的启动分区时出错,请使用 mount /dev/hXX /mnt/gentoo/boot -t ext2 命令。

8. Stage 压缩包及 chroot


 

选择一个你想安装的 stage 压缩包 

       现在,你必须选择要从哪一个stage压缩包开始安装。stage压缩包位于LiveCD的 /mnt/cdrom/stages/ 目录中,你可以键入 ls /mnt/cdrom/stages/ 查看。

       使用GRP安装的用户应该选择 stage3-xx-yy.tar.bz2 压缩包。

       如果你想使用一个 没有 包括在光盘上的 stage 压缩包(如如果你使用"basic"光盘启动),你必须按照下面方法下载你需要的压缩包,然后转至“释放压缩包”部分。

注释: 如果你使用代理服务器(如 proxy.server.tld:8080),在下面的 links 命令加入 -http-proxy proxy.server.tld:8080。

代码 8.1: 下载所需的 Stages

# cd /mnt/gentoo使用 Link 命令来获取 stage 的地址:
# links http://gentoo.oregonstate.edu/releases/x86/1.4/使用 上、下 方向键 (或者 TAB 键) 寻找你想下载的压缩包,
按 d 开始下载,存储文件然后离开 Link。

另一个方法 是使用 wget 命令:
# wget (后面接要下载的 stage 压缩包地址)

释放 stage 压缩包 

       现在我们来解压缩你选择的 stage 压缩包到 /mnt/gentoo/。记住,你只能在 stage1、stage2和stage3三个压缩包中选择 一个。所以你选的是stage3,那么只要解压缩 stage3 压缩包:

重要: 确保 tar 命令中有 p 参数,否则可能导致某些文件权限错误。

代码 8.2: 释放 Stage

# cd /mnt/gentoo修改 "stage3-*.tar.bz2" 为你选择的 stage 压缩包文件名。如果你是下载的 stage 压缩包,将 "/mnt/cdrom/stages/" 修改为你的下载的压缩包存放位置。
# tar -xvjpf /mnt/cdrom/stages/stage3-*.tar.bz2

       如果你把下载压缩包放在 /mnt/gentoo,现在你可以删除你下载的 stage 压缩包了,键入 rm /mnt/gentoo/stage*.tar.bz2

GRP 套装/快照 步骤 

重要: 下面部分只使用于使用 GRP 安装方法用户。如果你不使用 GRP,请跳过这一段,从“选择镜像(可选)”继续。

       GRP 用户:Live CD中有一份 portage 快照。你需要使用这份快照,由于 emerge sync 需要网络连接,所以请跳过下面的 emerge sync 一步。下面我们来解开快照。

代码 8.3: 解开 Portage 快照

替换 yyyymmdd 为文件名中的日期。
# tar -xvjf /mnt/cdrom/snapshots/portage-yyyymmdd.tar.bz2 -C /mnt/gentoo/usr

       上面的操作将会释放 portage 树到你的Gentoo系统中。现在你就不需连接到网络再 emerge sync 去下载 portage 树了。现在我们从 LiveCD 中把 distfiles和软件包复制过来:

代码 8.4: 复制 GRP 文件

# cp -R /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/distfiles
# cp -a /mnt/cdrom/packages /mnt/gentoo/usr/portage/packages

       所有需要文件都已经复制到硬盘中了,现在你可以不用连接到网络继续安装 Gentoo Linux 了。

选择 Mirrors (可选) 

       mirrorselect 是一个帮你自动/手动寻找速度最快镜像的工具。不过, mirrorselect 的缺点是在防火墙和路由器后无法正常运行。

代码 8.5: 使用 mirrorselect

自动选择镜像:
# mirrorselect -a -s4 -o >> /mnt/gentoo/etc/make.conf手动选择镜像:
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

       如果 mirrorselect 无法正常工作,你一样可以继续安装。

进入 chroot 环境 

       下面,我们使用 chroot 命令进入新 Gentoo 编译环境。

注释: 你可能在运行 env-update 看到警告说:/etc/make.profile/make.defaults 文件不存在,不用理会。后面我们会用 emerge sync 解决这个问题。

代码 8.6: 准备和进入 chroot 环境

# mount -t proc proc /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# chroot /mnt/gentoo /bin/bash
# env-update
Regenerating /etc/ld.so.cache...
# source /etc/profile(以上会将更新你的 Shell 搜索路径)

       当你执行完这些命令后,你就已经“进入”了新 Gentoo Linux 系统环境了(/mnt/gentoo)。下面我们将在 chroot 环境中继续剩下的安装进程。

9. 使用 sync 更新 portage 树


 

重要: 如果你是使用 GRP 方式安装,你可以略过 emerge sync 这个步骤。

       现在你需要运行 emerge sync。这个命令告诉 portage 去下载更新 Gentoo Linux Portage 树。如果你先前曾从 CD 1释放了 portage 树的快照,你可以放心地跳过这一步。 Portage 树包括了在 Gentoo Linux 下编译每个软件包的脚本(称为 ebuild)。目前,我们有大约 4000 个软件包的 ebuild 脚本。当你 emerge sync 完毕后,你的 /usr/portage 目录中就会有一个完整的 Portage 树了。

代码 9.1: 使用 sync 更新

# emerge sync

10. 设置 Gentoo 优化参数 (make.conf)


 

       现在你已经有了一个完整的 Portage 树了,下面你应该设置你的 Gentoo Linux 系统下的编译优化参数。 Porage 会在编译每个软件的时候用到这些参数。你要编辑 /etc/make.conf 文件。在这个文件中你要设置 USE 参数,它告诉系统你要编译哪些软件和如何编译,一般情况下 USE 参数是空的,所以你必须设置好以使系统达到最佳效率。你可以参考 USE 指南USE 参数说明以获取更多关于 USE 的帮助。

       如果你从 stage1 开始安装,你必须同时设置好 CHOST、CFLAGS 和 CXXFLAGS ,它们用来告诉编译器你的系统类型 (文件中的注释会告诉你该如何设置)。如果你使用 stage2 或 stage3 开始安装,那么这些参数已经设置好了。

警告:高级用户: 如果你在编译一个 x86 Gentoo 系统(ACCEPT_KEYWORDS="~x86"),那么在 bootstrap (stage1) 完成之前不要修改 ACCEPT_KEYWORDS 参数。

重要:高级用户: CFLAGS 和 CXXFLAGS 参数是用来告诉 C 和 C++ 编译器如何编译最适合你的系统。一般使用 Athlon XP 处理器的用户会设为 "-march=athlon-xp" 以使所有的软件都被编译成最适合你的处理器达到最佳效率。 /etc/make.conf 文件中的注释会告诉你该如何正确设置 CFLAGS 和 CXXFLAGS 参数。

注释:高级用户:如果你使用 stage1 开始安装,而不想手动修改 CFLAGS 和 CXXFLAGS 参数,你可以使用 genflags 工具,它会为你根据你的CPU选择正确的设置值。只要键入 emerge -O genflags,然后键入 info2flags。 info2flags 会给出 CHOST, CFLAGS 和 CXXFLAGS 的建议值,然后你可以根据给出结果将其添加至 /etc/make.conf文件。

       如果需要,你也可以在这里加入你的代理服务器设置。使用 nano 命令来编辑 /etc/make.conf 文件:

代码 10.1: 设置 make.conf 中的参数

# nano -w /etc/make.conf

注释:高级用户: 需要完全自定义的用户可以看一下 /etc/make.globals 文件。这个文件是 Gentoo 的预设,你不要修改它。如果预设值无法满足你,你可以将新增设置添加到 /etc/make.conf 文件中,make.conf 文件中的设置会覆盖 make.globals 中的相应设置。如果你对自定义 USE 感兴趣,你可以看一下 /etc/make.profile/make.defaults 文件。如果你想关闭这里的任何 USE 设置,你可以将 USE="-foo" 加入 /etc/make.conf 文件中以关闭 /etc/make.globals 或 /etc/make.profile/make.defaults中的 foo设置。

警告: 不要在 stage1 完成之前设置 'static' USE 参数值。

11. 从 Stage1 开始


 

注释: 如果你不是从 stage1 开始,请跳过这一节。

       stage1 让你可以完全自定义和优化你的系统。如果你选择 stage1 ,你将获得一个最优和最新的 Gentoo。慢慢享受吧!虽然从 stage1 开始将会耗费很长时间,但结果将会完全达到你的要求。

       现在,我们将开始 "bootstrap"。完成这个步骤作者在 1200MHz AMD Athlon 系统下大约花费了两个小时。这个阶段我们将编译 GNU C 库、编译器和其它重要的系统软件。跟着下面步骤进行:

代码 11.1: Bootstrapping

# cd /usr/portage
# scripts/bootstrap.sh

       "bootstrap" 开始了。

注释:bootstrap.sh 现在支持 --fetchonly 选项。拨号用户会发现这非常有用。它会将 bootstrap 需要的文件全部下载下来以便后续编译。查看 bootstrap.sh -h 脚本以获得更多帮助。

注释: portage 默认情况下会在 /var/tmp 编译每个软件包,有时会占用几百兆的硬盘空间。如果你想把 portage 编译临时目录放在其它地方,请在 bootstrap 之前 修改 PORTAGE_TMPDIR 环境变量,如下修改:

代码 2: 修改 portage 编译临时目录

# export PORTAGE_TMPDIR="/otherdir/tmp"

       bootstrap.sh 会编译 binutils, gcc, gettext, 和 glibc, 在 glibc 之后重新编译 gettext 。不用说这会耗费很长时间。当所有编译都完成之后,你的系统就等同于一个 "stage2" 系统了,现在你就可以进行到 stage2 一步了。

12. 从 Stage2 开始,或继续 Stage1


 

注释: 这一节指从 stage2 开始,或者完成 stage1 后继续。如果你不是(比如你选择 stage3),那么跳过这一节。

警告: 如果你从 stage2 开始,那么不要修改 /etc/make.conf 中的 CHOST 变量值,否则可能导致编译失败。

       Stage2 压缩包已经包含了 bootstrapping 阶段。你需要做的就是继续下面的系统安装:

注释: 如果你从预编译的 stage2 开始,你想确认你的编译器是最新的,可以在下面命令加入 -u 选项以更新系统软件。如果你不明白是什么意思,你可以忽略这个建议。

代码 12.1: 完成剩下的系统安装

# emerge -p system(列出要安装的软件包)
# emerge system

       完成整个系统的编译需要一定的时间,这段时间你可以去喝杯咖啡、玩玩游戏,比如 PS2 的 "Star Wars - Super Bombad Racing" ;-)

       当编译全部完成,直接跳过下面一节,从“设置时区”继续。

13. 从 Stage3 开始


 

注释: 这一节是指从 stage3 开始的用户,从stage1或stage2开始的用户不需要这一节。GRP用户也应该跳过这一节。

警告: 记住,如果你从 stage3 开始,不要修改 /etc/make.conf 文件中的 CHOST 变量值,否则可能导致编译失败。

       stage3 压缩包提供了一个完整的基本 Gentoo 系统,所以我们不需要进一步的编译。

注释:高级用户: 由于 stage3 压缩包是编译好的,所以它有可能有点过时。如果你想更新其中的软件,可以见备份 /etc/make.conf 文件,然后键入 export CONFIG_PROTECT="-*" emerge -u system (需要网络连接) ,完成后回复备份文件。注意如果你的 stage3 很老的话可能要花费很长时间。任何情况下,你都可以放心地跳过这一步。

14. 设置时区


 

       现在你需要设置你的时区。

       到 /usr/share/zoneinfo 中找到你的时区(如果你使用格林威治时间,情用 GMT),然后链接至 /etc/localtime :

代码 14.1: 建立时区链接

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime(中国大陆时区设置为 Shanghai)

15. 编辑 /etc/fstab 文件


 

重要: 记住使用 nano -w "filename" 编辑文件.

       你的 Gentoo Linux 系统已经快完成了。我们现在要为系统启动配置一些系统文件。首先就是编辑 /etc/fstab 文件。记住如果你的启动分区使用的是 ReiserFS 文件系统,要在启动分区的选项部分加入 notail。同时要将 ext2, ext3 或 reiserfs 文件系统类型部分替换成你的分区文件系统类型。

警告: 参考下面的 /etc/fstab 文件范例。当然要把 "BOOT", "ROOT" 和 "SWAP" 替换为你的分区的设备标识(如 hda1, 等) ,还要替换 "ext2" and "ext3" 为你的文件系统类型。

代码 15.1: 编辑 fstab

# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed; notail increases performance of ReiserFS (at the expense of storage
# efficiency).  It is safe to drop the noatime options if you want and to 
# switch between notail and tail freely.

# <fs>           <mount point>   <type>   <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.

/dev/BOOT           /boot       ext2	 noauto,noatime	 1 2
/dev/ROOT           /           ext3	 noatime         0 1
/dev/SWAP           none        swap	 sw              0 0
/dev/cdroms/cdrom0  /mnt/cdrom  iso9660	 noauto,ro       0 0
proc                /proc       proc	 defaults        0 0

警告: 注意 /boot 默认状态启动时是 不会 被挂载的。目的是保护 /boot 上的数据。如果你需要,请手动挂载!

16. 安装内核(kernel)和系统日志记录器


 

选择内核 

       有两种方法安装系统内核。你可以自己手动编译,也可以利用 genkernel 工具帮你编译。

       不管是手动编译还是用 genkernel 编译,你都需要将内核源代码安装到你的系统中。 Gentoo 提供了许多种内核;你可以在这里查看支持列表。如果你不确定安装哪一个内核,我们建议你安装 gentoo-sources。如果你想有 XFS 支持, 你应该选择 xfs-sources 或 gs-sources。 Gentoo的 LiveCD 使用的就是 gs-sources 和 xfs-sources。还有一种 gaming-sources 内核,此内核专门对游戏软件做了优化(打开了"Preemptible kernel"选项)

       选择一个内核,开始安装:

代码 16.1: 安装内核源代码

# emerge -k sys-kernel/gentoo-sources

       /usr/src/linux 链接应该指向你的心内核源代码树。任何你编译的内核模块都会被Portage透过 /usr/src/linux 链接来编译适合你的内核的模块。 /usr/src/linux 会在你第一次安装内核源代码时创建,之后 Portage 不会修改这个链接。

使用 genkernel 编译内核 

       现在内核源代码树已经安装完毕,你可以开始编译内核了。有两种方法,第一种是使用我们提供的 genkernel 脚本来自动为你编译。 genkernel 编译内核方法就象我们的 LiveCD 一样,因此如果你使用 genkernel 来编译内核,系统启动时会自动检测你的所有硬件,就象 Live CD 启动时的样子。因为 genkernel 不需要任何手动配置,所以它对那些不熟悉内核编译的用户来说是个理想的工具。

       现在,要运行 gentkernel,首先得安装它:

代码 16.2: 安装 genkernel

# emerge -k genkernel

       现在,开始用 genkernel 编译内核:

注释:高级用户: 你可以键入 genkernel --config ,这样 genkernel 会允许你在编译前对内核配置进行调整。

代码 16.3: 运行 genkernel

如果你使用的是 genkernel 1.2 (包含在 1.4-20030803 x86/i686 GRP 套装中), 键入:
# genkernel gentoo-sources如果你使用的是 genkernel 1.4 或更新版本,则不需指定内核:
# genkernel
Gentoo Linux genkernel, version 1.4
Copyright 2003 Gentoo Technologies, Inc., Bob Johnson, Daniel Robbins
Distributed under the GNU General Public License version 2

Settings:
compile optimization: 1 processor(s)
source tree: /usr/src/linux-2.4.20-gaming-r3
config: gentoo (customized)
config loc: /etc/kernels/config-2.4.20-gaming-r3
initrd config: (default) /etc/kernels/settings

* Running "make oldconfig"...                                                                     [ ok ]
* Logging to /var/log/genkernel.log...                                                            [ ok ]
* Starting 2.4.20-gaming-r3 build...                                                              [ ok ]
* Running "make dep"...                                                                           [ ok ]
* Running "make bzImage"...                                                                       [ ok ]
* Running "make modules"...                                                                       [ ok ]
* Running "make modules_install"...                                                               [ ok ]
* Moving bzImage to /boot/kernel-2.4.20-gaming-r3...                                              [ ok ]
* Building busybox...                                                                             [ ok ]
* Creating initrd...                                                                              [ ok ]

* Build completed successfully!

* Please specify /boot/kernel-2.4.20-gaming-r3 and /boot/initrd-2.4.20-gaming-r3
* when customizing your boot loader configuration files.

       当 genkernel 运行完毕, 一个包括整套模块和 可启动根磁盘 (initrd) 的内核就已经创建好了。我们将用这个内核和 initrd 配置稍后的启动程序。记下你的内核和 initrd 的文件名。initrd 会在系统启动检测硬件后自动加载,(就像 Live CD 一样)。

       现在,我们只要在做一步就能是我们的系统更像 LiveCD了--安装 hotplug。当系统启动时 initrd 自动检测已经时, hotplug 会自动检测其它的。要安装和启用 hotplug, 键入:

代码 16.4: 安装和启用 hotplug

# emerge -k hotplug
# rc-update add hotplug default

       现在你已经用 genkernel 编译好了内核,你可以跳过下面的”手动配置内核“部分。

手动配置内核 

       如果你不想用 genkernel 来编译内核,这一节将指导你如何手动编译内核... 请查看 /usr/src/linux 链接是否指向你的内核源代码树。如果你有多个内核源代码,确保 /usr/src/linux 链接指向正确的内核源代码树是非常必要的。

警告: 如果你自己配置内核,请注意 grsecurity 选项。过于严格的安全设置可能会导致一些程序(如 X)无法正常工作。如果你不确定,就不要设置它。

注释: 如果你想使用和 Live CD一样的内核配置,键入 cd /usr/src/linux && cat /proc/config > .config && make oldconfig。如果你正使用 xfs-sources,它将会提示一些如你的内核配置和 xfs-sources 之间区别的问题。

代码 16.5: 配置内核

# cd /usr/src/linux
# make menuconfig

警告: 为了保证你的内核运行无误,必须确保以下建议的选项内置(而不是编译成模块)在内核里。如果你使用 ReiserFS 或 Ext3 ,请确保将 "ReiserFS" 和 "Ext3"编入内核。如果你使用 XFS, 编入 "SGI XFS filesystem support" 。不论是否使用 ext2 都要把其编入内核。

       下面是一些编译时需要的选项:

代码 16.6: 配置选项

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers"
(你需要这个以使用下面的功能)
...

File systems --->
<*> Reiserfs support
(如果你使用 reiserfs)
... 
<*> Ext3 journalling file system support
(如果你使用 ext3)
...
[*] Virtual memory file system support (former shm fs)
(Gentoo Linux 必须使用此项)
...
<*> JFS filesystem support
(如果你使用 JFS)
...
[*] /proc file system support
(Gentoo Linux 必须使用此项)
[*] /dev file system support (EXPERIMENTAL)
[*]   Automatically mount at boot          
(Gentoo Linux 必须使用此项)
[ ] /dev/pts file system for Unix98 PTYs
(除非你使用 2.6 内核,否则取消这一项)
...
<*> Second extended fs support
(如果你使用 ext2)
...
<*> XFS filesystem support
(如果你使用 XFS)

       如果你使用 PPPoE 连接到 Internet,你要把下面的选项编译进内核(内建或模块): "PPP (point-to-point protocol) support", "PPP support for async serial ports", "PPP support for sync tty ports"。有两个压缩选项不是必需的,"PPP over Ethernet"选项一般在你使用 rp-pppoe 配置 PPoE 时需要。

       如果你有 IDE 刻录机,那么你需要将 SCSI emulation 编译进内核。打开 "ATA/IDE/MFM/RLL support" ---> "IDE, ATA and ATAPI Block devices" ---> "SCSI emulation support" (一般编译成模块),然后在 "SCSI support" 下打开 "SCSI support", "SCSI CD-ROM support" 和 "SCSI generic support" (同样,编译成模块)。如果你选择编译成模块,那么键入 echo -e "ide-scsi\nsg\nsr_mod" >> /etc/modules.autoload.d/kernel-2.4 来让系统启动时自动加载这些模块。

       如果需要,别忘了将你的网卡编译进内核。

注释: 给那些想要在 Gentoo Linux 使用 2.2 内核的使用者, 现在 Gentoo Linux 可以使用 2.2 版的内核。 但是, 这样做要付出代价的。 你将会损失很多功能, 包括 XFS, iptables 等等。虽然 2.2 版的内核可以利用补丁增加 ReiserFS 和 devfs 支持。 Gentoo Linux 启动程序需要使用到内核內建的 tmpfs 或是 ramdisk。所以 2.2 的使用者必需确定 ramdisk 有被內建(不是编译成模块)。 你一定要在 /boot/grub/grub.conf 或是 /etc/lilo.conf 中加入 gentoo=notmpfs 到内核 kernel 选项。 然后 2.2 版的内核才能使用 ramdisk 而略过 tmpfs。如果你选择不用 devfs, 那就加入 gentoo=notmpfs,nodevfs。

代码 16.7: 编译及安装内核

# make dep && make clean bzImage modules modules_install
# cp /usr/src/linux/arch/i386/boot/bzImage /boot

安装其它的硬件所需要的软件 

       最后,我们来安装一些系统硬件需要的软件。下面是一些建议:

安装的软件用途安装命令
nvidia-kernel为 XFree86 提供 Nvidia 图像加速卡支持emerge -k nvidia-kernel
nforce-net提供对 NVIDIA NForce(2) 板载网卡支持emerge nforce-net
nforce-audio提供对 NVIDIA NForce(2) 板载声卡支持emerge nforce-audio
e100提供对 Intel e100 Fast Ethernet 网卡支持emerge e100
e1000提供对 Intel e1000 Gigabit Ethernet 网卡支持emerge e1000
emu10k1提供对 Creative Sound Blaster Live!/Audigy 支持emerge emu10k1
ati-drivers为 XFree86 提供 ATI Radeon 8500+/FireGL 图像加速卡支持emerge ati-drivers
xfree-drm为 XFree86 提供 ATI Radeon up to 9200, Rage128, Matrox, Voodoo 和其它图形加速卡支持VIDEO_CARDS="yourcard" emerge xfree-drm

       nvidia-kernel, ati-drivers 和 xfree-drm 软件包需要其它设置。其它软件包会在系统启动时由 hotplug 自动检测。如果你不使用 hotplug,请将模块加入 /etc/modules.autoload.d/kernel-2.4 文件中。

       有关 xfree-drm 的更多资料请访问 Direct Rendering Guide

安装系统日志记录器 

       你的内核(和模块)都已经安装完毕。下面你需要选择一种系统日志记录器。我们推荐的是 sysklogd,一种传统系统日志记录软件。除此之外,我们还有 msyslog、syslog-ng 以及 metalog。如果不怀疑,你可以选择 syslog-ng, 它是具有强大易用的特性。要安装日志记录器,选择下面一个加入:

代码 16.8: 选择安装日志记录器

# emerge -k app-admin/sysklogd
# rc-update add sysklogd default或者
# emerge -k app-admin/syslog-ng
# rc-update add syslog-ng default或者
# emerge -k app-admin/metalog
# rc-update add metalog default或者
# emerge -k app-admin/msyslog
# rc-update add msyslog default

重要: 如果你选择 metalogd, 请访问我们的 FAQ 查看关于 metalogd's 缓冲区说明。

       现在,你要选择安装一种 cron 软件,我们提供 dcron, fcron 和 vcron。如果不知道选择哪个,推荐使用 vcron。

代码 16.9: 选择安装 Cron 进程软件

# emerge -k sys-apps/dcron
# rc-update add dcron default
# crontab /etc/crontab或者
# emerge -k sys-apps/fcron
# rc-update add fcron default
# crontab /etc/crontab或者
# emerge -k sys-apps/vcron
# rc-update add vcron default如果你使用 vcron,你不需要 crontab /etc/crontab。

       想了解更多关于系统启动服务和进程的内容,请访问 rc-script 指南.

17. 安装其它必要的软件


 

       如果你需要使用 rp-pppoe 连接到网络,现在正是安装它的时候:

代码 17.1: 安装 rp-pppoe

# USE="-X" emerge rp-pppoeGRP 要这样安装:
# emerge -K rp-pppoe

注释:USE="-X" 这个选项是为了关闭安装 X 界面选项。因为现在 X 及其倚赖组件还没有安装。你可以在以后安装好 X 后重新编译安装 rp-pppoe 。GRP 版的 rp-pppoe 已经内置 X 界面。 如果你不是 GRP 用户,按照第一种方法编译安装。

注释: 注意,rp-pppoe安装好后还必须进行必要的配置。你必须在第一次进入 Gentoo 系统后运行 adsl-setup 进行必要的配置。

       如果你有 XFS、ReiserFS 或 LVM,你必须从 Portage 安装相应文件系统工具软件。

代码 17.2: 安装文件系统工具

如果你使用 XFS: 
# emerge -k xfsprogs如果你使用 ReiserFS: 
# emerge -k reiserfsprogs如果你使用 JFS: 
# emerge -k jfsutils如果你使用 LVM: 
# emerge -k lvm-user

       如果你使用手提电脑,并且开机时需要使用 PCMCIA 扩展槽,你需要安装 pcmcia-cs 软件。

代码 17.3: 安装 PCMCIA-cs

# emerge -k sys-apps/pcmcia-cs

18. 用户管理


 

设置 root 密码 

       在你忘记之前,先设置 root 的密码:

代码 18.1: 设置 root 密码

# passwd

新增日常工作用户 

       在 Unix/Linux 以 root 身份操作是危险的,应该尽量避免。所以我们强烈建议你新建一个日常工作用户:

代码 18.2: 新建用户

# useradd your_user -m -G users,wheel,audio -s /bin/bash
# passwd your_user

       替换 your_user 为你的新建用户名。

       当你需要以 root 身份完成某项工作时,你可以键入 su - 来切换到 root 环境获得 root 权限。查看 sudo 软件获得帮助。

19. 设置你的主机名


 

       编辑 /etc/hostname 文件,添加你的主机名,如: mymachine。

代码 19.1: 设置主机名

# echo mymachine > /etc/hostname

       然后编辑 /etc/dnsdomainname 文件设置你的域名服务器 DNS,如: mydomain.com。

代码 19.2: 设置域名服务器

# echo mydomain.com > /etc/dnsdomainname

       如果你有一个 NIS 域名服务器,将其加入 /etc/nisdomainname文件。

代码 19.3: 设置 NIS 域名服务器

# echo nis.mydomain.com > /etc/nisdomainname

20. 设置 /etc/hosts 文件


 

       这个文件包含 IP 地址及其对应的主机名,用来解析你的域名服务器无法解析的IP地址。下面是一个范例:

代码 20.1: Hosts 文件范例

127.0.0.1      localhost
# 下面一行是你的本地 IP 地址及其对应主机名
192.168.1.1    mymachine.mydomain.com	mymachine

注释: 如果你使用 DHCP 动态 IP,在你的主机名后加入 localhost 将有利于 GNOME 和其它软件的运行。

21. 网络最后设置


 

加载内核模块 

       在 /etc/modules.autoload.d/kernel-2.4 文件中加入你的模块名(同时可以加上一些参数)。当 Gentoo Linux 启动时,这些模块会自动被加载。尤其是对网卡模块,如果你正好将网卡编译成了模块:

代码 21.1: /etc/modules.autoload.d/kernel-2.4 文件

这里假设你有一个 3com 网卡。
查看 /lib/modules/<内核版本>/kernel/drivers/net 目录可以看到你的网卡型号。 
3c59x

配置网络接口 

       编辑 /etc/conf.d/net 脚本来设定启动时的开启网络。

代码 21.2: 启动时网络设置

# nano -w /etc/conf.d/net

       如果你希望 eth0 自动获取 IP,设置 iface_eth0 为 dhcp。否则填入 IP 地址, broadcast(广播)地址和 netmask(子网掩码)。如果你有多个网络接口,对 iface_eth1,iface_eth2 做同样设置,依此类推。

       现在把 net.eth0 脚本加入 default 运行级。(非 PCMCIA 卡)

代码 21.3: 启动时自动开启网络

# rc-update add net.eth0 default

       如果你有多个网卡或令牌网接口,你需要为每个接口复制 net.ethx 或 net.trx 脚本(x = 1, 2, ...):

代码 21.4: 多网络接口

# cd /etc/init.d
# ln -s net.eth0 net.ethx

       现在把每个脚本加入 default 运行级 (同样非 PCMCIA 卡):

代码 21.5: 将 net.ethx 加入 default 运行级

# rc-update add net.ethx default

PCMCIA 用户 

       如果你有 PCMCIA 卡,你需要查看 /etc/conf.d/pcmcia 文件,确保设置正确后,键入:

代码 21.6: 自动运行 PCMCIA 服务

# rc-update add pcmcia boot

       这样就可以在启动网络时自动加载 PCMCIA 驱动。

22. 最后步骤: 设置基本选项(包括国际键盘设定)


 

代码 22.1: 基本选项设置

# nano -w /etc/rc.conf

       根据文件中的指导设置基本选项。确保 CLOCK 设置好。国际键盘用户需要设置 KEYMAP 选项(参考 /usr/share/keymaps 文件获得更多帮助)。

23. 设置启动程序


 

Notes 

       Gentoo 的精神,用户现在可以选择多种启动程序。在我们的虚拟包装系统里,用户可以选择 GRUB 或 LILO 作为系统启动程序。

       注意你只需要安装一个启动程序,不要安装超过一个。

       另外,如果你使用 genkernel(内核和initrd)的话,配置启动程序和手动编译内核的方法不同,请注意这个重要的区别。

设置 GRUB 

       要理解 GRUB 最重要的就是它标识硬盘和分区的方法。你的 Linux 分区 /dev/hda1 在GRUB下被标识为 (hd0,0) 。注意那对括号--是必需的。硬盘和分区是从 0 开始标识而不是 1。非 atapi-ide 设备如 cdrom、刻录机和 scsi 设备(通常它们的标识会比 IDE 设备高一点,除非BIOS里设定从SCSI设备启动)。假设你有个硬盘是 /dev/hda, 一个 cdrom 是/dev/hdb, 一个刻录机是 /dev/hdc, 第二个硬盘是 /dev/hdd 没有 SCSI 设备, /dev/hdd7 被翻译成 (hd1,6)。这看起来真有点复杂, 但 GRUB 支持 TAB 键补全功能,当你有很多硬盘/分区的时候,你可以按 TAB 键来让系统列出所有的硬盘/分区。要体会一下这个功能,让我们来安装 GRUB。

       安装 GRUB 最简单方法就是键入 grub :

代码 23.1: 安装 GRUB

# emerge -k grub
# grub

       现在你能看到一个 grub> 提示符 。现在,你需要键入正确的命令来把 GRUB 启动数据安装到你的硬盘上。在下面的例子里,我们把 GRUB 启动数据安装到硬盘的引导区(MBR)中,这样电脑开机后就会直接运行 GRUB。我是这样做的:

代码 23.2: 安装 GRUB 到 MBR

grub> root (hd0,0)(指定启动分区)
grub> setup (hd0)(指定安装 GRUB 到 MBR)

代码 23.3: 安装 GRUB 到其它分区

如果你不想把 GRUB 安装到 MBR,你可以将它安装到其它分区上。
grub> root (hd0,0)(指定启动分区)
grub> setup (hd0,4)(指定安装 GRUB 到 /dev/hda5)
grub> quit

       现在我来解释一下上面的两个命令。第一个 root ( ) 命令是告诉 GRUB 你的系统启动分区的位置 ,在我们的例子中是 /dev/hda1 ( GRUB 所理解的 (hd0,0) )。然后第二个 setup ( ) 命令是告诉 GRUB 安装到哪里。在我们的例子里,我们要将 GRUB 安装到 MBR,也就是 /dev/hda (GRUB所理解的 (hd0))。如果你使用其它启动程序,而想把 GRUB 作为第二启动程序,你可以把 GRUB 安装到其它指定的分区上。当 GRUB 安装完成,键入 quit 退出 GRUB。

注释: 在 GRUB 里, TAB 补全功能的是一个很方便的工具, 当你键入 root ( 然后按下 TAB 键, 你将会看到所有的分区列表。 按下 TAB 后,就会自动帮你你改为 root (hd. 再按一次, grub 将列出可用硬盘就会变成 root (hd0, 然后你可以自己输入或是按下 TAB 这样就可以让 grub 再次列出可以使用的分区。

       Gentoo Linux 现在已经基本安装完毕,但是我们还得建立 /boot/grub/grub.conf 文件,这样当系统重启时我们才能看到漂亮的 GRUB 启动菜单。操作如下:

重要: 为了保证 GRUB 的向上兼容(backwards compatibility),要为 grub.conf 建立一个链接: menu.lst。你可以键入 ln -s /boot/grub/grub.conf /boot/grub/menu.lst。

       现在,使用 nano -w /boot/grub/grub.conf 建立 grub.conf 文件:

代码 23.4: grub.conf 文件

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

# 如果你是自己编译内核,使用下面例子:
title=My example Gentoo Linux
root (hd0,0) 
kernel (hd0,0)/boot/bzImage root=/dev/hda3 

# 如果你是使用 genkernel 编译的内核, 使用下面的例子:
title=My example Gentoo Linux (genkernel)
root (hd0,0)
kernel (hd0,0)/boot/kernel-KV root=/dev/hda3
initrd (hd0,0)/boot/initrd-KV

# 下面是使用 GRUB 双重启动例子
title=Windows XP
root (hd0,5) 
chainloader (hd0,5)+1

警告: 替换 KV 为你的内核版本。

注释: (hd0,0) 中不能有任何空格。

重要: 如果你先前曾为你的刻录机设置了 SCSI emulation ,那么要在 grub.conf 文件中的内核一行加入 hdx=ide-scsi 选项 ("hdx" 代表刻录机设备位置)。

       保存修改,Gentoo Linux 安装就已经完成。选择 GRUB 中的第一个选项直接启动 Gentoo Linux 。 grub.conf 文件的第二部分是可选的,只是告诉你如何用 GRUB 来启动 Windows 。

注释: 上面的 (hd0,0) 要指向你的启动分区。(在我们的例子里是 /dev/hda1), /dev/hda3 应该指向根文件系统。 (hd0,5) 保存 Windowd 的启动数据。

注释: 内核镜像文件的路径和启动分区是相关的。如果你的启动分区和根分区是分开的,那么 grub.conf 文件中应该是 /bzImage。

       如果你需要为装载内核增加额外的参数,那么可以直接将参数加到 kernel 命令后面。比如你可以加上 gentoo=nodevfs 选项来关闭 devfs (如果你不确定,不推荐这么做)。

注释: 与早期的 Gentoo Linux 不同,你不必在 kernel 一行加入 devfs=mount 来开启 devfs。现在 devfs 默认情况下已被开启。

设置 LILO 

       GRUB 也许是目前最好的启动程序,但并不一直都是。 LILO,(LInuxLOader), 是真正有实力的 Linux 启动程序。

       首先我们要安装 LILO:

代码 23.5: 安装 LILO

# emerge -k lilo

       现在来设置 LILO。下面是一个 /etc/lilo.conf 范例:

代码 23.6: lilo.conf 范例

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
lba32
default=linux

# 手动编译内核使用下面四行
image=/boot/bzImage
	label=linux
	read-only
	root=/dev/hda3

# 使用 genkernel 编译内核使用下面五行
image=/boot/kernel-KV
	label=gk_linux
	root=/dev/hda3
	initrd=/boot/initrd-KV
	append="root=/dev/hda3 init=/linuxrc"

	
# 启动 windows或其它 OS
other=/dev/hda1
	label=dos

警告: 替换 KV 为你的内核版本,(如果你使用 genkernel ,保证 default= 要与 gk_linux 一致)。

       编辑好 lilo.conf 文件后,下面要运行 LILO 将启动数据写入 MBR:

代码 23.7: 运行 LILO

# /sbin/lilo

       现在 LILO 已经设置完毕,你可以用它启动你的 Gentoo Linux 了!

使用 framebuffer 

       在内核里内置了 Framebuffer 的用户要在启动程序配置文件里加入 vga=xxx 参数。 xxx 参考下表中的数据:

640x480800x6001024x7681280x1024
8 bpp769771773775
16 bpp785788791794
32 bpp786789792795

       LILO 用户将 vga=xxx 加到配置文件的最上面。

       GRUB 用户将 vga=xxx 加到 kernel (hd0,0)... 一行。

24. 创建启动盘


 

GRUB 启动盘 

重要: 不要忘了在开始前在软驱里插入一张磁盘。

       在第一次安装任何 Linux 时创建一张启动盘是个不错的主意。这是为了在错误发声时帮你修复系统。如果你的硬件不允许你在 chroot 环境里安装启动程序,那么你就需要创建一张 GRUB 启动盘。这样你可以用它启动系统然后再安装 GRUB 到 MBR。要创建启动盘请键入:

代码 24.1: 创建 GRUB 启动盘

# cd /usr/share/grub/i386-pc/
# cat stage1 stage2 > /dev/fd0

       现在用这张启动盘重启系统,在看到 grub> 提示时,你就可以键入 root 和 setup 命令来安装 GRUB 了。

LILO 启动盘 

重要: 不要忘了在开始前在软驱里插入一张磁盘。

       如果你使用 LILO,创建一张启动盘也是个好主意:

代码 24.2: 创建 LILO 启动盘

# dd if=/boot/your_kernel of=/dev/fd0 (你的内核必需小于 1.44M)

25. 使用 GRP


 

       GRP 用户在这个阶段可以安装一些二进制的软件包:

代码 25.1: 从 GRP 安装

# emerge -k xfree

       CD 1包含了安装一个带有 XFree86 的系统所需的足够软件包。双光盘GRP套装的 CD 2 内含了 KDE,GNOME,Mozilla等其它软件。要安装这些软件包,你需要重启进入新系统(查看本文最后的“安装完毕”部分)。当你从硬盘启动进入新系统后,你就可以挂载第二张光盘来复制所需软件。

代码 25.2: 从 CD2 安装二进制软件

# mount /dev/cdrom /mnt/cdrom
# cp -a /mnt/cdrom/packages/* /usr/portage/packages/

       参照上面的方法安装其它软件,如:

代码 25.3: 从 GRP 安装 KDE

# emerge -k kde

26. 安装完毕!


 

       到现在,Gentoo Linux 已经安装完毕。剩下的扫尾工作就是更新设置文件、退出 chroot 环境、安全地卸载系统分区,然后重启系统:

警告:etc-update 命令会提供给你一份需要更新的配置文件清单。运行时请注意不会影响到一些重要的配置文件(如 /etc/fstab, /etc/make.conf, /etc/rc.conf, ...)。更新新的配置文件一般影响不大,你可以移除更新,或手动利用 diff 更新。

代码 26.1: 重新启动系统

# etc-update
# exit(这回退出 chroot 环境,你也可以键入 ^D)
# cd / 
# umount /mnt/gentoo/boot
# umount /mnt/gentoo/proc
# umount /mnt/gentoo
# reboot(别忘了弹出安装光盘)

注释: 重启系统后,我们建议你运行一下 modules-update 来建立 /etc/modules.conf 文件。不要直接修改这个文件,如果需要应该修改 /etc/modules.d 中的相应文件。

       如果你有任何问题或是想加入 Gentoo Linux 开发组,请加入我们的 gentoo-user 和 gentoo-dev 邮件列表 (更多信息请访问我们的 邮件列表 页). 你也可以阅读 桌面设置向导 文档来帮助你进一步配置你的桌面系统。 Portage 用户指南 将指导你了解有关 Portage 的知识。你可以在 这里 找到有关 Gentoo Linux 的其它文档。如果你有安装或其它方面的问题,请访问我们的 FAQ 页。欢迎使用 Gentoo Linux!

27. 在不常见的硬件上使用 Gentoo


 

ATA RAID 

       想在 ATA RAID 上安装 Gentoo Linux 的用户必须注意下面的步骤,这样才能帮助你安装 Gentoo Linux:

       如果你还有关于 Gentoo Linux 上使用 RAID 的问题,请将问题报告至 http://bugs.gentoo.org

       感谢你选择 Gentoo Linux,享受你的 Gentoo 吧!