Gentoo Logo

含软Raid和LVM2的Gentoo Linux x86快速安装指南

内容:

1.  介绍

本指南包含了完成一次从stage3开始安装Gentoo要用到的所有命令,包括实现建立在软RAID阵列之上的LVM2卷。本指南面向有经验的用户。你需要连接到Internet以下载stage3包和Portage快照。

新手应当阅读手册,其中有关于安装过程更完整的描述。这篇快速安装指南是为那些只需要遵循一个核对清单的有经验用户设计的。

所有费时超过两秒的命令都会跟随着在屏幕上打印时间输出。这些命令的耗时是在一台AMD 2000 1.66Ghz的PC上测试的,拥有512MB内存和两个建立了JBOD配置的SATA硬盘(即Gentoo可以看到两个单独的硬盘)。你的主板上可能有集成一个“硬”RAID控制器,但那通常不是真正的硬RAID。

代码 1.1: 测试机器的规格

(下述配置和耗时情况帮你粗略估计完成整个安装过程大概需要的时间)

# grep bogo /proc/cpuinfo
bogomips       : 3337.81

# hdparm -tT /dev/sda /dev/sdb
/dev/sda:
reads:   1048 MB in  2.00 seconds = 524.00 MB/sec
 Timing buffered disk reads:  152 MB in  3.01 seconds =  50.50 MB/sec

/dev/sdb:
 Timing cached reads:   1048 MB in  2.00 seconds = 524.00 MB/sec
 Timing buffered disk reads:  152 MB in  3.01 seconds =  50.50 MB/sec

# grep MemTotal /proc/meminfo
MemTotal:       509248 kB

2.  快速安装指南

安装介质

从我们的镜像下载一张光盘。可以在releases/x86/current-iso/中找到最小光盘的ISO文件。最小安装光盘只适用于有网络环境的安装。本指南将使用最小光盘。

刻制光盘,用它引导机器。

从光盘启动

启动时按下F2查看有哪些引导选项。你可以启动gentoo或者gentoo-nofb,后者禁用帧缓冲。如果你用LiveCD引导,别忘了添上nox选项以防止启动X图形环境。有好几个选项可用于启用或禁用一些特性。正常情况下会检测出你的硬件并装载所有模块。如果内核无法正确引导或是在引导过程中挂机,你可能不得不尝试不同的配置。最安全的办法大概是使用nodetect选项,然后显式地载入需要的模块。

代码 2.1: 引导最小光盘

Gentoo Linux Installation LiveCD                     http://www.gentoo.org
Enter to Boot; F1 for kernels  F2 for options.
boot: gentoo-nofb
(或在有问题的情况下)
boot: gentoo-nofb nodetect

可选:装载模块

如果使用了nodetect选项,就要在启动后载入必要的模块。你还要配置好网络并拥有访问磁盘的权限。lspci命令能帮助你确认硬件信息。

代码 2.2: 载入必要的模块

livecd root # lspci
(根据lspci的输出查看需要哪些模块)

(以下只是个例子,实际以具体硬件为准)
livecd root # modprobe 3w-9xxx
livecd root # modprobe r8169

网络配置

如果还没开启网络,可以用net-setup来配置网络。配置之前可能要先用modprobe为网卡载入支持模块。如果你有ADSL,请使用pppoe-setuppppoe-start。要支持PPTP,首先编辑/etc/ppp/chap-secrets/etc/ppp/options.pptp,然后使用pptp <server ip>

如果是无线连接,用iwconfig设置无线连接参数,然后再次执行net-setup或者手动运行ifconfigdhcpcd和/或route

如果你用代理,不要忘了使用export http_proxyftp_proxyRSYNC_PROXY初始化系统环境。

代码 2.3: 通过向导配置网络

livecd root # net-setup eth0

或者,你也可以手动打开网络。下面的例子把你电脑的IP地址配置为192.168.1.10,并把网关和域名服务器设为192.168.1.1。

代码 2.4: 手动配置网络

livecd root # ifconfig eth0 192.168.1.10/24
livecd root # route add default gw 192.168.1.1
livecd root # echo nameserver 192.168.1.1 > /etc/resolv.conf

安装盘允许你启动一个sshd服务,添加用户,运行irssi(一个命令行的客户端聊天工具),还可以使用links进行网上冲浪。

可选:通过ssh连接到你的新机器

最有趣的功能当然是sshd。启动这个服务,从另一台机器连过来,然后从本指南复制/粘贴命令。

