10/22/2006

gentoo安装笔记

我觉得应该把主流的linux版本都试一下。前些天无意到gentoo区看了几篇置顶帖,有些触动,后来又去gentoo官网看了一些安装文档,于是决定装个gentoo试试。第一次安装,还是准备不足,碰到很多麻烦。一路摸索过来,虽然还有一些问题没有解决,现在终于得到一个可用的系统了。
下面简单写一下我经历的安装过程:

我先到http://www.gentoo.org/main/en/mirrors.xml挑了一个镜像站点,然后下载livecd-i686- installer-2006.1.iso,我还下了文档中提到的stage3(其实不用下)。 检验下到的iso镜像,无误后刻成光盘。

用光盘启动电脑,我不知道竟然是启动到GUI模式的(这下我才明白为什么叫livecd)。

等10 秒,默认以gentoo登陆。 点击桌面上安装图标启动安装程序(我启动的是gtk+的),然后进行一系列选择。很遗憾,我第一步就选错了,安装模式选成了默认的。于是每次到17步的install都会出现一大堆问题。主要是分区出的问题,因为我在安装前把系统中放有stage3文档的分区挂了上来,因为有一步需要选择stage3文件的位置。

几次失败后,我决定先在安装程序外分完区,再进行安装。 按ctrl+alt+f1换到终端1,看到已经以root登陆。
passwd

换一个root密码。然后按ctrl+alt+f7回到GUI下。
su

切换到root身份。
fdisk /dev/hda

开始分区。原来装ubuntu时交换空间太小了,待机后经常起不来。于是先把swap及它的后一个分区删掉,然后建立520MB的linux分区,此处为 /dev/hda9;再建立一个100MB的linux分区,此处为/dev/hda10;最后把剩下的划为/dev/hda11,大小为7个G左右。
重启,获得root权限后开始建立文件系统。
mkswap /dev/hda9
mkfs.ext2 /dev/hda10
mkfs.reiserfs /dev/hda11

当时第一步忘了,走了些弯路。

分好了,重新运行安装程序,老说设置路由失败。 后来在root运行安装程序,同样出现这个问题。设成dhcp后又出现其它的问题。

没办法,只好看光盘上的文档。 突然看到pdf中提到一句话,第一步应该选择“network-less",于是按它说的做。由于是试验性的,而且文档及安装程序中提示“不联机,可能无法选择一些软件包”,所以在后面的选择软件包的时候我什么没有选。

挂载点选择时,不小心把想要的/mnt/hda1写成了/dev/hda1,结果又出错好几回。郁闷。

后来总算把gentoo装上了。 一重启我都郁闷了,只有字符界面?! 到现在我也一直在想,是我当时没把x11,gnome等选上的原因,还是这就是gentoo的特色(谁来解释一下?)。

不管那么多了,开始简单试一试先。
先看一下能上网不?很遗憾,不能,根据gentoo_network_configuration.txt的说明,把/etc/conf.d/net改成类似下面的样子。
modules=( "ifconfig" )
config_eth0=( "219.216.xxx.25 netmask 255.255.255.0" )
routes_eth0=(
"default via 219.216.xxx.254" # IPv4 default route
)
/etc/init.d/eth0.net start

提示没有网络设备。
手动加载网卡驱动。
modprobe 8139cp
modprobe 8139too

这下网卡驱动起来了。避免麻烦,我将两个模块都加入了/etc/modules.autoload.d/kernel-2.6,让系统启动时自动加载(后面发现,8139cp这个用不着)。
/etc/init.d/eth0.net restart

这下可以上网了。

接着试了一下光驱,手动挂载可以用,U盘也一样。

现在,开始一些关键性操作了。
先是编辑/etc/make.conf。
由于是教育网的,加入
GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo ftp://ftp.sjtu.edu.cn/gentoo"
SYNC="rsync://ftp3.tsinghua.edu.cn/gentoo/gentoo-portage"

可以加入多个镜像站点,之间用空格隔开即可。
编辑USE参数,这里我只是简单地把ipv6改成了-ipv6。
emerge --sync

这步相当于升级软件列表,第一次可能需要五分钟左右。
系统默认使用nano作为编辑器,非常不习惯。先把vim装上
emerge vim

现在开始升级内核。
emerge genkernel

