LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 758|回复: 4

gentoo安装和使用体验

[复制链接]
发表于 2011-3-11 14:51:35 | 显示全部楼层 |阅读模式
进行了将近一天的惊心动魄的升级后(很庆幸系统没有挂掉,而且感觉更快了),终于想静下心来把一个星期以来的安装、配置以及升级gentoo大致写出来,一是想纪念一下,另外也许对其他想用gentoo的朋友有一些参考价值。
我使用linux不算很长,大概用了一年半的ubuntu和一年的archlinux。用archlinux时逛论坛经常有人谈及gentoo,好像用gentoo的都是高手。当时感觉可笑,各各发行版区别都那么大吗,之前用ubuntu转到archlinux也就是显卡驱动那碰到点问题,其他都比较顺利,gentoo又能难到哪去呢?另外gentoo安装软件都是要编译的,我的本性能也不好,就想如果以后换了新的再考虑吧,所以中间虽然想了几次,但一定没有尝试。
一个星期前(2010 3月4号),我把mplayer和ffmpeg都手动升级下,发现编译起来有点纠结,mplayer需要ffmpeg的源码,但ffmpeg还要单独编译,后来让mplayer用ffmpeg的so后升级ffmpeg后mplayer居然挂了,重编了几回才弄好。系统里有好几个包都自己编译,主要是想去掉不用的依赖,但手动维护太麻烦了,于是又想到了gentoo。当时已经10点多了,于是想第二天开始着手。
废话完毕。

之前的硬盘分区就这样的:
/dev/sda1 ext4 6g /
/dev/sda2 2g 未使用
/dev/sda3 ntfs 30g
/dev/sda4 jfs 66g /home
其中/dev/sda2是以前的swap,但后来不用休眠功能后感觉swap意思不大,就不用了。其余的三个分区都比较重要,基本动不得,这给怎么装啊。想来想去,先用sda2试试吧,如果装不上就没事了,装上再进一步考虑吧。
于是把sda2格成了reiserfs(某人说这种格式好,但我从来没用过,正好体验一下)。下载 stage3-i686-20110301.tar.bz2 和portage-latest.tar.xz。(前一个文件一周一更新)(我用的32位)
国内的镜像有:
http://mirrors.163.com/gentoo/
http://mirrors.sohu.com/gentoo/
http://mirror.bjtu.edu.cn/gentoo/
http://mirrors.xmu.edu.cn/gentoo/
这两个文件可以在里边找。

把sda2挂在/media/z上,并把文件放进去:
sudo mount /dev/sda2 /media/z
sudo tar xvpf stage3-i686-20110301.tar.bz2 -C /media/z
sudo tar xvpf portage-latest.tar.xz -C /media/z/usr
准备chroot环境:
sudo mount -t proc none /media/z/proc
sudo mount -vt devpts devpts /media/z/dev/pts
sudo chroot /media/z/ /bin/bash
现在就chroot进去了,之后的操作如不特别说时都是在这个环境下进行的。

初始化环境变量:
env-update;source /etc/profile

修改/etc/make.conf,这个非常重要,最好首先改到位,不然之后有你受的(我就是,不得要领,改了多回,改完还要重编译各种东西):
加入源:
GENTOO_MIRRORS="http://mirror.bjtu.edu.cn/gentoo/"
SYNC="rsync://mirror.bjtu.edu.cn/gentoo-portage"
上边那四个网站都有说明如何写这个。
MAKEOPTS="-j3" #-jn,n是内核数加1,多线程编译用的,不设置也行
INPUT_DEVICES="keyboard mouse synaptics" #键盘、鼠标、触摸板
#下面的是很重要的USE,开始时可以只用USE="X gtk",但最开始写好以前就省事了,不然以后会麻烦重重。
USE="-pppd -alsa -fortran sse sse2 ssse3 mmx sdl v4l v4l2 oss oss4 X gtk unicode truetype jpeg png gif cairo zsh-completion fontconfig video opengl"
VIDEO_CARDS="radeon" #这个至关重要,显卡驱动类型,具体请查看官方wiki,我的是ati x2300,只能用这个开源驱动。
#CCEPT_KEYWORDS="~x86" #这个要注意,如果要用最新的软件,可以加上这行,但如果是第一次装,强烈不建议加,不然会提升安装难度
先改这些就差不多了。

改/etc/locale.gen,加(按照自已需要写)
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GB2312 GB2312
zh_CN.GBK GBK
运行locale-gen

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改/etc/conf.d/clock
CLOCK="local"
TIMEZONE="Asia/Shanghai"

改/etc/resolv.conf,把本机的/etc/resolv.conf内容写出其中,不然上不了网。
改/etc/fstab,这个也可以安装完内核再写,这个应该都会写。