代码 2.5: 启动sshd

livecd root # time /etc/init.d/sshd start
 * Generating hostkey ...
(sshd生成密钥并显示更多输出)
 * starting sshd ...                            [ok]

real   0m13.688s
user   0m9.420s
sys    0m0.090s

现在设置一下安装盘的root密码,使你能通过另一台电脑连接。请注意正常情况下不推荐你允许root通过ssh连接。如果你的本地网络不太可靠,请设一个又长又复杂的密码。它只能使用一次,因为机器重启后就没掉了。

代码 2.6: 设置root密码

livecd root # passwd
New UNIX password: 输入密码
Retype new UNIX password: 输入密码
passwd: password updated successfully

现在就可以在另一台电脑上打开一个终端并连接到你的新机器,在新的窗口中继续本指南接下去的内容,复制/粘贴文中的命令。

代码 2.7: 从另一台电脑连到你的新机器

(使用你新机器的IP地址)
$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
Password: 输入密码

准备磁盘

加载软RAID和LVM2模块。

代码 2.8: 加载RAID和LVM2模块

livecd ~ # modprobe raid0
livecd ~ # modprobe raid1
(raid5、raid6和raid10也可用)

livecd ~ # modprobe dm-mod

使用fdisk或者cfdisk创建分区规划。设备名可能是/dev/sda或者/dev/hda,前者为SATA或SCSI硬盘,后者为IDE硬盘。本指南使用下面的规划方案:

/dev/sda /dev/sdb Type
/dev/md1 /boot /boot Raid-1 (mirroring)
swap swap Normal partitions
/dev/md3 / / Raid-1 (mirroring)
/dev/md4 LVM2 volumes Raid-0 (striped)

重要: 用于启动的分区绝不能设为striping模式。它不能是raid-5或raid-0。

注意: 如果你倾向于更好的稳定性,可以考虑将交换分区设为raid-1(或者甚至raid-5)。那样即使驱动器出故障,也不会破坏你的交换分区以及正在使用这个分区的应用程序。或者,如果你倾向于更好的性能,只要让内核使用独立的交换分区,这种分区默认设为striping模式。

代码 2.9: 创建分区

livecd ~ # fdisk /dev/sda
(请确认使用的分区类型为fd并设置启动标志)

(本手册接下去使用以下分区规划)
livecd ~ # fdisk -l /dev/sda

Disk /dev/sda: 299.9 GB, 299989204992 bytes
255 heads, 63 sectors/track, 36471 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          11       88326   fd  Linux raid autodetect
/dev/sda2              12          61      401625   82  Linux swap / Solaris
/dev/sda3              62         311     2008125   fd  Linux raid autodetect
/dev/sda4             312       36471   290455200   fd  Linux raid autodetect

 (严格按照第一个磁盘的规划来为第二个磁盘分区)
livecd ~ # fdisk /dev/sdb

然后创建RAID节点和设备:

代码 2.10: 创建节点和设备

livecd ~ # mknod /dev/md1 b 9 1
livecd ~ # mknod /dev/md3 b 9 3
livecd ~ # mknod /dev/md4 b 9 4

livecd ~ # mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm: array /dev/md1 started.
livecd ~ # mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
mdadm: array /dev/md3 started.
livecd ~ # mdadm --create /dev/md4 --level=0 --raid-devices=2 /dev/sda4 /dev/sdb4
mdadm: array /dev/md4 started.

(等待所有单元就绪)
livecd ~ # cat /proc/mdstat
Personalities : [raid0] [raid1]
md4 : active raid0 sdb4[1] sda4[0]
581006592 blocks 64k chunks

md3 : active raid1 sdb3[1] sda3[0]
1959808 blocks [2/2] [UU]

md1 : active raid1 sdb1[1] sda1[0]
88256 blocks [2/2] [UU]

然后在/dev/md4创建LVM2。以下配置方案仅作为一个例子

Directory Size File system
/usr 8 GB ext3
/usr/portage 2 GB ext2, small block size, many inodes
/usr/portage/distfiles 4 GB ext2, large bock size, less inodes
/home 10 GB ext3
/opt 4 GB ext3
/var 4 GB ext3
/var/tmp 6 GB ext2
/tmp 2 GB ext2

代码 2.11: 创建LVM2卷

livecd ~ # vgscan
  Reading all physical volumes.  This may take a while...
  No volume groups found