genkernel是编译内核的工具,非常方便。一会儿要用。
下载推荐的内核源码。这里用推荐的gentoo-sources内核。
emerge gentoo-sources

用genkernel编译内核,如果你以前有内核的.config文件,可以用 --kernel-file=XX来指定。如果你想让genkernel编译后自动在grub中加入相应选项,应该将 /etc/genkernel.conf中的BOOTLOADER="grub"前的注释去掉。默认情况下,genkernel会将menuconfig 生成的配置文件存在/etc/kernels/文件夹下,再次编译时应该很有用。
genkernel --menuconfig all

选择适当的编译选项,把没用的去掉。把必须要的加上,比如我就把8139的网卡编译到内核里了。
由于编译期间什么也不输出,为了确保genkernel在工作。你可以再开一个终端用top查看cpu占用率或有否cc,make等程序在运行。
编译完后,手动检查/boot/grub/menu.lst中是否加入新内核的项目,没有则手动加上。
重启,用新内核启动。
shutdown -r now

或用ctrl+alt+delete重启。

用新内核启动。
我这里情况一切正常。不过/etc/modules.autoload.d/kernel-2.6原来加入的东西现在要去掉了,否则会用一个错误提示。

第一次系统彻底升级。
emerge --pretend --update --deep world|less

先用less看一下需要升级多少东西。
下载升级包。
emerge --update --deep world --fetchonly

先下载。有很多软件要装时,我习惯先下载完。
这时候出现了很大的问题。因为x11-misc/utils-macros需要从freedesktop.org下载,而我这里是教育网,无法直接访问。因为习惯了ubuntu源的概念,以为所有的软件包都是在源里的。因此我还一度认为这是gentoo源的bug,不过我不是唯一这么认为的人,因为官方网站上就有人把这个问题当bug提交上去了。后来到linuxsir发帖求助。通过大家帮助找到了解决方法--是用代理。
export http_proxy="ip:port"

然后就可以完成下载了。估计是emerge用的wget用了这个代理。
注意一个问题,如果把上面的export去掉,用set是可以看到http_proxy的,但很明显,wget看不到。不用代理时记得
unset http_proxy

升级。
emerge --update --deep world

把--fetchonly去掉就可以了。这里可能需要不少时间,特别是gcc,glic等。我发现gcc把对fortran的支持编上了,而我几乎没可能用到,下次编我会研究一下怎么让它不编上fortran,不知道加上-fortran行不行。
上面的过程最后可能会提示需要改写一些conf文件。这时候可以用etc-update帮忙。
etc-update

这个工具会试着自动解决问题,当它不能时,会要求你手动编辑。像这里的情况,我们要保留自己编辑过的/etc/conf.d/net,否则又得重新配置了。注意etc-update可能会经常用到。

现在,装上x window吧。
早就想xfce4了,今天就装这个(其实是考虑这个能小的,不用费太多时间)。
emerge xfce |less

看一下要装多少软件。好像是一百多个。多数是基本x window系统。
emerge xfce --fetchonly

下载先。
emerge xfce

安装。搞定后,就可以用startxfce启动xfce环境了。还有,我现在是在ubuntu里,不记得上面的命令里应该是xfce还是xfce4了,大家自己试。
xfce用的gtk+,所以一切看上去都挺像gnome的。
之后我又想把KDE或gnome装上,对比后KDE需要92个包,而gnome需要两百多个。本着经济的原则,我选择了KDE。下载很快就完成,但KDE的整个编译安装用了我9个小时。崩溃了!也直接造成我放弃安装gnome(下都下完了)。
试图运行startkde但没成功,不过运行starx后起来了xterm还是qterm什么的,在里面可以运行kdesktop类似命令启动起来。本来想换用gdm或kdm的,但一时没什么方向(当时都不知道查man X,也不知道gentoo.linuxsir.org上的文档版块有很多好东西),但xdm倒是很轻松的用上了。
rc-update add xdm default

图形登陆这些不是主要矛盾。 但我发现我必须安装firefox,因为xfce4下的那个kde下的全能家伙(k*)并不能显示所有的中文(字体就别提了),而且也几乎用不了ajax的东西。
emerge mozilla-firefox --fetch
emerge mozilla-firefox

这下所有中文都能显示了(字体还是糟糕)。下面安装flash插件。
emerge netscape-flash

