在继续之前, 您需要检查一下您机器的日期和时间正确与否. 不恰当的时间配置会在后面引起一些奇怪的后果! (Cure: 我的时间就设置错过, 不过当时没见着啥奇怪的后果呀...). 请运行 date 以确认当前时间是否正确:
代码清单 1: 检查时间设置 |
# date Sun Apr 25 16:21:18 CEST 2004 |
如果时间日期不对, 用这命令调整它: date MMDDhhmmYYYY (Month: 月, Day: 日, hour: 时, minute: 分, Year: 年). 例如, 把时间设置成 2004 年 4 月 25 日 16:21:
代码清单 2: 设置日期/时间 |
# date 042516212004 |
下一步要做的是, 选择一个您想要的 stage 压缩包安装到您的系统中. 您可以从网上下载这一压缩包, 或者, 如果您是从 Gentoo Universal LiveCD 中的一张光盘启动的, 您可以从光盘里拷一个压缩包出来.
进入到您挂载系统的 Gentoo 挂载点 (应该是 /mnt/gentoo):
代码清单 3: 进入 Gentoo 挂载点 |
# cd /mnt/gentoo |
根据您使用的安装媒介, 您可以使用几种不同的工具来下载 stage 文件. 如果有 lynx, 您就可以马上连到 gentoo 镜像列表并选择一个离您最近的镜像服务器. 然后点击 releases/ 目录, 找到符合您机器体系结构 (如 x86/) 的目录进去, 选择一个 Gentoo 版本 (2004.2/), 进入 stages/ 目录, 选择符合您机器体系结构的目录 (如 x86/) 进去, 这时您就可以看到针对您体系的所有可用的 stage 文件了. 选择一个您想要的, 然后按 D 下载. 下载完毕之后, 按 Q 退出浏览器.
代码清单 4: 以 lynx 访问镜像服务器列表 |
# lynx http://www.gentoo.org/main/en/mirrors.xml |
如果没有 lynx, 您应该有 links2. links2 比 lynx 强大, 不过也有些毛病. 其一就是它毫不理会我们之前设定的代理服务器变量. 如果您需要用代理服务器, 那就这么写 links2 -http-proxy proxy.server.com:8080. 自此之后呢, 您像之前的 lynx 那么操作就可以了.
代码清单 5: 以 links2 访问镜像服务器列表 |
(不用代理) # links2 http://www.gentoo.org/main/en/mirrors.xml (用代理) # links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml |
如果您想检查下载回来的压缩包的完整性, 则可以使用 md5sum 这个工具算出一个结果, 然后和镜像网站上提供的 MD5 值进行比较 (Cure: 在前面下载 stage 压缩包的时候, 也需要下载其对应的 .md5 文件, 才可以执行下面的校验):
代码清单 6: 校验压缩包的完整性 |
# md5sum -c stage1-x86-2004.2.tar.bz2.md5 stage1-x86-2004.2.tar.bz2: OK |
下面呢, 把下载回来的 stage 压缩包解压到您的系统中. 最简单的办法就是使用 GNU 的 tar 这一压缩包工具:
代码清单 7: 解包 stage 压缩包 |
# tar -xvjpf stage?-*.tar.bz2 |
注: 解压期间您可以忽略所有关于 /proc 目录的 "No such file or directory" (无该文件或目录) 的警告, "Error exit delayed from previous errors" 这样的错误信息也可以同样忽略 |
请确保您使用了和我们给的一样的参数 (-xvjpf). 解释一下各个参数的含义 -
现在呢, stage 已经安装完毕, 我们继续安装 Portage.
光盘里的 stage 文件在 /mnt/cdrom/stages 目录中. 用 ls 可以列出所有的 stage 文件:
代码清单 8: 列出所有 stage 文件 |
# ls /mnt/cdrom/stages |
如果系统告诉你出错了, 您应该需要先挂载 CD-ROM:
代码清单 9: 挂载 CD-ROM |
# ls /mnt/cdrom/stages ls: /mnt/cdrom/stages: No such file or directory # mount /dev/cdroms/cdrom0 /mnt/cdrom # ls /mnt/cdrom/stages |
现在去到您的 gentoo 的挂载点 (通常为 /mnt/gentoo)
代码清单 10: 进入到目录 /mnt/gentoo |
# cd /mnt/gentoo |
下面我们要解开您选择的 stage 压缩包. 我们将使用 GNU 的压缩包工具 tar. 请确保您使用了同样的参数 (-xvjpf)! 在下面的例子中, 我们将解压 stage 压缩包 stage3-<子体系>-2004.2.tar.bz2. 请将文件名换成与您的 stage 压缩包对应的名字.
代码清单 11: 解开 stage 压缩包 |
# tar -xvjpf /mnt/cdrom/stages/stage3-<子体系>-2004.2.tar.bz2 |
注: 解压期间您可以忽略所有关于 /proc 目录的 "No such file or directory" (无该文件或目录) 的警告, "Error exit delayed from previous errors" 这样的错误信息也可以同样忽略 |
现在呢, stage 已经安装完毕, 我们继续安装 Portage.
如果您没有连接到网络, 那么您将需要从我们提供的 LiveCD 中安装 portage 的快照. 如果您打算随后采用预编译包 (prebuilt packages) 以加快安装速度, 那么您必须使用 LiveCD 中提供的 portage 快照. 至于其他用户则可以在随后使用 emerge 命令下载一个最新的 Portage 树.
下面, 选择适合您的情况的部分来继续:
在 Universal LiveCD 中有一份 Portage 快照. 鉴于您正在阅读这一部分, 所以呢, 我们就假设您选择了并且正在使用这么一张 LiveCD. 要安装快照, 让我们看看 /mnt/cdrom/snapshots/ 中都有哪些可用的:
代码清单 12: 看看 /mnt/cdrom/snapshots/ 中都有啥 |
# ls /mnt/cdrom/snapshots |
然后用如下的命令解开快照压缩包. 再次提醒, 请确保您使用了正确的 tar 参数. 另外, -C 中是大写的 C, 而非小写的 c. 下面我们将以快照 portage-20040710.tar.bz2 为例. 请自行替换成您选用的快照的文件名.
代码清单 13: 解开 Portage 快照 |
# tar -xvjf /mnt/cdrom/snapshots/portage-20040710.tar.bz2 -C /mnt/gentoo/usr |
您还需要从光盘中拷贝所有的源码包过来:
代码清单 14: 拷贝软件源码包 |
# mkdir /mnt/gentoo/usr/portage/distfiles # cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/ |
至此, 您的 Portage 快照已安装完毕, 请继续下一部分配置编译参数 (options)
(break: 21:08 - 21:11 = 3 min)您可以设置一些变量来影响 Portage 的行为以优化 Gentoo. 所有的参数都可以以环境变量 (environment variables) (用 export 命令) 的形式进行设置, 但这并不具备持久性 (Cure: 重新登陆或重启, 这些变量就没了). 为了保持这些设置, Portage 为您提供了 /etc/make.conf, 它是 Portage 的配置文件. 我们下面将编辑这个文件.
注: 在 /mnt/gentoo/etc/make.conf.example 中, 您可以找到一份已注释掉的所有可使用的参数的列表要成功地安装 gentoo, 您只需设置下面提到的几个参数. |
启动您最喜欢的编辑器 (本指引中我们使用 nano) 来编辑我们随后将讨论的优化参数.
代码清单 15: 打开 /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf |
您现在或许已经发现了, make.conf.example 这个文件是以一种很普通很简单的方式构成的: 所有注释行都以 "#" 开头, 其它定义参数的行的则是 VERIABLE="content" 的形式. 我们将在随后讨论其中几个参数.
敬告: 对于非 stage1 用户而言, 这个参数或许有不少吸引力, 不过, 请不要改变这个参数的设置. 否则, 您可能最终会得到一个不可用的系统. 再次善意地提醒: 只有当您从 stage1 开始安装时才可以改变这个参数. |
CHOST 参数告诉 gcc 为那个目标体系编译程序. 可选值如下:
体系 | 子体系 | CHOST 值 |
x86 | i386 | i386-pc-linux-gnu |
x86 | i486 | i486-pc-linux-gnu |
x86 | i586 | i586-pc-linux-gnu |
x86 | i686 及以上 (incl. athlon) | i686-pc-linux-gnu |
alpha | alpha-unknown-linux-gnu | |
ppc | powerpc-unknown-linux-gnu | |
sparc | sparc-unknown-linux-gnu | |
hppa | (generic) | hppa-unknown-linux-gnu |
hppa | pa7000 | hppa1.1-unknown-linux-gnu |
hppa | pa8000 及以上 | hppa2.0-unknown-linux-gnu |
mips | mips-unknown-linux-gnu | |
amd64 | x86_64-pc-linux-gnu |
如果您修改了 CHOST 参数, 则需要重新读入 (reload) 环境变量:
代码清单 16: 重新读入 (reload) 环境变量 |
# env-update # source /etc/profile |
CFLAS 与 CXXFLAGS 是用来定义 gcc 编译时使用的优化参数的. 我们在这里只是定义整体的优化参数, 要让每个程序都获得最优的性能, 您就需要单独地为每个程序定义这些参数. 这是因为每个程序都是不一样的.
在 make.conf 中您应该只定义您觉得最能发挥系统整体性能的优化参数. 切莫把一些试验性的参数放在这里; 过度的优化很可能让程序变得不正常 (如崩溃, 更坏的情况是, 出现一些有害的功能 (malfunction)).
我们不打算对每个可能的优化参数一一介绍, 如果您有兴趣了解它们, 请参看 GNU 在线手册或 gcc 的 info 页 (命令 info gcc -- 仅于可用的 Linux 系统中有效). make.conf.example 本身也带了很多有用的例子和信息, 可要记得看看哦.
第一个可设置参数就是 -march= 标志, 它用来设定目标体系. 可用的值在 make.conf.example 中有描述 (以注释形式). 例如, 对于 x86 Athlon XP 体系:
代码清单 17: GCC march 参数设定 |
# 想使用纯粹的 (native) 64 位系统的 AMD64 用户切勿使用 athlon-xp -march=athlon-xp |
第二个可设置参数是 -O 标志 (大写的字母 O, 而非零), 用以设定 gcc 的优化级别. 可能级别包括 s (在程序大小方面进行优化), 0 (零 - 不优化), 1, 2 或 3 来进行更多的运行速度优化 (每一级都包含和前一级一样的标志, 再加上该级别额外的一些标志). 如, 进行 2 级优化:
代码清单 18: GCC 的优化参数 (O) 设定 |
-O2 |
其他常用的优化参数有 -pipe (在 gcc 各个 stage 的编译过程中使用管道 (pipe) 而非临时文件来进行通讯 (Cure: 这可以极大地提升编译速度, 不过呢, 代价就是期间要使用更多的内存)) 和 -fomit-frame-pointer (which doesn't keep the frame pointer in a register for functions that don't need one)
设定 CFLAGS 和 CXXFLAGS 的时候, 您需要把那些优化参数都结合到一起, 如:
代码清单 19: 设定 CFLAGS 和 CXXFLAGS |
CFLAGS="-march=athlon-xp -pipe -O2" # AMD64 用户不应该用 athlon-xp CXXFLAGS="${CFLAGS}" # 使用和 CFLAGS 一样的值 |
我们用 MAKEOPTS 这个参数来设定在安装软件包的时候允许多少并行的编译工作同时进行. 其建议值是您机器的 CPU 的个数 加 1.
代码清单 20: 一般的单 CPU 系统的 MAKEOPTS 设定 |
MAKEOPTS="-j2" |
按您所想所需更新 /mnt/gentoo/etc/make.conf 并保存. 您现在可以继续下一章安装 Gentoo 基本系统