livecd ~ # vgchange -a y
  No volume groups found

(创建物理卷,我们的例子中只有一个物理卷)
livecd ~ # pvcreate /dev/md4
  Physical volume "/dev/md4" successfully created

(创建卷组,我们的例子中也只有一个卷组)
livecd ~ # vgcreate vg /dev/md4
  Volume group "vg" successfully created

(创建逻辑卷)
livecd ~ # lvcreate -L8G -nusr vg
  /dev/cdrom: open failed: Read-only file system
  Logical volume "usr" created (未显示更多类似的信息)
livecd ~ # lvcreate -L2G -nportage vg
livecd ~ # lvcreate -L4G -ndistfiles vg
livecd ~ # lvcreate -L10G -nhome vg
livecd ~ # lvcreate -L4G -nopt vg
livecd ~ # lvcreate -L4G -nvar vg
livecd ~ # lvcreate -L6G -nvartmp vg
livecd ~ # lvcreate -L2G -ntmp vg

(显示卷组和逻辑卷)
livecd ~ # vgs
  VG   #PV #LV #SN Attr  VSize   VFree
  vg     1   8   0 wz--n 554.09G 514.09G
livecd ~ # lvs
  LV        VG   Attr   LSize  Origin Snap%  Move Copy%
  distfiles vg   -wi-a-  4.00G
  home      vg   -wi-a- 10.00G
  opt       vg   -wi-a-  4.00G
  portage   vg   -wi-a-  2.00G
  tmp       vg   -wi-a-  2.00G
  usr       vg   -wi-a-  8.00G
  var       vg   -wi-a-  4.00G
  vartmp    vg   -wi-a-  6.00G

使用mke2fsmke2fs -jmkreiserfsmkfs.xfsmkfs.jfs建立文件系统。使用mkswapswapon初始化交换分区。

代码 2.12: 创建文件系统并激活交换分区

(ext2完全满足/boot分区的需要)
livecd ~ # mke2fs /dev/md1

(主分区就用ext3吧)
livecd ~ # mke2fs -j /dev/md3

(在逻辑卷上创建文件系统)
livecd ~ # mke2fs -b 4096 -T largefile /dev/vg/distfiles
livecd ~ # mke2fs -j /dev/vg/home
livecd ~ # mke2fs -j /dev/vg/opt
livecd ~ # mke2fs -b 1024 -N 200000 /dev/vg/portage
livecd ~ # mke2fs /dev/vg/tmp
livecd ~ # mke2fs -j /dev/vg/usr
livecd ~ # mke2fs -j /dev/vg/var
livecd ~ # mke2fs /dev/vg/vartmp

(创建并激活交换分区)
livecd ~ # mkswap /dev/sda2 && mkswap /dev/sdb2
livecd ~ # swapon -p 1 /dev/sda2 && swapon -p 1 /dev/sdb2
(检验所有的交换分区使用相同的优先级)
livecd ~ # swapon -v -s
Filename                   Type            Size    Used    Priority
/dev/sda2                  partition       401616  0       1
/dev/sdb2                  partition       401616  0       1

把新建的文件系统挂载到/mnt/gentoo。同时为其它挂载点创建目录并挂载好。

代码 2.13: 挂载文件系统

livecd ~ # mount /dev/md3 /mnt/gentoo
livecd ~ # cd /mnt/gentoo
livecd gentoo # mkdir boot home usr opt var tmp
livecd gentoo # mount /dev/md1 /mnt/gentoo/boot
livecd gentoo # mount /dev/vg/usr /mnt/gentoo/usr
livecd gentoo # mount /dev/vg/home /mnt/gentoo/home
livecd gentoo # mount /dev/vg/opt /mnt/gentoo/opt
livecd gentoo # mount /dev/vg/tmp /mnt/gentoo/tmp
livecd gentoo # mount /dev/vg/var /mnt/gentoo/var
livecd gentoo # mkdir usr/portage var/tmp
livecd gentoo # mount /dev/vg/vartmp /mnt/gentoo/var/tmp
livecd gentoo # mount /dev/vg/portage /mnt/gentoo/usr/portage
livecd gentoo # mkdir usr/portage/distfiles
livecd gentoo # mount /dev/vg/distfiles /mnt/gentoo/usr/portage/distfiles

(为临时文件夹设置适当的权限)
livecd gentoo # chmod 1777 /mnt/gentoo/tmp /mnt/gentoo/var/tmp