一句话就搞定。
下面开始新建普通权限用户gahlong。
useradd gahlong
passwd gahlong
由于,我的gentoo用的是和ubuntu同一个分区作为/home,我担心gentoo把ubuntu的/home/ahlong覆盖了,所以我取名叫gahlong(后面发现这个担心没必要)。
用gahlong登陆提示没主目录。
mkdir /home/gahlong
usermod -d /home/gahlong gahlong

本来还准备chown的,但usermod好像已经帮我们做了。这下登陆正常了,不过还是有点不爽,我要改登陆名。
usermod -l ahlong gahlong

同样地,usermod也改了/home/gahlong为ahlong的了。
安装xmms。到现在还没有听到电脑出声呢。
emerge xmms

什么声音也不出。看起来声卡得配一下。编译内核时我已经把alsa编过内核的,还需要干什么呢?
emerge --search alsa|less

我把搜到的都往上装。
emerge alsa-drivers alsa-utils

编译alsa-drivers时提示内核已经有了,自动跳过。装上后一个后。可以开始配置声卡了。
alsaconf

选择就是了。
alsamixer

设置音量什么,不过好像不是必须要运行。
这样之后,xmms正常工作了。
如果普通用户不能使用声卡。运行
usermod -G audio -a ahlong
将用户加入audio组再重新登陆就可以了。
我要看电影,装mplayer。
emerge mplayer

一些包是从sf.net下的,所以又要用代理。
不过下到Blue皮肤时,提示验证码不对。试了几次都不对,这下郁闷了。后来看了linuxsir的gentoo解决之道。运行
emerge --sync

问题解决。顺便装上了mplayer。看来gentoo真是发展神速。差不多每天更新,源里都删掉很多又加入很多。
不过用mplayer看电影,放大或全屏时,掉帧相当严重,几乎不能看。mplayer也输出“你的机器太慢了”。试了几种输出驱动都没有改善。在ubuntu下我用的是gl2输出……对了,得装ATI驱动。

我下面的计划是安装显卡驱动,接着装WQY字体,接着把gdm什么的搞定。
安装ATI显卡驱动。
emerge ati-drivers

默认装上的是8.25.18,不过源里8.29.6也已经有了。一切都很顺利。不过运行
aticonfig --initial

有些问题,提示没有xorg.conf,去/etc/X11下看下,果然没有这个东西。我就直接拷了ubuntu的来用,居然也能用。
不过后面知道,这个时候应该做的是
X -configure

然后再aticonfig --inital
检查3D加速是否安装成功。
fglrxinfo

结果还是mesa,而且mplayer的表现也没有任何提升(重启后也是)。
eselect opengl list

发现系统选个还是mesa,于是
eselect opengl set ati

强制选成ati,除了list里变成了ati,没有任何实质性改善。不仅如此,fglrxinfo还不能给出相关信息了。
后面又做了很多尝试,比如说卸掉驱动,再手动运行ati*.run安装等等。
在网上找寻了很久,再结合X启动时的错误信息(一直被我忽略)。
终于搞清楚,是ATI和XOrg7.1的配合有问题,具体说是和AIGLX有些问题。网上很多人都遇到了这个问题,不过好像都没有实质解决办法。没办法,只能等fglrx或Xorg的下一版本了。不过这个问题幸好只是影响到3D加速,不影响2D加速。

不过看电影都不能流畅,我没信心再用下去了,还是等这个问题解决了再用了。虽然ATI大部分显卡都可以用开源驱动,但好像有点复杂,而且很可能从Xorg开始都需要重新编译(从gentoo文档上看的),耗不起那个时间了。

另外想提的是,emerge或者说portage挺先进的。和apt-get相比一个明显的优势就是可以多个emerge一起完全正常地运行。

gentoo真不错!推荐大家都试一下!

相关网址:
http://www.gentoo.org./doc/en/handbook/handbook-x86.xml
gentoo历史
gentoo常用镜像
gentoo中文文档(真后悔安装前没看)

3 条评论:

Unknown 说...

free is always good

匿名 说...

好强,真想有机会请教你,我的网名是gamtse

匿名 说...

我也来一踩。
因为要管理某一服务器,我的 linux 从 gentoo 入门,学到了很多 CLI(Command LIne) 的东西,而不只是图形界面配置。受益匪浅,非常感激 gentoo。
大家共勉吧!