这几天有机会接触了gentoo的安装,看介绍,gentoo的安装比较难,需要手动做很多工作。我把这几天整理的安装文档发一下,顺便把自己的一些感想说一下。
感想:
1. 老版本的gentoo和2006.0的版本安装过程和配置有很大变化,比如安装过程中一些选项参数;网络配置文件/etc/conf.d/net的文件格式。网上搜到的中文资料都是老版的介绍,新版的还没翻译过来。要想安装最新版的,还是先把英文的指导看一下吧。
2.gentoo的三段安装,stage1是设置个性化的c编译器和库函数;stage2是系统布局的自定义;stage3是编译内核。我个人感觉前2段并没有什么意义,内核编译倒是很有必要,可以给系统瘦瘦身。从gentoo新的发行计划里,也可以看出已经弱化了stage1和stage2的使用。
3.2006.0版的gentoo,x86版中,只提供了mini CD和live CD,取消了Universal CD和Package CD,我感觉是个很大的失败。live CD安装方式就像傻瓜一样,让你鼠标指指点点就装上系统,很少有选择余地,他是在编译内核之后才给你选择空间,并且这张光盘里的文件并不是常规软件包,如果你想手动把文件包拷贝到硬盘,自己有选择的安装,是不可能的。要想有选择,先使用mini CD启动,然后必须联网通过portage完成,因为你找不到可以拷贝到本地的Package文件包(不管是光盘还是网络下载形式)。。以前的Universal和Package CD包,就包括了大部分安装过程中需要的软件包,如果没有CD,可以下载iso文件刻录。但是2006.0版的X86发行版,取消了这两种方式,并且网站上连相关的包文件下载都没有。
4.我还是很欣赏gentoo的安装过程的(我指的全手工方式),安装过程也就是linux系统建立的过程,你能够了解一个基本的linux系统,都需要什么,需要怎么去安装,配置。无形中,提高了你对linux系统的操作能力。
5.gentoo有些和freebsd一样的地方,比如使用/etc/rc.conf作为全局配置文件;使用portage树作为软件包安装和维护的统一工具,可以通过更新portage目录,来更新软件。
gentoo安装
1.安装预备知识:
gentoo的口号是安装你需要的。在安装过程中,它会给你很大的选择余地。
他的安装分为三种,stage1,stage2,stage3。分别对应不同的安装级别。
stage1:会让你控制安装过程的每一步。从启动、配置网络、硬盘分区,再到软件安装。并且他会联网到互联网,安装最新版本的系统和软件。
stage2:系统会为你配置启动过程,但是仍然会给你一定的控制权,让你编译一个你自己的系统,也需要联网安装。
stage3:系统会为你做好大部分事情,安装一个预设的系统。不需要联网安装。
2.安装介质介绍
mini CD 只包括一个启动环境,不包含任何stage。启动和配置好系统环境后,需要手工指定一个stage进行安装。
Universal CD 包含启动环境,以及stage1和stage3包,还有各种软件包。
pakage CD 包含cd中不包含的其他包
live CD 针对x86的简易安装包,就像ubuntu那样,图形界面进入,从stage3后开始安装,但是不会有手动更改内核参数步骤,属傻瓜式安装。
下面的安装步骤以mini CD或Universal CD为例。
3.安装基本步骤
这是一个基本的安装流程,可能有的stage已经帮你把这部分做了,不需要你手工来做,但是我还是把这个步骤列出来。
启动:启动进入到linux系统,以root用户,没有密码
配置网络:加载网卡驱动,配置ip,netmask,broadcast,default GW,nameserver
modprobe,ifconfig,route add default gw ${GATEWAY},net-setup,adsl-setup,adsl-start
/etc/ppp/pap-secrets,/etc/ppp/chap-secrets ,dhcpcd eth0
ls /lib/modules/`uname -r`/kernel/drivers/net
ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
硬盘分区:硬盘分区,格式化
fdisk,p,f,a,w, mke2fs,mke2fs -j -O dir_index ,mkswap,
挂载文件系统
swapon,mount /dev/hda1 /mnt/gentoo,mkdir /mnt/gentoo/boot,mount /dev/hda1 /mnt/gentoo/boot
mkdir /mnt/gentoo/proc,mount -t proc none /mnt/gentoo/proc
检查系统时间:date MMDDhhmmYYYY
解压stage至/mnt/gentoo根目录
这个stage可以是从网上下的,也可以是Universal CD中的,tar -xvjpf stage3-x86-2006.0.tar.bz2
安装portage:如果你不打算从源代码编译portage,可以从Universal CD中安装它。
ls /mnt/cdrom/snapshots
tar -xvjf /mnt/cdrom/snapshots/portage-20040710.tar.bz2 -C /mnt/gentoo/usr
mkdir /mnt/gentoo/usr/portage/distfiles
cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/
配置portage参数(可选):
磁盘/mnt/gentoo/etc/make.conf.example /mnt/gentoo/etc/make.conf
Chrooting (切换到新系统环境中)
可选: 选择最快的镜像服务器mirrorselect -a -s4 -o | grep -ve '^Netselect' >> /mnt/gentoo/etc/make.conf
拷贝 DNS 信息cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
挂载 /proc and /dev,目的是使用cpu保护模式,和使用dev设备
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
进入新环境
# chroot /mnt/gentoo /bin/bash
# env-update
* Caching service dependencies...
# source /etc/profile
# export PS1="(chroot) $PS1"
可选: 更新 Portage 树emerge sync或emerge-webrsync
可选:配置 USE 参数
默认的 USE 设置可以在 /etc/make.profile/make.defaults 中找到. 也可以写到/etc/make.conf中.
查看所有可用的 USE 值
# less /usr/portage/profiles/use.desc
USE 设定例子
USE="-gtk -gnome qt kde dvd alsa cdr"
可选: 使用分布式编译 (Distributed Compiling)
stage1:系统自举
可选: 先下载软件源码包
cd /usr/portage
script/bootstrap.sh -f
系统自举
script/bootstrap.sh如果你打算用 2.6 内核, 就应该用 script/bootstrap-2.6.sh
stage2:安装系统软件包
可选: 看看将要做些什么emerge --pretend system | less
可选: 先下载软件源码包emerge --fetchonly system
构建系统emerge system
stage3:配置内核
设定时区信息
# ls /usr/share/zoneinfo
(假设您打算用 GMT 时间)
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime
选择一个内核:可以在gentoo的网站上查看现有的内核包以及介绍
gentoo-sources gentoo打过补丁的内核
vanilla-sources 官方内核
安装内核源码
# emerge gentoo-sources
修改内核源码的符号链接
cd /usr/src
# ln -s linux-2.4.26-gentoo-r6 linux
编译内核的两种方法:两种方法产生的内核文件是有差异的,要想做到自己掌控,还是选择手动编译好
手动编译:
# cd /usr/src/linux
# make menuconfig
编译内核
(对于 2.4 内核)
# make dep && make bzImage modules modules_install
(对于 2.6 内核)
# make && make modules_install
安装内核
# cp arch/i386/boot/bzImage /boot/kernel-2.4.26-gentoo-r6
# cp System.map /boot/System.map-2.4.26-gentoo-r6
备份您的内核配置
# cp .config /boot/config-2.4.26-gentoo-r6
替代: 使用 genkennel
可选:安装 genkernel
# emerge genkernel
genkernel all
查看已创建的内核映象与 initrd # ls /boot/kernel* /boot/initrd*
emerge 并启用 hotplug ,使得系统启动时自动扫描和加载硬件设备
# emerge hotplug
# rc-update add hotplug default
安装额外的模块,比如内核没有自带的一些硬件驱动等,见下表。
Ebuild 用途 (Purpose) 命令
nvidia-kernel 为 xorg-x11 提供 NVIDIA 图形加速 emerge nvidia-kernel
nforce-net 针对 NVIDIA NForce(2) 主板上集成的网卡 (ethernet controller) emerge nforce-net
nforce-audio 针对 NVIDIA NForce(2) 主板上集成的声卡 emerge nforce-audio
e100 针对 Intel 的 e100 高速网卡 (Ethernet Adapters) emerge e100
e1000 针对 Intel 的 e1000 千兆级网卡 (Gigabit Ethernet Adapters) emerge e1000
emu10k1 Creative Sound Blaster Live!/Audigy 支持 emerge emu10k1
ati-drivers 为 xorg-x11 提供 ATI Radeon 8500+/FireGL 图形加速 emerge ati-drivers
ati-drivers-extra ATI 的一些带图形界面的工具 emerge ati-drivers-extra
查看会被安装的软件包列表
# emerge --pretend emu10k1
看 USE 参数的使用情况
# emerge --pretend --verbose emu10k1
[ebuild N ] media-sound/aumix-2.8 +gpm +nls +gtk +gnome +alsa -gtk2
取消 (diselected) 所有的 USE 参数来 emerge emu10k1
# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1
配置模块,让额外的模块在启动时加载
查看现有模块列表 它们列在 lib/modules/<内核版本>/目录中
# find /lib/modules/<内核版本>/ -type f -iname '*.o' -or -iname '*.ko'
编辑 /etc/modules.autoload.d/kernel-2.4 或者kernel-2.6文件
添加一行内容,就是模块文件名去掉.o,比如,3c59x.o 模块,就写3c59x
运行 modules-update 以确认 (commit) 您对 /etc/modules.conf 文件的修改
配置系统
文件系统配置,编辑/etc/fstab,把文件系统信息写进去,格式如下:
mount para是指挂载是用什么参数,noauto指不自动挂载;noatime不记录访问次数,能提高一些访问效率;user允许普通用户挂载。
dump是指是否需要对此分区dump,
check是指非正常关闭是的检查顺序,根分区为1,其他为2,0为不检查
partition mountpoint filesystem mount para dump check
dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
最好找个好的系统,找个例子照着写
配置网络:
网络基本信息保存在etc/conf.d/net文件中,可以参考net.example修改,一个例子如下:
(使用 DHCP)
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"
(使用静态 IP)
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )
启动时自动连接网络
把net.eth0 添加到默认运行级别 # rc-update add net.eth0 default
创建更多的初始化脚本
# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default
可选: 让 PCMCIA 工作起来
安装 pcmcia-cs # USE="-X" emerge pcmcia-cs
把 pcmcia 添加到默认运行级别 # rc-update add pcmcia default
配置系统信息:gentoo用/etc/rc.conf 作为整体的, 系统级范围的配置。注意keymap的选择。
Opening /etc/conf.d/clock
# nano -w /etc/conf.d/clock
If your hardware clock is not using UTC, you need to add CLOCK="local" to the file.
Otherwise you will notice some clock skew. Furthermore, Windows assumes that your
hardware clock uses local time, so if you want to dualboot, you should set this
variable appropriately, otherwise your clock will go crazy.
安装必需的系统工具
如果安装2.4内核,需要卸载udev,安装devfsd。因为2.4不支持udev
# emerge --unmerge udev
# emerge devfsd
系统日志记录器:
装系统日志器
(如果您用的是 stage3 压缩包, 首先得卸载 syslog-ng)
# emerge unmerge sysklogd
(然后安装您选择的日志器)
# emerge syslog-ng
# rc-update add syslog-ng default
可选: Cron 守护进程
安装 cron 守护进程
# emerge vixie-cron
# rc-update add vixie-cron default
(如果您选择了 dcron 或 fcron, 则您还需要运行这个:) # crontab /etc/crontab
If you want to index your system's files so you are able to quickly locate them using
the locate tool, you need to install sys-apps/slocate.
# emerge slocate
可选: 文件系统工具
文件系统 工具 安装命令
XFS xfsprogs emerge xfsprogs
ReiserFS reserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils
可选: 网络工具
安装 rp-pppoe # USE="-X" emerge rp-pppoe
安装 dhcp # emerge dhcpcd
配置启动器 (Bootloader)
可选,配置帧缓冲,就是在启动过程中使用图形模式,用vga参数来实现。各种值如下:
640x480 800x600 1024x768 1280x1024
8bpp 769 771 773 775
16bpp 785 788 791 794
32bpp 786 789 792 795
使用grub:
安装grub: emerge grub
#grub --no-floppy 启动grub,不检测软驱
# grub> root (hd0,0) (指定您的 /boot 分区所在)
# grub> setup (hd0) (将 GRUB 安装到 MBR 区)
# grub> quit (退出 GRUB 环境 (shell))
配置/boot/grub/menu.lst,默认的例子如下,这是一个手动编译内核后的例子,所以里面没有initrd的句子:
# 默认情况下启动列表中的哪个选项. 0 为第一项, 1 为第二项, 依此类推.
default 0
# 多久之后启动默认选项
timeout 30
# 多美好的事, 我们可以用图片来加点情调 :) (Nice, fat splash-image to spice things
# 如果没装图形卡的话, 那就得把下面这句注释掉
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.4.26-r6
# 内核 (或操作系统) 所在的分区
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/hda3
# 下面三行仅用于您打算和 Windows 双启动的情况
# 本例中我们假设您的 Windows 装在 /dev/hda6
title=Windows XP
rootnoverify (hd0,5)
chainloader +1
使用lilo:
安装lilo:emerge --usepkg lilo
修改配置文件/etc/lilo.conf,例子如下:
boot=/dev/hda # 将 LILO 装到 MBR
prompt # 让用户有机会可以选择其他部分(section)
timeout=50 # 等待 5 (五) 秒后启动默认部分
default=gentoo # 超时后默认启动 "gentoo" 部分
# 如果您不使用帧缓冲的话, 请将下面这行移除
vga=788 # 帧缓冲设置, 请按您所需调整
# 非 genkernel 用户
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo # 我们为这一部分起的名称
read-only # 以只读的 root 启动, 请勿更改!
root=/dev/hda3 # 根文件系统所在
# genkernel 用户
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/ram0
append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3"
initrd=/boot/initrd-2.4.26-gentoo-r6
# 下面两行仅在您要和 Windows 双启动时需要添加
# 设 Windows 安装在 /dev/hda6.
other=/dev/hda6
label=windows
执行/sbin/lilo让配置生效。
用户管理
passwd修改root密码
如果您希望 root 可以通过串行终端 (serial console) 登陆, 则将 tts/0 添加到 /etc/security:
# echo "tts/0" >> /etc/security
重启系统
# exit
# cd /
# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
# reboot