安装Stage

首先确保正确设置了日期和时间。执行date MMDDhhmmYYYY,使用UTC时间。

代码 2.14: 设定日期和UTC时间

(查看时钟)
livecd gentoo # date
Mon Mar  6 00:14:13 UTC 2006

(设置当前日期和时间,如果需要的话)
livecd gentoo # date 030600162006 (格式为MMDDhhmmYYYY)
Mon Mar  6 00:16:00 UTC 2006

接下来,从我们的镜像下载一份stage包:

代码 2.15: 下载一份stage3压缩包

livecd gentoo # links http://www.gentoo.org/main/en/mirrors.xml
(选一个镜像,进入releases/x86/current-stage3/目录,高亮显示你需要的stage3包,
即i686 stage3,按下D键下载)

或者不选择最近的镜像,直接用wget下载)
livecd gentoo # wget ftp://distfiles.gentoo.org/pub/gentoo/releases/x86/current-stage3/stage3-i686-*.tar.bz2

进入/mnt/gentoo,执行tar xjpf <stage3 tarball>解压stage包。

代码 2.16: 解开stage3压缩包

livecd gentoo # time tar xjpf stage3*

real  1m14.157s
user  1m2.920s
sys   0m7.530s

安装最新的Portage快照。跟下载stage3压缩包一样:从我们的列表选择一个最近的镜像,下载最新的快照并解压。

代码 2.17: 下载最新的Portage快照

livecd gentoo # cd /mnt/gentoo/usr
livecd usr # links http://www.gentoo.org/main/en/mirrors.xml
(选一个镜像,进入snapshots/目录,高亮显示 portage-latest.tar.bz2 ,按下D键下载)

或者不选择最近的镜像,直接用wget下载)
livecd gentoo # cd /mnt/gentoo/usr
livecd usr # wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2

代码 2.18: 解开Portage快照

livecd usr # time tar xjf portage-lat*

real  0m40.523s
user  0m28.280s
sys   0m8.240s

切换系统

挂载/proc & /dev文件系统,拷贝/etc/resolv.conf文件,然后chroot到你的Gentoo环境。

代码 2.19: Chroot

livecd usr # cd /
livecd / # mount -t proc proc /mnt/gentoo/proc
livecd / # mount -o bind /dev /mnt/gentoo/dev
livecd / # cp -L /etc/resolv.conf /mnt/gentoo/etc/
livecd / # chroot /mnt/gentoo /bin/bash
livecd / # env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...

设定时区

设置你的时区信息:使用/usr/share/zoneinfo中的正确条目。

代码 2.20: 设置时区

livecd / # ls /usr/share/zoneinfo
(以上海为例)
livecd / # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
livecd / # date
Thu Aug 30 11:03:16 CST 2007

设定主机名和域名

/etc/conf.d/hostname/etc/hosts中设置主机名。以下例子中我们用mybox作为主机名,用at.myplace作为域名。可以用nano编辑这些配置文件,或者使用下面的命令:

代码 2.21: 设置主机名和域名

livecd / # cd /etc
livecd etc # echo "127.0.0.1 mybox.at.myplace mybox localhost" > hosts
livecd etc # sed -i -e 's/HOSTNAME.*/HOSTNAME="mybox"/' conf.d/hostname
(使用指定的主机名并检查)
livecd etc # hostname mybox
livecd etc # hostname -f
mybox.at.myplace

内核配置

安装一个内核源码包(通常为gentoo-sources),配置、编译并拷贝arch/i386/boot/bzImage文件到/boot

代码 2.22: 安装内核源码包,编译和安装内核

livecd etc # time emerge gentoo-sources

real  3m3.110s
user  1m2.320s
sys   0m34.990s
livecd etc # cd /usr/src/linux
livecd linux # make menuconfig

(跟往常一样配置内核,确保将必需的raid和lvm模块编译进内核,即不是编译为模块。
相同的配置应用于磁盘驱动和文件系统。)
Multi-device support (RAID and LVM)  --->
[*] Multiple devices driver support (RAID and LVM)
  <*>   RAID support
  < >     Linear (append) mode (NEW)
  <*>     RAID-0 (striping) mode
  <*>     RAID-1 (mirroring) mode
  < >     RAID-10 (mirrored striping) mode (EXPERIMENTAL) (NEW)
  < >     RAID-4/RAID-5 mode (NEW)
  < >     RAID-6 mode (NEW)
  < >     Multipath I/O support (NEW)
  < >     Faulty test module for MD (NEW)
  <*>   Device mapper support
  < >     Crypt target support (NEW)
  < >     Snapshot target (EXPERIMENTAL) (NEW)
  < >     Mirror target (EXPERIMENTAL) (NEW)
  < >     Zero target (EXPERIMENTAL) (NEW)
  < >     Multipath target (EXPERIMENTAL) (NEW)
  < >     Bad Block Relocation Device Target (EXPERIMENTAL) (NEW)

