Gentoo Linux入门教程
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
编译安装Gentoo
1.编译安装Gentoo基本系统
◆进入新环境
为了在安装过程中即使转换目录的环境也能使用核心提供的信息,需要挂载/proc文档到/mnt/gentoo/proc:
#mkdir /mnt/gentoo/proc
#mount -t proc none /mnt/gentoo/proc
在安装过程中需要用到网络,可以使用“mirrorselect”命令来更新/etc/make.conf文件,使得下载Portage和源代码可以使用更快的镜像,具体操作如下:
#mirrorselect -a -s4 -o | grep -ve ‘^Netselect’ >> /mnt/gentoo/etc/make.conf
在进入新环境前,用户需要复制DNS信息,以便进入新的环境后也能正常使用网络:
#cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
所有的分区和需要的环境都已经准备好了,用户可以使用“chrooting”命令进入新的安装环境,也就是说,从当前的安装环境(LiveCD或者其他的安装介质)转移到安装系统(也就是初始后的分区)。首先使用“chroot”命令将根目录从/转移到/mnt/gentoo。然后使用“env-update”命令创建一个新环境,主要是创建环境变量。最后使用source将这些变量载入内存中,具体操作如下:
#chroot /mnt/gentoo /bin/bash
#env-update
#source /etc/profile
◆从Stage1进行到Stage2
如果在前面选择的是Stage1文档,那么需要Bootstrapping Gentoo系统,其实也就是选择从源码编译任何东西。Bootstrapping的意思就是编译GNU C库、GNU编译器和几个其他的关键系统程序。这个过程耗时也许会长一点,具体操作如下:
#cd /usr/portage
#scripts/bootstrap.sh
完成后需要使用如下命令重新设置一下环境变量:
#source /etc/profile
◆从Stage2进行到Stage3
如果前面选择的是Stage2档案文件,那么现在已经有一个bootstrap过的系统。在这一步用户需要编辑所有没有其它选择的系统软件包,执行“emerge system”命令开始编译系统。这个步骤也需要花掉很长的时间来完成,操作如下:
#emerge system
2.配置内核
◆设定时区
为了让系统知道用户的所在位置,需要合理的选择时区。在/usr/share/zoneinfo里查看所有时区,然后使用“ln”命令做一个符号链接到/etc/localtime中。笔者选择为shanghai,操作如下:
#ls /usr/share/zoneinfo
#ln -sf /usr/share/zoneinfo/Asia/shanghai /etc/localtime
◆安装内核源代码
Linux的内核是所有版本的中心,也是最为重要的,它位于使用者程序和系统硬件之间。Gentoo为用户提供了很多可用的内核源代码,对于x86系统的使用者,Gentoo主要提供了gentoo-sources,这个内核是以正式的Linux源代码为基础,加上了许多增强性能和安全补丁的内核源码。vanilla-sources为开发者提供默认的、没有任何补丁的内核源码。笔者选择gentoo-sources内核源码,通过“emerge”命令安装:
#emerge gentoo-sources
安装完内核源码后,可以在/usr/src下查看是否有个“linux”的符号,链接所选的内核源码,操作如下:
#ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 jan 3 10:34 /usr/src/linux -> linux-2.6.14-gentoo-r4
如果出现错误,需要修改这个符号链接:
#rm /usr/src/linux
#cd /usr/src
#ln -s linux-2.6.14-gentoo-r4 linux
◆配置编译内核
安装完内核源码后,用户需要配置内核,可以选择手动配置内核,或者使用genkernel脚本来配置内核。手动配置内核是每个Linux用户必修的一课,多配置几次后就会发现手动配置内核也是如此的轻松。
由于手动配置内核需要说明的参数很多,而这篇文章并不是单纯的介绍配置内核的文章,所以想手动配置内核的用户可以参照Gentoo提供的文档。笔者在此主要介绍使用genkernel脚本来配置内核。使用genkernel配置内核就同LiveCD内核的配置几乎一样,这意味着使用genkernel来编译的内核,系统将会在启动时检测出所有的硬件。首先,需要使用如下命令安装genkernel:
#emerge genkernel
将installation CD上的核心设定复制到genkernel找寻预设内核设定的位置:
#zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6
运行genkernel脚本来编译内核:
#genkernel –udev all
当genkernel完成的时候将建立一个模块很全的内核和一个initrd文档。
用户将在文档后面的配置启动程序时使用这个内核和initrd。initrd将系统启动前运行,执行硬件的自动检测、检查新创建的内核镜像和initrd的名字:
#ls /boot/kernel* /boot/initrd*
此外,还需要安装coldplug,initrd自动检测到系统启动需要的硬件时,coldplug会自动检测到其他所有的东西,使用如下命令安装coldplug:
#emerge -k coldplug
#rc-update add coldplug boot
◆配置模块
配置完内核后,用户可以将想要开机时自动载入的模块放到/etc/modules.autoload.d/kernel-2.6目录下,可以使用如下命令查看所有可用模块:
# find /lib/modules// -type f -iname ‘*.o’ -or -iname ‘*.ko’
例如,为自动加载3c59x.o模块,编辑kernel-2.6文件,并输入3c59x的名字:
#nano -w /etc/modules.autoload.d/kernel-2.6
运行“modules-update”命令来提交对/etc/modules.conf文件的修改:
#modules-update ]
3.配置系统
◆配置文件系统信息
在Linux下,系统所要用的分区都必须列表于文件/etc/fstab中。这个文件包含了这些分区的挂载点、挂载方法和挂载的时间等信息。关于/etc/fstab的具体语法格式,用户可以查看相关文档。笔者在此根据前面的磁盘分区给出/etc/fstab的范例,读者可根据实际的分区情况进行调整:
#nano -w /etc/fstab
/dev/hda1 /boot ext2 defaults,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
none /proc proc defaults 0 0
none /dev/shm tmpfs nodev,nosuid,noexec 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
◆配置网络信息
接下来为Gentoo配置相应的网络信息,包括主机名、域名、IP地址等相关信息,以便让Gentoo能够访问网络。具体操作如下:
#echo kennycx > /etc/hostname #设定主机名称#
#echo kennycx.info > /etc/dnsdomainname #设定域名#
然后添加domainname到默认运行级别:
#rc-update add domainname default
Gentoo所有的网络信息都包括在/etc/conf.d/net文件中,用户可以通过修改这个文件,完成对Gentoo网络的配置。笔者根据所在的网络环境做个范例:
#nano -w /etc/conf.d/net
iface_eth0=”10.1.72.30 broadcast 10.1.72.255 netmask 255.255.255.0″
gateway=”eth0/10.1.72.1″
如果是DHCP的用户,需要设置为iface_eth0=”dhcp”;如果使用RP-PPPOE,则需设置为iface_eth0=”up”。用户一般都希望在系统启动的时候自动启动网络,所以需要将网络设置添加到默认的运行级别:
#rc-update add net.eth0 default
4.安装必须的系统工具
◆系统日志工具
用户需要安装一个系统日志工具为系统提供日志服务,它可以在日志文件中记录下系统所发生的任何事。Gentoo提供了几个非常好的系统日志工具供大家选择,例如sysklogd、syslog-ng和metalog等。如果没有特殊的要求,建议安装syslog-ng,因为它非常的强大,而且默认设置也不错,安装操作如下:
#emerge syslog-ng
#rc-update add syslog-ng default
◆安装cron守护进程
如果用户需要有规律地执行一些命令,安装cron守护进程将会很方便,有点类似于Windows下的计划任务。Gentoo提供了三个cron守护进程,分别是dcron、fcron和vixie-cron。笔者在此选择了vixie-cron,其安装方法如下:
#emerge vixie-cron
#rc-update add vixie-cron default
◆安装DHCP客户端 如果网络环境需要Gentoo自动取得IP地址,需要安装DHCP客户端dhcpcd:
#emerge dhcpcd
◆安装PPPoE客户端 如果需要使用rp-pppoe来连接到网络,需要安装rp-pppoe:
#USE=“-X” emerge rp-pppoe
使用USE=“-x”将会阻止xorg-x11因为依赖性而被安装至系统。
5.安装开机管理程序
Linux强大的开机程序有GRUB和LILO,它们各有各的特点,笔者在此选用GRUB作为开机管理程序,使用如下命令安装GRUB:
#emerge grub
输入如下命令开始配置GRUB:
#grub
安装GRUB后,它将从boot分区/dev/hda1读出它的信息,把GRUB的启动记录安装到MBR上,这样用户打开电脑立刻看到的就是GRUB提示符:
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
root(hda0,0)是boot分区的位置,setup(hd0,0)是安装GRUB到MBR上。安装上GRUB后,还需创建一份配置文件,让GRUB能自动启动内核,笔者在此写出根据前面的安装创建GRUB的配置文档:
#nano -w /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.6.14
root (hd0,0)
kernel /kernel-2.6.14-gentoo-r4 root=/dev/ram0 init=/linuxrc real_root=/dev/hda3
initrd /initrd-2.6.14-gentoo-r4
保存退出,此时GRUB的配置也就完成了。
使用Gentoo Linux
1.配置Gentoo
◆用户管理
使用如下命令设置Gentoo的root密码:
#passwd
在日常的使用中以root账号工作是非常危险的,所以需要添加一个日常用户:
#useradd kennycx
#passwd kennycx
如果在使用中需要用到超级用户的权限,可以使用“su”命令获得超级用户权限。
◆重启系统
至此,Gentoo的安装已经完成,退出chroot环境,卸载掉所有已挂载的分区,重新启动进入期待已久的Gentoo系统(如图8)。
整个操作步骤如下:
#exit
cdimage ~#cd
cdimage ~#umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
cdimage ~#reboot
2.安装配置GNOME桌面
对于桌面用户,选择一个适合自己的桌面环境是十分必要的。Gentoo为用户提供了Linux下常见的桌面环境GNOME、KDE和Xfce等。笔者在此选择GNOME为桌面环境,完成Gentoo的最终安装。
◆安装GNOME
在安装GNOME之前,用户需要编辑USE变量,确认Gtk和GNOME在/etc/make.conf中的USE变量列表中。如果不需要KDE的支持,去掉Qt和KDE,具体设置如下:
USE=”-qt -kde gtk gnome”
设置好USE变量,用户可以通过“emerge”命令完成GNOME的安装:
#emerge gnome xscreensaver
经过漫长的等待,GNOME已经安装到了系统中,现在需要更新环境变量:
#env-update && source /etc/profile
将famd添加到默认的运行级别中:
#/etc/init.d/famd start
#rc-update add famd default
◆对GNOME进行初始化
安装好GNOME后,需要配置session,使用户执行“startx”命令后系统会运行GNOME:
$echo “exec gnome-session” > ~/.xinitrc
◆配置图形化登录管理器
如果希望系统启动时自动进入GNOME的登录管理器,则需要将xdm启动脚本添加到默认的运行级别中,具体操作如下:
#rc-update add xdm default
编辑/etc/rc.conf,将gdm设置成为默认的图形登录管理器,操作如下:
#nano -w /etc/rc.conf
DISPLAYMANAGER=”gdm”
XSESSION=”Gnome”
终于完成了GNOME的安装,现在只须重新启动系统,在图形登录管理器中输入用户名和密码,就可启动GNOME桌面环境
至此,Gentoo Linux的安装已经全部完成。想必各位读者已经跃跃欲试了吧,那就赶快行动Emerge一个属于自己的世界。