为什么选择Gentoo Linux?
redhat、suse等很方便,但是装了太多无用的东西,rpm没有完全解决包依赖的问题。Debian解决了rpm的问题,但是没有针对自己的机子优化编译。slackware?我不知道软件编译的时候怎么解决依赖性问题。LFS这种需要寄生在别的系统上的东西,只有玩家才喜欢。而Gentoo,就象是Linux中的FreeBSD,能够自己根据情况优化编译,又有类似ports的portage,太优秀了!还犹豫什么?跟我走进Gentoo的世界吧。
本文参考了www.gentoo.org上的安装说明,删除了一些我认为对于初次安装没有用的东西,另外也补充了自己的一些安装体会。
1、关于安装
这一新的boot CD可以从大多数Linux支持的CD-ROM上引导,包括IDE和SCSI接口的。
从CD引导安装,要求至少486和64M内存以上。(虽然Gentoo Linux在64M内存和64M swap空间的机子上成功编译安装过,但编译过程慢得简直就是一场噩梦。)
Gentoo Linux用三个“stage”包中的一个安装。选哪个包要看你希望你自己编译系统的程度。如果是初次安装,就选择stage3吧,具体的区别等入门后再自己细细体会。
LiveCD ISO映象文件从http://www.ibiblio.org/gentoo/releases/1.4_rc4/x86/ 下载。最好选择"gentoo-3stages" 这个映象,它包含了所有的stage1,stage2和stage3的内容。
2、引导
从光盘引导系统,看到一个具有想象力的界面了吗?这里请选择引导的内核参数。如果你的硬件没有特殊的地方,显示器也支持1024X768的分辨率,直接敲“ENTER”。以下是可用的内核与选项或者按F2看帮助。
可用的内核 描述
gentoo 基本的gentoo内核(缺省)
800 800x600 framebuffer模式
1024 1024x768 framebuffer模式(缺省)
1280 1280x1024 framebuffer模式
nofb 关闭framebuffer模式
smp 在framebuffer模式下启动smp内核
acpi 使acpi=on+在init时加载acpi模块
memtest 引导内存检测程序
可选的引导选项 描述
doataraid 从initrd装载ide raid模块
dofirewire 在initrd中探测fireware模块(为了firewire cdroms等设备)
dokeymap 为了non-us的键盘打开keymap选择
dopcmcia 启动pcmcia服务
doscsi 扫描scsi设备(暂停一些以太网卡)
noapm 不装载apm模块
nodetect 由于hwsetup/kudzu和hotplug引起的不能运行
nodhcp 当检测到网卡时dhcp不能自动启动
nohotplug 关闭装载hotplug服务
noraid 不装载evms模块
nousb 关闭装载usb模块,关闭hotplug
ide=nodma 由于ide设备故障强制性关闭dma支持
cacache 缓存需要使用的cd上的部分到内存,这需要40M的内存,但是允许你umount /mnt/cdrom并且mount另外的cdrom.
一般情况下,敲Enter后等一会儿就可以自动以“root”登录了,你可以看见“#”提示,并且可以用ALT+F2,ALT+F3,ALT+F4切换到其他终端。切记先用“passwd”修改root的密码。(开始的root密码是随机生成的)
请注意看屏幕上的一些说明提示。
3 、Load 内核模块
首先,看看加载了什么模块
# lsmod
最重要是网卡、scsi卡等。如果你的网卡没有被自动配置,那么先用ls /lib/modules/*/kernel/drivers/net看都支持什么网卡模块。找到相应的模块,用以下命令load:
# modprobe 8139too
(8139too是我的网卡,请用自己的网卡代替)
如果有scsi,ATA-RAID等设备,也用类似的方法加载。如果有问题,上Gentoo主页先看看吧。
Gentoo LiveCD一般情况下已经打开了硬盘的DMA支持,如果没有,用hdparm设置硬盘DMA:
# hdparm -d 1 /dev/hda (打开DMA支持)
# hdparm -d1 -A1 -m16 -u1 -a64 /dev/hda (打开DMA支持并且加了另外一些安全的加强性能的选项)
# hdparm -X66 /dev/hda (强制打开Ultra-DMA支持,注意可能引起一些问题)
4 、配置网络
用/sbin/ifconfig看看网络是否已经设置好了。如果好了,可以看到
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb)
Interrupt:11
用ping测试一下。如果正常,恭喜了!
如果通过ADSL上网(没有宽带?那就停止吧,不要再继续了^_^),需要运行脚本
# adsl-setup
# adsl-start
如果有问题,检查/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets这两个文件。
最简单的方法是
# net-setup eth0
照着提示设置。
如果DHCP服务可用,那么
# dhcpcd eth0
实在不行,手工配置也不难
# ifconfig eth0 192.168.168.168 broadcast 192.168.168.255 netmask 255.255.255.0
# /sbin/route add -net default gw 192.168.168.1 netmask 0.0.0.0 metric 1 (设置缺省网关)
注意修改/etc/resolv.conf,我的如下:
domain mydomain.com
nameserver 202.101.103.55
nameserver 202.101.103.54
(gentoo默认编辑器是nano。vi需要另外安装。)
如果使用代理,那么还要
# export http_proxy="machine.company.com:1234"
# export ftp_proxy="$http_proxy"
# export RSYNC_PROXY="$http_proxy"
然后ping www.sina.com.cn试试网络是否正常?
5 、设定系统时间(这个可以省略不做)
# date
Thu Feb 27 09:04:42 CST 2003
(If your date is wrong, set your date with this next command)
# date 022709042003
(date MMDDhhmmCCYY)
6 、文件系统、分区和块设备
我喜欢使用cfdisk分区,fdisk不够直观。
# cfdisk /dev/hda
至少得一个/和一个swap分区,这个就不多说了,应该都知道吧。假设
/boot /dev/hda1 ext3 (100M)
swap /dev/hda2
/ /dev/hda3 reiserfs(1.5G)
分好区后,创建文件系统,还是用ext3和reiserfs吧,其他的自己看gentoo主页吧。
# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3
7 、mount分区
首先,激活swap分区
# swapon /dev/hda2
接着,创建挂接点并且mount分区
# mkdir /mnt/gentoo
# mount /dev/hda3 /mnt/gentoo (先mount “/” 分区)
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot (再mount "/boot"分区)
8 、Stage包和chroot
初次安装,选择stage3吧
# cd /mnt/gentoo
# tar -xvjpf /mnt/cdrom/gentoo/stage3-x86-1.4_rc4.tar.bz2
然后进入chroot
# mount -t proc proc /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# chroot /mnt/gentoo /bin/bash
# env-update
# source /etc/profile
9 、用sync取得Current Portage
# emerge sync
需要的时间看你的网络快慢了。
10 、设置Gentoo 编译优化选项(make.conf)
如果不是为了这些优化的编译选项,用debian算了。先安装一个断点续传的软件
#emerge net-www/prozilla
完成后
# nano -w /etc/make.conf
至少修改两个地方:第一个地方是CFLAGS="-O3 -mcpu=i686 ?pipe"根据你的CPU改一改,比如我的是P4的CPU,我就改为CFLAGS="-O3 -march=pentium4 ?pipe".第二个地方是把注释掉的#FETCHCOMMAND='/usr/bin/proz --no-getch -s ${URI} -P {DISTDIR}'的#号去掉,就是打开PROZILLA,修改好后,按CTRL+X保存退出。
11 、从stage3开始
我们选择了stage3,所以就直接从这开始,如果选择stage1,请看附录一。
# export CONFIG_PROTECT="_*"
# emerge -up system (这里system也可以是world)
# emerge -u system (同上)
# unset CONFIG_PROTECT
12 、设定时区
中国的应该是这个吧
#ln ?sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
13 、安装内核与系统的log守护程序
一般情况下,都是这个了
#emerge sys-kernel/gentoo-souces/gentoo-sources-2.4.20-r3.ebuild
完成后,编译内核
# cd /usr/src/linux
# make menuconfig
# make dep && make clean bzImage modules modules_install
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
需要注意的是Gentoo使用devfs文件系统,编译的时候,选择“Code maturity level options”,选Y,然后到”File system”,到”/dev File system”,选Y,把