livecd linux # time make -j2

(所花的时间很大程度上决定于你所选的选项)
real  5m5.869s
user  4m32.320s
sys   0m32.930s

livecd linux # make modules_install
livecd linux # cp arch/i386/boot/bzImage /boot/kernel

配置系统

编辑/etc/fstab,用实际的分区名代替BOOTROOTSWAP,并添加逻辑卷。记得确认一下文件系统是否与所安装的相匹配。

代码 2.23: fstab范例

livecd linux # cd /etc
livecd etc # nano -w fstab
/dev/md1          /boot                   ext2  noauto,noatime  1 2
/dev/md3          /                       ext3  noatime         0 1
/dev/sda2         none                    swap  sw,pri=1        0 0
/dev/sdb2         none                    swap  sw,pri=1        0 0
/dev/vg/usr       /usr                    ext3  noatime         1 2
/dev/vg/portage   /usr/portage            ext2  noatime         1 2
/dev/vg/distfiles /usr/portage/distfiles  ext2  noatime         1 2
/dev/vg/home      /home                   ext3  noatime         1 2
/dev/vg/opt       /opt                    ext3  noatime         1 2
/dev/vg/tmp       /tmp                    ext2  noatime         1 2
/dev/vg/var       /var                    ext3  noatime         1 2
/dev/vg/vartmp    /var/tmp                ext2  noatime         1 2

/etc/conf.d/net中配置网络。把net.eth0启动脚本添加到默认运行级别。如果有多张网卡,分别为它们建立符号链接到net.eth0启动脚本,并一起添加到默认运行级别。用nano编辑/etc/conf.d/net,或者使用如下命令:

代码 2.24: 配置网络

livecd etc # cd conf.d
livecd conf.d # echo 'config_eth0=( "192.168.1.10/24" )' >> net
livecd conf.d # echo 'routes_eth0=( "default via 192.168.1.1" )' >> net
livecd conf.d # rc-update add net.eth0 default
(如果你把网卡驱动编译为模块,
需要将它添加到/etc/modules.autoload.d/kernel-2.6)
livecd conf.d # echo r8169 >> /etc/modules.autoload.d/kernel-2.6
(如果希望重启后通过ssh重新连接到新机器)
livecd conf.d # rc-update add sshd default

注意: 如果需要支持PCMCIA卡,请emerge pcmciautils

执行passwd设置root密码。

代码 2.25: 设置root密码

livecd conf.d # passwd
New UNIX password: 输入密码
Retype new UNIX password: 再输入密码
passwd: password updated successfully

编辑/etc/conf.d/clock以定义前面所使用的时区。

代码 2.26: 编辑/etc/conf.d/clock

livecd conf.d # nano -w /etc/conf.d/clock
TIMEZONE="Asia/Shanghai"

检查系统配置,查看并编辑这些配置文件:/etc/rc.conf/etc/conf.d/rc/etc/conf.d/keymaps

代码 2.27: 可选:编辑一些配置文件

livecd conf.d # nano -w /etc/rc.conf
livecd conf.d # nano -w /etc/conf.d/rc
livecd conf.d # nano -w /etc/conf.d/keymaps

安装系统工具

安装RAID和LVM2实用工具。

代码 2.28: 安装RAID & LVM2工具

livecd conf.d # emerge mdadm lvm2

安装一个系统日志如syslog-ng和一个cron守护进程如vixie-cron,并把它们添加到默认运行级别。

注意: Cron守护进程依赖于MTA。mail-mta/ssmtp会因依赖性而被一起安装。如果你想使用一种更高级的MTA,可以现在安装它。要是现在没空,暂时先安装ssmtp,以后再卸载并安装你要的MTA。

代码 2.29: 安装系统日志和cron守护进程

livecd conf.d # time emerge syslog-ng vixie-cron

