Linux 爱好者都希望有一个量身定制、完全自主的 Linux 系统。 Gentoo Linux 就是为了满足大家这样的要求而出现的,本文就介绍如何从内核开始定制系统,通过 Emerge 安装自己所需要的软件,这样定制好的 Gentoo Linux 就是一个高速、稳定的 Linux 系统。
Gentoo 最初由 Daniel Robbins 创建。由于开发者对 FreeBSD 的熟识,所以 Gentoo 拥有媲美 FreeBSD 的广受美誉的 Ports 系统—— Portage ( Ports 和 Portage 都是用于在线更新软件的系统,类似 apt-get ,但还是有很大不同)。 Gentoo 的首个稳定版本发布于 2002 年。
Gentoo 的出名是因为其高度的自定制性 , 由于它是一个基于源代码( source-based )的发行版。虽然安装时可以选择预先编译好的软件包,但是大部分 Gentoo 用户都选择自己手动编译安装。这也是为什么 Gentoo 比较适合有 Linux 使用经验的老手使用的原因。但是要注意的是,由于编译软件需要消耗大量的时间,所以如果所有软件都自己编译,并安装 KDE 桌面系统等比较大的软件包,可能需要几天时间才能编译完成。本文选择 Gentoo2005.1 版,手把手教大家打造一个属于自己的 Gentoo Linux 。
Gentoo 安装前的准备
安装 Gentoo 选择非常多,可以下载使用安装光盘进行安装,也可以从其它版本,如某种 LiveCD 进行安装。 Gentoo 还可以通过网络开机的环境进行安装,甚至可以通过一张救援软盘完成安装。本文将以 Universal 光盘的方式进行安装,它其实就是 Gentoo 的 LiveCD ,包含了可以让 Gentoo Linux 启动并执行所需要的全部东西。
1. 使用 Universal 安装光盘
◆下载并刻录 Universal 光盘
在 Gentoo 的镜像站点 http://www.gentoo.org/main/en/mirrors.xml?style=printable 可以下载 Universal Install CD 。笔者推荐从 http://mirrors1.mirrors. 64hosting.com/pub/mirrors/gentoo/releases/x86/2005.1/installcd/install-x86-universal-2005.1.iso 下载,该站点速度比较快。下载完成后,需要确认此 ISO 文件的完整性,以免在刻录、安装过程中带来不必要的麻烦。校验方法如下:
#md5sun install-x86-universal-2005.1.iso
将校验出的 MD5 值和站点提供的 MD5 值进行比较,完全相同就可以进行刻录,具体刻录方法请参阅相关文档,这里就不介绍了。
◆使用 Universal 光盘引导系统
系统重新启动后,按下“ Del ”键进入计算机的 BIOS ,将计算机启动顺序设置为从 CD-ROM 引导系统,插入刚刻录好的 Universal 光盘即可引导系统。
在引导系统时可以选择提供的核心参数,下面给出系统所提供的一些核心参数:
-agpgart 加载 agpgart ,在有图形问题、锁屏的情况下使用。
-doscsi 扫描 SCSI 设备,注意这样会中断网卡。
-nodetect 产生 hwsetup/kudzu ,并且不运行 hotplug 。
-dofirewire 检测 initrd 里的 Firewire 模块,用于 Firewire 光驱等。
-nousb 从 initrd 里取消使用 USB 模块的加载,取消 hotplug 。
-nodhcp 如果检测到 NIC ,不自动运行 DHCP 。
-doataraid 从 initrd 里加载 IDE 磁盘阵列模块。
-dopcmcia 启动 PCMCIA 设备。
-noapm 取消加载 APM 模块。
-noraid 取消加载 EVMS 模块。
-nohotplug 取消加载 hotplug 设备。
-ide=nodma 对非 IDE 设备强行关掉 DMA 。
-docache 在 RAM 里对这个实时的 CD 部分进行缓冲,允许卸载 /mnt/cdrom 用于挂载其他的光驱。
-dokeymap 对于非 US 标准键盘,启动键盘选择。
-noapic 如果有硬件问题、 NICS 、 SCSI 等情况下尝试。
-hdx=stroke 仅用于 SMP/SMP-NOFB 内核,即使 BIOS 不支持大驱动器,也可以对整个硬盘驱动器分区。
假如笔者需要在启动时加载 PCMCIA 设备的支持,可以在启动时输入如下参数:
boot: gentoo dopcmcia
◆其它的一些设定
当 Universal 启动时,它会尝试着检测所有系统上的硬件,然后载入相应的核心模块来支持系统中的硬件。但在某些时候它也许无法正确地载入相关的核心模块,那就需要用户手动载入。例如要载入 8139 网卡的模块,可以使用如下命令:
#modprobe 8139too
如果用户希望给予他人安装环境的权限,或者希望使用非 root 权限来完成系统的安装,则需要为 root 账号设置密码,或者建立相应的使用者账号,使用如下命令更改 root 密码 :
#passwd
二次输入 root 密码后即可更改。然后使用如下命令创建一个使用者账号:
#useradd -m -G users kennycx
#passwd kennycx
创建账号后还需要启动 SSH 服务,以便其他使用者远程进行控制,具体操作如下:
#/etc/init.d/sshd start
2. 设定网络
◆自动检测网络
如果用户的计算机是以 DHCP 的方式接入到网络中的,那非常有可能系统已经自动检测并设定好了网络。这时用户就不需要其他的设置就可以使用 Install CD 上的网络命令,如 ssh 、 wget 和 lynx 等。如果网络已经设置好,用户就可以通过“ /sbin/ifconfig ”命令查看,通常情况下都会显示除去 lo 以外的一个网络设备,如 eth0 。网络自动检测到后,需要用户手动检测下网络是否畅通,具体操作如下:
# ping www.chinaunix.com
◆自动设定网络
如果用户的网络不能自动检测到,就需要通过命令手动设置网络,通常有三种方法。第一种方法是对静态 IP 进行设置, Gentoo 下设置网络简单的方式就是使用“ net-setup ”命令自动进行设置,“ net-setup ”将会问用户一些用户网络环境的相关问题,用户只需要一步一步进行回答,完成后就会得到一个可连通的网络。
笔者设置的网络设备为 eth0 ,具体操作如下:
#net-setup eth0
第二种方法是对 RP-PPPoE 进行设置,假设用户使用的是 ADSL ,需要通过 PPPoE 连接到网络的,就将用到 adsl-setup 程序来设定网络。 adsl-setup 程序会把用户带入一个设置 ADSL 相关信息的页面,包括账号、密码、 DNS 等相关信息。具体设置操作如下:
#adsl-setup
#adsl-start
如果设置完了还无法连通网络,请检查 /etc/ppp/pap-secrets 或 /etc/ppp/chap-secrets 文件中保存的账号和密码。
第三种方法是对 PPTP 进行设置,如果用户的网络需要 PPTP 的支持,则可以使用“ pptp ”命令连接到服务器。在连接之前,请修改一些相关的网络设定,编辑 /etc/ppp/pap-secrets 或 /etc/ppp/chap-secrets 文件,确保里面包含了用户正确的账号和密码。具体操作如下:
#nano -w /etc/ppp/pap-secrets
#nano -w /etc/ppp/chap-secrets
根据实际需要调整 /etc/ppp/options.pptp ,操作如下:
#nano -w /etc/ppp/options.pptp
设定完成后,使用如下命令运行 PPTP 连接到服务器:
#pptp
◆设定代理服务器
有的用户网络环境需要使用到代理服务器,在 Gentoo 下设置代理服务器非常简单。如果是 HTTP 的代理服务器,请按照下列操作进行:
#export http_proxy=http://www.proxy.com:8080
如果是 FTP 或 RSYNC 的代理服务器,则使用如下命令:
#export ftp_proxy=ftp://www.proxy.com:8080
#export RSYNC_PROXY=www.proxy.com:8080
如果代理服务器需要进行身份验证,请使用如下命令来解决:
#export http_proxy=http://username:password@www.proxy.com:8080
3. 安装前的磁盘准备
◆分割磁盘
Gentoo Linux 和其他发行版的 Linux 的分区基本相同,在分区前应该对自己的硬盘有个规划,需要分几个区,每个区的空间为多大。在此笔者用 fdisk 分区工具对硬盘进行分区,准备分三个区,一个 /boot 分区,大小为 32MB ;一个 Swap 交换分区,大小为 512MB ;一个根分区,使用硬盘剩余的空间。
下面是 fdisk 的一些主要命令:
b 设置卷标;
d 删除一个分区;
l 显示知道的分取类型;
m 提供帮助;
n 建立一个新的分区;
p 显示分区表;
q 不保存退出;
t 修改分区的系统 ID 号;
v 检测分取是否损坏;
w 保存退出。
下面写出笔者实现上述要求的分区过程:
#fdsik /dev/hda1
Command (m for help):
输入“ p ”命令 , 查看当前分区情况。如果需要删除某个分区,则输入“ d ”命令。接着输入需要删除的分区序号,删除多个分区重复上面的步骤便可。现在来实现分区计划,输入“ n ”命令来创建一个新分区 , 接着输入“ p ”命令( e 为扩展分区, p 为基本分区),然后输入“ 1 ”,当出现“ First cylinder ”提示时按下回车键,接着看到“ last cylinder ”提示时输入“ +32M ”,创建 32MB 大小 boot 分区的步骤就完成了。建立 Swap 交换分区的步骤基本相似。需要注意的是,在交换分区被创建后输入“ t ”命令来选择分区类型,接着输入“ 82 ”,将分区类型设置为“ Linux Swap ”。根分区的建立与 boot 分区的建立完全一样,在最后选择分区大小时直接按下回车键,就使用剩余的所有空间作为根分区。创建完成后输入“ p ”命令查看分区是否合乎要求,最后输入“ wq ”命令,保存分区并退出。
◆创建文件系统
分区已经顺利完成,就在需要用户选择合适的文件系统格式化分区。常见的 Linux 文件系统有 ext2 、 ext3 、 ReiserFS 、 XFS 和 JFS 等,这几个文件系统的区别大家可以自行查看相关文档。
在创建文件系统之前,笔者先介绍创建上述几个文件系统的不同命令。创建 ext2 文件系统命令为“ mke2fs ”;创建 ext3 文件系统命令为“ mke2fs -j ”;创建 ReiserFS 文件系统命令为“ mkreiserfs ”;创建 XFS 文件系统命令为 mkfs.xfs ;创建 JFS 文件系统命令为 mkfs.jfs 。笔者为 boot 分区( /dev/hda1 )选用 ext2 文件系统,根分区( /dev/hda3 )选用 ResserFS 文件系统,具体操作如下:
#mke2fs /dev/hda1
#mkreiserfs /dev/hda3
执行完上述命令,文件系统就创建成功了。现在需要启用 Swap 交换分区,使用如下命令初始化交换分区:
#mkswap /dev/hda2
然后,使用如下命令激活交换分区:
#swapon /dev/hda2
◆挂载分区
文件系统创建立后,用户需要用“ mount ”命令把这些分区全部挂载起来,在挂载之前请确保挂载目录的存在,具体操作如下:
#mount /dev/hda3 /mnt/gentoo
#mkdir /mnt/gentoo/boot
#mount /dev/hda1 /mnt/gentoo/boot
4. 安装 Genntoo 的安装文件
◆正确设置系统时间和日期
在安装 Gentoo 安装文件之前,用户需要检查本系统的日期时间是否正确,以免在安装过程发生意想不到的错误。“ date ”命令可以查询当前系统时间日期。如显示错误,则需要使用“ date MMDDhhmmYYYY ”命令进行更改,命令中字母的意义为, M 表示月份、 D 表示日期、 h 表示时, m 表示分, Y 表示年份。例如,笔者设定当前时间为 2005 年 12 月 31 日 9 时 45 分,需要运行如下命令:
#date 103109452005
设定完成后,在使用“ date ”命令查看时间日期是否设置正确。
◆下载并解开 Stage 包
更换到用户之前将文件系统挂载的 Gentoo 的挂载点,笔者的为 /mnt/gentoo ,操作如下 :
#cd /mnt/gentoo
通过 lynx 文本浏览器访问 Gentoo 的镜像列表选择一个 stage 文档,输入“ D ”命令下载,输入“ Q ”命令退出 lynx 浏览器,具体操作如下:
#lynx http://www.gentoo.org/main/en/mirrors.xml
下载后使用如下命令解压解包:
#tar -jxvf stage-*.tar.bz2
◆安装 Portage
在安装 Portage 快照之前,请先查看 Live 中有哪些快照可供选择:
#ls /mnt/cdrom/snapshots
选定 Portage 后,用如下命令解开 Portage 快照:
#tar -jxvf /mnt/cdrom/snapshots/portage-20040413.tar.bz2 -C /mnt/gentoo/usr/
解压后还需要将源代码复制到挂载的目录下:
#mkdir /mnt/gentoo/usr/portage/distfiles
#cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/
◆配置编译参数
Portage 提供了配置文件 /etc/make.conf ,可以编辑该文档来优化 Gentoo 的编译,所有可以使用的变量带注释的列表可以在 /mnt/gentoo/etc/make.conf.example 中找到,可以根据各自的情况自行配置或使用默认的配置,具体操作如下:
#nano -w /mnt/gentoo/etc/make.conf |