查看网络是否正常(如果电脑联网了,resolv.conf也改了就可以上了),然后同步portage(如果portage-latest.tar.xz是刚下的也可以略过这步,但最好还是运行下吧):
emerge --sync
安装内核源码:
emerge gentoo-sources
下边就开始编译内核了,如果有手动配置内核的经验强烈建议手动配置编译:
cd /usr/src/linux
make menuconfig
make; make modules_install
cp arch/x86/boot/bzImage /boot
,不然最好使用genkernel:
emerge genkernel
cd /usr/src/linux/
genkernel --menuconfig all

关于配置内核请上网自行查询,如果下一种方式实在不会也可以不配置,一般也能启动起来。
编译时间和很多因素有关,几十分钟到几小时不等。

用户相关:(osily是自己要创建的用户名)
passwd
useradd -m -G audio,cdrom,portage,usb,video,wheel,users -s /bin/bash osily
passwd osily

如果fstab之前没改好现在一定要改好,然后改自己系统的/boot/grub/menu.lst。
此处官方wiki写的很清楚,建议查看。

现在可以继续安装其他软件,如xorg-server,但最好还是重启看看能不能进去。
如果不能的话多半是内核(尤其是自己编译的内核)的问题,如果内核没问题,看看/boot/grub/menu.lst是不是有问题,多改几回。
如果可以正常进去的话,可以直接在这继续编译,但最好还是返回原来的系统继续。

可以写个类似这样的脚本:
#!/bin/bash
sudo mount /dev/sda2 /media/z/
sudo mount -t proc none /media/z/proc
sudo mount -vt devpts devpts /media/z/dev/pts
sudo chroot /media/z/ /bin/bash

运行就可以进去chroot环境,如果进去环境变量不正常运行:
env-update;source /etc/profile
然后就是安装需要的东西了,主要看自己了,比如dhcpcd、sudo、vim……,一般的工具直接
emerge xxx就可以了,emerge的具体用法网上查吧。
但如果你想要桌面环境的话,最好按以下的步骤:
安装点基本工具后,直接安装xorg-server,注意前提/etc/make.conf里显卡和输入设备等变量一定是正确的。
这会安装许多东西,基本要用一个小时以上,耐心等待吧。
安装完后:(xorg-x11和驱动相关,请查看官网wiki相关部分,这部好像可以省略,记不清了)
eselect opengl set xorg-x11
如果安装好了,可以先重启试试,进去后,运行startx,这是很刺激的一刻了,如果显示找不到xterm找不到什么的,恭喜你,显卡驱动基本正常了,不然就会有各种稀奇古怪的问题&……&×……&……%×&,那么也恭喜你,在接下来的时间你将对安装显卡驱动、写xorg.conf等有深刻而透彻的了解。
如果是前者,你可以回去继续安装其他东西,如xterm(最好安装完再重启下看看是不是正常,如果不正常,那么你可以回过头处理显卡驱动问题了)、openbox甚至gnome、kde。下文再说。
如果是后者或者刚才的xterm显示分辨率不对、鼠标键盘触摸板不能用,那么你要折腾一会了,虽然之前安装内核没有难到你,这里很可能让足够纠结甚至放弃。

这也是我安装过程中最混乱的地方,已经没法清晰地回忆了,因为这的问题我先后重装了4次,(第一次因为2g空间不够,2、3次都因为X段错误,非常纠结),而且其中改了几回显卡驱动类似,重编译了多回。
如果是X段错误,看出错信息是不是加载某个so出的错,如果是可以先把那个so移到别的地方重试。如果不是段错误,可能是xorg.conf有问题,有的驱动是不需要这个问题的,默认也是没有了,所以如果有先删掉试试,不行的话用
X -configure
生成一个新的再
X -config xorg.conf.new
尝试
如果不行的话,还很有可能是内核没配置的问题,这往往比较麻烦,可以先仔细阅读官网wiki,不行再去linuxsir等论坛去找找或者问问。重编译内核后最好把和X相关的包也重编译下(有许多……)。
再有很可能是你选择的驱动不支持你的显卡,比如老的ati显卡很多都不能用现在的闭源驱动。这样可以试试其他的,改/etc/make.conf,然后必须把相关的包重新编译。
还有其他的可能吧……
如果xterm能进去了,但鼠标键盘等不能用,保证/etc/make.conf正确的话,安装xf86-input-evdev,如果
xf86-input-keyboard xf86-input-mouse xf86-input-synaptics 没有的话说明/etc/make.conf没写对,这时安装上这几个包也未必好用,可能要重新编译更多包。
这个问题应该是比较好解决的。
如果分辩率不正常,首先要确认用的不是xf86-video-vesa的驱动(按我的流程不会安装到这个包),如果是那很可以分辨率就不调不正常了。然后还是显卡驱动安装问题,还有xorg.conf,上网多找找吧。
显卡驱动问题如果一时解决不了的话,可能会拖很长时间,甚至直到放弃,或者你甘愿不用图形界面。

