根据 gentoo 官方进行细化。
1. 介绍
重要: 新手应当阅读手册,其中有关于安装过程更完整的描述。这篇快速安装指南是为那些只需要遵循一个核对清单的有经验用户设计的。
|
代码 1.1: 测试机器的规格
|
(下述配置和耗时情况帮你粗略估计完成整个安装过程大概需要的时间)
# grep bogo /proc/cpuinfo
bogomips : 3337.81
# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1100 MB in 2.00 seconds = 549.97 MB/sec
Timing buffered disk reads: 224 MB in 3.01 seconds = 74.36 MB/sec
# grep MemTotal /proc/meminfo
MemTotal: 509248 kB
|
代码 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
|
代码 2.2: 载入必要的模块
|
livecd root # lspci
(根据lspci的输出查看需要哪些模块)
(以下只是个例子,实际以具体硬件为准)
livecd root # modprobe 3w-9xxx
livecd root # modprobe r8169
|
代码 2.3: 通过向导配置网络
(我觉得还是命令方便,所以可以跳过这一步。)
|
livecd root # net-setup eth0
|
代码 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
|
代码 2.5: 启动sshd
(完成这一步后,就可以通过PuTTY工具远程连接了。)
|
livecd root # time /etc/init.d/sshd start
* Generating hostkey ...
(sshd生成密钥并显示更多输出)
* starting sshd ... [ok]
real 0m13.688s
user 0m9.420s
sys 0m0.090s
|
代码 2.6: 设置root密码
(在用PuTTY连接时,必须要密码,空密码是不允许的。所以要先设置好密码,用root用户连接,当然设置root密码了。)
|
livecd root # passwd
New UNIX password:
输入密码
Retype new UNIX password:
输入密码
passwd: password updated successfully
|
代码 2.7: 从另一台电脑连到你的新机器
(这里的例子是通过另外一台Linux连接那台要安装gentoo的机器,我们如在windows下,就用PuTTY这个工具就可以了。)
|
(使用你新机器的IP地址)
$ ssh [email protected]
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.8: 创建分区
|
livecd ~ # fdisk /dev/sda
(本手册接下去使用以下分区规划)
livecd ~ # fdisk -l /dev/sda
Disk /dev/sda: 599.9 GB, 599978409984 bytes
255 heads, 63 sectors/track, 72943 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 12 96358+ 83 Linux
/dev/sda2 13 110 787185 82 Linux swap / Solaris
/dev/sda3 111 72943 585031072+ 83 Linux
|
代码 2.9: 创建文件系统并激活交换分区
|
(
ext2
完全满足
/boot
分区的需要)
livecd ~ # mke2fs /dev/sda1
(主分区就用
ext3
吧)
livecd ~ # mke2fs -j /dev/sda3
(创建并激活交换分区)
livecd ~ # mkswap /dev/sda2 && swapon /dev/sda2
|
代码 2.10: 挂载文件系统
|
livecd ~ # mount /dev/sda3 /mnt/gentoo
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/sda1 /mnt/gentoo/boot
livecd ~ # cd /mnt/gentoo
|
代码 2.11: 设定日期和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
|
代码 2.12: 下载一份stage3压缩包
(如果事先有在官方下载好这个文件,只要把下载好的文件放进硬盘上就OK了。)
|
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
|
代码 2.13: 解开stage3压缩包
(注意当前目录是/mnt/gentoo,这个目录挂载是硬盘中要作为根 “/”的那个分区。boot分区就是挂载在/mnt/gentoo/boot/下,boot这个目录是mkdir在根“/”上的。)
|
livecd gentoo # time tar xjpf stage3*
real 1m14.157s
user 1m2.920s
sys 0m7.530s
|
代码 2.14: 下载最新的Portage快照 (如果事先有在官方下载好这个文件,只要把下载好的文件放进硬盘上就OK了。)
|
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.15: 解开Portage快照
(注意当前目录,这个目录是在 /mnt/gentoo/usr/)
|
livecd usr # time tar xjf portage-lat*
real 0m40.523s
user 0m28.280s
sys 0m8.240s
|
代码 2.16: 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...
|
代码 2.17: 设置时区
|
livecd / # ls /usr/share/zoneinfo
(以上海为例)
livecd / # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
livecd / # date
Thu Aug 30 11:03:16 CST 2007
|
代码 2.18: 设置主机名和域名
(主要是修改 /etc/hosts 和 /etc/conf.d/hostname 这两个文件,手动进去修改也行。)
|
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
|
代码 2.19: 安装内核源码包,编译和安装内核
|
livecd etc # time emerge gentoo-sources
real 2m51.435s
user 0m58.220s
sys 0m29.890s
livecd etc # cd /usr/src/linux
livecd linux # make menuconfig
#可以选择你想要的功能,例如EXT4。
(配置内核)
livecd linux # time make -j2
#编译内核。
(所花的时间很大程度上决定于你所选的选项)
real 3m51.962s
user 3m27.060s
sys 0m24.310s
livecd linux # make modules_install
#安装模块。
livecd linux # cp arch/i386/boot/bzImage /boot/kernel
#将内核放入boot分区。
|
代码 2.20: fstab范例
(千万别出错)
|
livecd linux # cd /etc
livecd etc # nano -w fstab
/dev/sda1 /boot ext2 noauto,noatime 1 2
/dev/sda3 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0
|
代码 2.21: 配置网络
(修改 /etc/conf.d/net 文件,可以用 nano 编辑这个文件。)
|
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
。
|
代码 2.22: 设置root密码
(这里是设置你所安装的gentoo系统的root密码。)
|
livecd conf.d # passwd
New UNIX password:
输入密码
Retype new UNIX password:
再输入密码
passwd: password updated successfully
|
代码 2.23: 编辑/etc/conf.d/clock
|
livecd conf.d # nano -w /etc/conf.d/clock
TIMEZONE="Asia/Shanghai"
|
代码 2.24: 可选:编辑一些配置文件
(不是必须的,可以先跳过。)
|
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
|
注意:
Cron
守护进程依赖于
MTA
。
mail-mta/ssmtp
会因依赖性而被一起安装。如果你想使用一种更高级的
MTA
,可以现在安装它。要是现在没空,暂时先安装
ssmtp
,以后再卸载并安装你要的
MTA
。
|
代码 2.25: 安装系统日志和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
|
代码 2.26: 安装其它工具
(可根据实际情况选择性安装)
|
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
连接)
|
代码 2.27: 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.28: grub.conf范例
|
default 0
timeout 10
title Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/sda3
|
代码 2.29: 安装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> quit
|
代码 2.30: 重启
|
livecd conf.d # exit
livecd / # umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
livecd / # reboot
(别忘了取出光盘)
|
注意: 在我们这台测试机器上,从
minimal CD
启动显示
boot
提示符开始,到重启后显示登录提示符, 总用时为
00:42:31
。没错,不到一个小时!注意这个时间还包含了
stage3
包、
Portage
快照和一些软件包的下载时间,以及配置内核所花的时间。
|
代码 2.31: 从另一台电脑连到你的新机器
|
(清理
known_hosts
文件中的内容,因为你的新机器已生成一个新的通用主机密钥)
$ nano -w ~/.ssh/known_hosts
(找出新机器的IP并删除那一行,保存并退出
nano
)
(使用你新机器的IP地址)
$ ssh [email protected]
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.32: 添加一个新用户
|
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
|
代码 2.33: 使用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
|
代码 2.34: 查看当前使用的USE标记并启用或禁用一些
|
mybox ~ # emerge -vpe world
(
Portage
列出软件包和它们的USE标记。作为例子,让我们禁用
ipv6
和
fortran
,并启用
unicode
)
mybox ~ # echo 'USE="nptl nptlonly -ipv6 -fortran unicode"' >> /etc/make.conf
|
代码 2.35: 定义语言环境
|
mybox ~ # cd /etc
mybox etc # nano -w locale.gen
mybox etc # locale-gen
|
代码 2.36: 为make.conf作最后的修改
|
mybox etc # nano -w make.conf
(在
CFLAGS
中将
-march
设为你的
CPU
类型)
CFLAGS="-O2 -march=athlon-xp -pipe"
(添加下面一行)
FEATURES="ccache"
(只有清楚自己在干什么才添加下面一行)
ACCEPT_KEYWORDS="~x86"
|
代码 2.37: 升级软件包
|
(安装
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
|
重要: 以下只是举个例子,并不意味着就作为推荐设置。
|
代码 2.38: 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.39: 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
|