real  1m54.099s
user  1m2.630s
sys   0m34.620s
livecd conf.d # rc-update add syslog-ng default
livecd conf.d # rc-update add vixie-cron default

安装必要的文件系统工具(xfsprogsreiserfsprogsjfsutils)和网络工具(dhcpcdppp)。

代码 2.30: 安装其它工具

livecd conf.d # emerge xfsprogs       (如果使用XFS文件系统)
livecd conf.d # emerge jfsutils       (如果使用JFS文件系统)
livecd conf.d # emerge reiserfsprogs  (如果使用Reiser文件系统)
livecd conf.d # emerge dhcpcd         (如果使用DHCP客户端)
livecd conf.d # emerge ppp            (如果使用PPPoE ADSL连接)

配置引导程序

安装并配置grub

代码 2.31: Emerge grub并编辑它的配置文件

livecd conf.d # time emerge grub

real  1m4.634s
user  0m39.460s
sys   0m15.280s
livecd conf.d # nano -w /boot/grub/grub.conf

代码 2.32: grub.conf范例

default 0
timeout 10

title Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/md3

代码 2.33: 在两个磁盘上安装grub

livecd conf.d # grub
Probing devices to guess BIOS drives. This may take a long time.

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/
grub/menu.lst"... succeeded
Done.

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)

grub> quit

重启

退出chroot环境,卸载所有文件系统并重启:

代码 2.34: 重启

livecd conf.d # exit
livecd / # umount /mnt/gentoo/usr/portage/distfiles /mnt/gentoo/usr/portage \
/mnt/gentoo/usr /mnt/gentoo/var/tmp /mnt/gentoo/tmp /mnt/gentoo/var \
/mnt/gentoo/opt /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/home \
/mnt/gentoo/boot /mnt/gentoo
livecd / # reboot
(别忘了取出光盘)

完成安装

注意: 在我们这台测试机器上,从minimal CD启动显示boot提示符开始,到重启后显示登录提示符, 总用时00:42:31 。没错,不到一个小时!注意这个时间还包含了stage3包、Portage快照和一些软件包的下载时间,以及配置内核所花的时间。

root身份登录,用useradd添加一个或多个用户,作为日常使用。

代码 2.35: 从另一台电脑连到你的新机器

(清理known_hosts文件中的内容,因为你的新机器已生成一个新的
通用主机密钥)
$ nano -w ~/.ssh/known_hosts
(找出新机器的IP并删除那一行,保存并退出nano)

(使用你新机器的IP地址)
$ ssh root@192.168.1.10
The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
RSA key fingerprint is 96:e7:2d:12:ac:9c:b0:94:90:9f:40:89:b0:45:26:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.10' (RSA) to the list of known hosts.
Password: 输入密码

代码 2.36: 添加一个新用户

mybox ~ # adduser -g users -G lp,wheel,audio,cdrom,portage,cron -m john
mybox ~ # passwd john
New UNIX password: 设置John的密码
Retype new UNIX password: 再次输入John的密码
passwd: password updated successfully

最后涉及的配置

开始选择最近的镜像,在/etc/make.conf中定义SYNC变量和GENTOO_MIRRORS变量,或者也可以使用mirrorselect。此时你还可以定义并行编译的进程数。

代码 2.37: 使用mirrorselect并设置MAKEOPTS

mybox ~ # emerge mirrorselect
mybox ~ # mirrorselect -i -o >> /etc/make.conf
mybox ~ # mirrorselect -i -r -o >> /etc/make.conf
(通常,一个较好的值为处理器数加一)
mybox ~ # echo 'MAKEOPTS="-j2"' >> /etc/make.conf

现在是启用或禁用一些USE标记的好时机。运行emerge -vpe world,列出所有当前已安装的软件包以及它们被启用和禁用的USE标记。编辑/etc/make.conf或使用下列命令定义USE变量:

代码 2.38: 查看当前使用的USE标记并启用或禁用一些

mybox ~ # emerge -vpe world
(Portage列出软件包和它们的USE标记。作为例子,让我们禁用ipv6和fortran,
并启用unicode)
mybox ~ # echo 'USE="nptl nptlonly -ipv6 -fortran unicode"' >> /etc/make.conf

新版本的glibc使用/etc/locale.gen来定义语言环境。

代码 2.39: 定义语言环境

mybox ~ # cd /etc
mybox etc # nano -w locale.gen
mybox etc # locale-gen