如果以上都正常了,gentoo离你就很近了。
接下来主要部署桌面环境,推荐比较轻量的,(如openbox、fluxbox、fvwm、dwm、awesome等),可以配合面板(tint2、bmpanel、pypanel等),不然要花很长时间编译。
安装完后就按自己的需要进行配置了。

现在还没有涉及的问题主要还有:声卡、网卡、摄像头等设备的驱动,以及触摸板不正常等。

如果触摸板用手指点无反应,但手指移动有反应,试试:
synclient TapButton1=1
如果横向滚动不能用:
synclient HorizEdgeScroll=1
其他问题请查询synclient用法
要把上边的命令放在启动脚本里,如是.xinitrc,确保它能在进入X前被调用。

声卡问题,如果用alsa的话,genkernel默认编译的内核包含了alsa驱动,应该就要以正常使用了,如果没包含就要有点麻烦。
如果内核包含了oss驱动(这是旧版本的),可能也可以正常用,但效果应该不好,能忍就算了吧。
如果都没有的话如果内核启用的声卡支持(menuconfig里有一层的里边是alsa和oss,它的上一层要选上),你可以选择安装alsa或者oss驱动,个人推荐用oss4,它音质比较好,占用资源少(我试和内核的alsa里比mplayer放mp3时cpu占用省了一半)。但安装oss4不是很容易,因为它不在portage里,要用layman,还要能连接国外网。alsa没装过,官网wiki有详细说明。
如果现在就要安装oss4,也好:
emerge layman
layman -a oss-overlay
然后再/etc/make.conf里加一句:
source /var/lib/layman/make.conf
然后
emerge oss或者emerge oss-devel
如果网络没问题的话应该正常安装。
要保证/usr/src/linux指向的是当前用的内核
然后/etc/init.d/oss start,一般要等几分钟因为要编译内核模块,如果成功了基本就可以用了,可以试试osstest,不成功的话问题就麻烦了,很可能你要重新编译内核了,看是不是有什么漏选或多选了。在此处我重编译了一次内核,因为之前把alsa编译进去了。
如果解决不了还是多读官网wiki,不行再逛论坛或者问别人。
但总体声卡驱动安装还是比较容易的。

然后你可能发现无线网卡没驱动起来,运行
ifconfig -a
找不到无线网卡,那么恭喜你又基本又需要重编译内核了。
而且要先确实自己网卡的型号(lspci|grep net),然后去menuconfig选项里找,如果没有的话可能要再安装驱动。我的是Atheros,调整选项重编译内核可以了。不行的话还是看官网wiki,上过说的比较清楚,各论坛也有许多相关的贴子。

摄像头的话看/dev/video0是否存在,如果不存在,那么你应该猜到了,再调整选项重编译一回内核吧。其实应该只重编一回把驱动问题都解决了,不然真是痛苦啊。关于怎么改选项wiki和论坛也有……

如果你还有其他一些东西(如麦克风)无法驱动,解决的办法是类似的。

注意,即使你用的genkernel编译的内核也很可能少各种驱动,所以如果对内核选项不了解的话基本就寸步难行了。但如果感觉某个设备可以先不用的话可以先学习点基础东西再回过来处理。

如果你的各种驱动都正常了,那么基本问题都解决了,剩下的问题一般不会很难如果你不想再折腾了。

你可以安装上所有自己需要的东西,而且安装过程一般不会出什么问题,除了时间比较长。
你可以好好熟悉gentoo的和配置文件和启动流程,按自己的方式修改。
再有就是熟悉emerge和其他相关命令是非常必要的,但这也许比你想象的复杂,开始我想到相关命令和archlinux的一一对应起来,但发现这是不大可能的,二者差别很大,你必须从头认识和了解。

网上有些资料是过时的,你很可能发现上边说的某个文件系统里根本就没有,但到现在应该有足够的能力解决这样的问题了。

如果没有什么其他的需求,就可以正常用了。