最后但并非最轻松的,你可能想修改/etc/make.conf中的CFLAGS变量来优化编码,以满足你的特定需要。请注意极少需要一长串的标记列表,那样甚至可能导致系统崩溃。建议通过march选项指定处理器类型并赋上-O2 -pipe

可能你还想转到 ~x86。只有当你能够对付那些脆弱不良的ebuild和软件包时才能这么做。如果你倾向于保持系统的稳定性,请不要添加ACCEPT_KEYWORDS变量。添加FEATURES="ccache"却是个好主意。

代码 2.40: 为make.conf作最后的修改

mybox etc # nano -w make.conf
(在CFLAGS中将-march设为你的CPU类型)
CFLAGS="-O2 -march=athlon-xp -pipe"
(添加下面一行)
FEATURES="ccache"
(只有清楚自己在干什么才添加下面一行)
ACCEPT_KEYWORDS="~x86"

可能你会想重编译整个系统两次,以使你所作的最新配置完全生效。这要花很长的时间来完成,而只能得到微小的速度提升。你可以让系统自己随着以后新软件包的发布而逐步完成优化。不过,站在保持系统一致性的立场来看,重编译仍不失为一个好主意。请参考文档Gentoo GCC升级指南,其中讨论了如何搭建一个具有良好一致性的system和world,以及这样做的好处。

只重编译那些因你应用了新的USE标记或受此影响而需要升级的软件包,也要花费不少时间。可能还必须卸载会阻止你升级的软件包。在emerge -vpuD --newuse world的输出中寻找“[blocks B ]”,用emerge -C卸载它们。

代码 2.41: 升级软件包

(安装ccache)
mybox etc # emerge ccache

(请注意转到~x86会导致很多软件包要升级)
mybox etc # emerge -vpuD --newuse world
(好好看一看软件包列表和它们的USE标记,
有阻止的包就先卸载,然后启动漫长的过程)
mybox etc # time emerge -vuD --newuse world
((重)编译了79个软件包)

real  180m13.276s
user  121m22.905s
sys   36m31.472s

(重编译libtool以避免一些潜在的问题)
mybox etc # emerge --oneshot libtool

(更新配置文件,确保不要让dispatch-conf更新你配置好的文件)
mybox etc # dispatch-conf

(如果升级了perl,应该执行perl-cleaner脚本)
mybox etc # time perl-cleaner all
real  1m6.495s
user  0m42.699s
sys   0m10.641s

(如果升级了python的主要软件包,应该执行python-updater脚本)
mybox etc # python-updater

接下来该做什么

想安装服务器应用程序还是一个桌面系统,取决于你打算让你的新Gentoo做什么。以下仅作为一个例子,统计了emerge gnomeemerge kde在~x86系统(按之前的描述安装的)上所花费的时间。两者是在同一起点开始安装的。

去看看我们的文档目录,研究一下如何安装和配置你挑选的软件。

重要: 以下只是举个例子,并不意味着就作为推荐设置。

代码 2.42: Emerge GNOME

mybox etc # emerge -vp gnome
(查看软件包列表和它们的USE标记,
如果需要请编辑make.conf
mybox etc # nano -w /etc/make.conf
(定义了以下USE标记)
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
     -kde -qt4 -arts -eds -esd gnome gstreamer gtk firefox"

mybox etc # time emerge gnome
(安装了326个软件包)

real  520m44.532s
user  339m21.144s
sys   146m22.337s

代码 2.43: Emerge KDE

mybox etc # emerge -vp kde-meta
(查看软件包列表和它们的USE标记,
如果需要请编辑make.conf
mybox etc # nano -w /etc/make.conf
定义了以下USE标记)
USE="nptl nptlonly -ipv6 -fortran unicode svg hal dbus \
     kde qt4 -arts -eds -esd -gnome -gstreamer -gtk -firefox"

mybox etc # time emerge kde-meta
(安装了391个软件包)

real  1171m25.318s
user  851m26.393s
sys   281m45.629s


打印

更新于2010年 6月 7日

本文档的原始版本最后更新于2013年 8月 15日

总结: 这篇快速安装指南以一种相对简略的方式介绍Gentoo安装过程。目的是让没有太多时间的用户完成基于stage3的安装(含软Raid和LVM2)。想遵循本指南的用户须已有安装Gentoo Linux的经验。

Xavier Neys
作者

Sven Vermeulen
作者

Steven Wagner
作者

叶宝泰
译者

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.