如果你想启用~ARCH,那么在升级时还要折腾一番,而且如果准备不充分很可以把辛辛苦苦配好的系统弄得一团糟甚至挂掉。
如果你准备好了要用~ARCH的软件(更新,但出bug的几率更高),在/etc/make.conf(32位的)里加:
ACCEPT_KEYWORDS="~x86"
然后选择合适的时间进行系统升级:
gentoo的升级尤其是大幅度升级不想某些发行版是一条命令的事,要做好充足的准备。
如果你想用新的gcc编译包,可以先升级gcc (注意,编译gcc要1G以上的空间,具体我也不清楚,如果/var/tmp是内存虚拟的一定要看看够不够2G或更多,如果没有还是先用硬盘吧):
emerge -u gcc
但这条命令我没用,当时我感觉安装和升级是一个概念,就直接用了
emerge gcc 我不大清楚结果是不是一样的。
但这并不会直接升级gcc,而不是两个gcc并存,而且默认是之前那个,要手动调整成后一个:
gcc-config -l
gcc-config i686-pc-linux-gnu-4.5.2 #选择后一个版本
然后最要先升级python(我开始没有这么做,出了不少麻烦)
不想有些发行版python2和python3是分两个包,gentoo里这是一个包,现在如果你要把python2.6升级到2.7,直接
emerge -u python,它会安装python2.7但不会马上卸了2.6,此时的操作非常重要:
不要忙着去升级其他包而要先把python的问题解决明白了,不然你可以自己感受下~~
先把python2.7设成默认的python2
eselect python list
eselect python set --python2 num #num是上面输出的行号
python-updater
这将会用不少时间,其中会升级一些包。
如果没有错误,那么可以升级其他包了:
emerge -uDN system
同样要用许多时间,如果中间出错了只是按实质情况解决了。如果有的包提示python语句错误很可能是有的用python2但写的是#!/usr/bin/python,这样的话要先手动按之前的方法把默认python改成python2:
eselect python list
eselect python set num
一般就能解决。

之后可以升级其他包:
emerge -uDN world

这个运行之后还没有完,一定要注意:
清除没有用的包
emerge --depclean
检查依赖
revdep-rebuild
更新配置文件
dispatch-conf

更新配置文件时要注意,不要把自己有用的配置给覆盖了,或者留下了不兼容的旧配置文件,了解清楚再选择。

注意在整个升级前要把USE确定好,不要在升级中改USE,不然要能要重编译许多包。

整个升级要用挺长时间,如果要中断可以用ctrl+c,恢复再用之前的命令,如果要关机就要注意,系统完全可以启动不正常,如分区不能正常挂载、X不能启动、声音不正常等,要有能力处理这些问题,但有些问题是要等升级完才能完全解决的,所以先临时处理下就行。

升级中一些低层的包有较大改动,如openrc,这样配置文件会有不小的改变,要了解清楚再作改动。

如果升级圆满成功,那折腾基本告一段落了,可以去做自己喜欢做的事了。

其中许多细节记不大清了,许多东西也是参考了网上的许多资料。
发表于 2011-3-11 17:03:02 | 显示全部楼层
很实用!
话说当年我装Gentoo前装备工作就用了一周时间,安装时一次成功。
回复 支持 反对

使用道具 举报

发表于 2011-3-11 17:07:30 | 显示全部楼层
留个记号,以后好查看。

楼主写的很生动,我也是在X卡了好长一段时间。
现在有liveDVD了,可以更方便安装
回复 支持 反对

使用道具 举报

发表于 2011-3-11 20:53:47 | 显示全部楼层
呵呵,其实很多人linux玩不转就是没装好驱动,或者说没配置正确内核。gentoo一直强调内核配置,所以一旦入门,大多数人都对linux的驱动安装驾轻就熟。
我觉内核安装完重启进入系统后,不用急着去配置图形界面,先在命令行下把基本的系统升级。比如我一般会先把工具链升级(linux-header,glibc,binutils,gcc,libsigc++...),然后就是一些基础的库,比如openssl等。接着把perl,python升级,以及它们的某块。之后可以再把一些工具升级,比如(coreutils,shadow等,诸如sys-*一类的)。当你把基本系统升级的差不多了,再去安装图形界面,这样就可以减少编译次数,节省时间。
回复 支持 反对

使用道具 举报

发表于 2011-3-11 22:26:38 | 显示全部楼层
Post by suddenkiller;2130720
呵呵,其实很多人linux玩不转就是没装好驱动,或者说没配置正确内核。gentoo一直强调内核配置,所以一旦入门,大多数人都对linux的驱动安装驾轻就熟。
我觉内核安装完重启进入系统后,不用急着去配置图形界面,先在命令行下把基本的系统升级。比如我一般会先把工具链升级(linux-header,glibc,binutils,gcc,libsigc++...),然后就是一些基础的库,比如openssl等。接着把perl,python升级,以及它们的某块。之后可以再把一些工具升级,比如(coreutils,shadow等,诸如sys-*一类的)。当你把基本系统升级的差不多了,再去安装图形界面,这样就可以减少编译次数,节省时间。


很有道理。我每次都是这么干的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表