Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103604822
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-29 08:31:34

作者: ginceo  出自:
Gentoo是一个高定制性的Linux发行版,安装Gentoo有很多方式,可以采用类似Debian/Ubuntu式的LiveCD,直接去Gentoo官网下载最新的LiveCD,刻盘或硬盘安装,这里可以参考我的博文Debian初体验。

这里为了学习更好的学习Gentoo,我采用最原始的安装(其实还有更primitive),我现在使用的系统Debian,大致思路是单独划区,然后挂载到Debian下,chroot里面安装Gentoo。

一、分区
首先需要了解自己的硬盘是是采用哪种设备架构,通常现在都是/dev/sda,老式的硬盘是/dev/hda;分区方案最简单也是最不容易出问题就分成两个区:‘/’和swap,我考虑有一些个人文档需要备份,把/home单独划区,portage树不经常改变,可以单独划区/usr/portage,/boot里面主要是内核文件和grub,也单独划区,故大致分区方案如下:

/dev/sda3 /boot reiserfs
/dev/sda6 / reiserfs
/dev/sda7 /home reiserfs
/dev/sda8 /usr/portage reiserfs
/dev/sda9 none swap #这里和Debian共用一个交换区,省1G空间

Linux下分区工具还真不少,fdisk、cfdisk、sfdisk都很不错,很容易上手,fdisk是交互式分区工具,cfdisk是基于curse命令行菜单分区工具,推荐cfdisk,界面人性化,不用记命令,不过这里还是以fdisk为例:输入fdisk /dev/sda进入分区交互命令界面,输入m得到帮助,出现命令列表,先通过d删除一个分区,然后n添加这个分区,p可以输出当前/dev/sda的分区表,l列出所有的分区类型,分区完事,w写分区表并退出。使用和Debian同一个交换区,如果自己磁盘空间很大,也可以自己单独划, 用mkswap格式化swap分区,swapon启用swap分区

二、文件系统
Linux下很多文件系统类型,各有各的特色,Debian下文件系统(ext3、reiser、xfs、jfs)比较,作桌面ext3和reiserfs最常用,而reiserfs的优势在于,它是基于B*Tree快速平衡树这种高效算法的文件系统,例如在处理小于1k的文件比ext3快10倍;再一个就是reiserfs空间浪费较少,它不会对一些小文件分配inode,而是打包存放在同一个磁盘块 (簇) 中,ext2/ext3是把它们单独存放在不同的簇上,如簇大小为 4k,那么2个100 字节的文件会占用 2 个簇,reiserfs则只占用一个,这里我采用reiserfs。

创建reiserfs需要mkreiserfs工具,在Debian下安装reiserfsprogs即可,在安装过程中可能出现找不到某些头文件,这些头文件是系统头文件,只需要装上跟本系统匹配到系统头文件即可(linux-header-×××),使用mkreiserfs /dev/sda×即可格式化分区成reiserfs了

格式化完成后就可以把/dev/sda6挂载到Debian下自定义的目录/media/gentoo

三、下载stage3和portage
去Gentoo镜像找一个离自己最近的镜像,我选择台湾(为什么没有中国的镜像???韩国、日本、台湾,甚至哈萨克斯坦和泰国都有自己的镜像,呜呼,哀哉!!!)

/Linux/Gentoo/releases/x86/2008.0 beta2/stages下载stage3-i686-2008.0_beta2.tar.bz2
/Linux/Gentoo/snapshots下载portage-latest.tar.bz2

将stage3解压到Gentoo的根目录/media/gentoo,这个就是Gentoo最基本系统,然后把/dev/sda3、/dev/sda7、/dev/sda8挂载到/media/gentoo/boot、/media/gentoo/home、/media/gentoo/usr/portage,解压portage到/media/gentoo/usr/portage,挂载/proc和/dev到/media/gentoo/proc、/media/gentoo/dev

四、修改/etc/make.conf
根据自己需要修改选项,使编译时尽可能优化
CFLAGS="-O2 -march=i686 -pipe"
CXXFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
MAKEOPTS="-j2" #单CPU

SYNC="rsync://rsync.gentoo.org/gentoo-portage"
GENTOO_MIRRORS=""

INPUT_DEVICES="keyboard mouse"
VIDEO_CARDS="i810" #intel显卡
USE="-gnome -kde -qt3 -qt4 X dbus hal acpi bash-completion"

FEATURES="ccache parallel-fetch" #一边下载一边编译
CCACHE_SIZE="2G" #ccache是编译器cache,加速重编译

五、配置网络
由于我使用的ADSL+静态路由,添加IP和网关到/etc/conf.d/net
config_eth0=( "192.168.1.2 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.1.1" )
添加DNS只需要把Debian下/etc/resolv.conf拷贝到/media/gentoo/etc/resolv.con即可
在启动是自动激活网络接口rc-update add net.eth0 default

六、进入Gentoo
chroot /media/gentoo #切换根目录
env-update #建立新环境
source /etc/profile #加载新环境变量

七、更新portage列表
emerge --sync同步最新的portage树,我下载的已经是最新的portage,所以可以跳过

八、设置locale
修改/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产生所以/etc/locale.gen指定的locale

九、修改时区
让上海时间作为我们的本地时间(作链接更合适)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改/etc/conf.d/clock
CLOCK="local"
TIMEZONE="Asia/Shanghai"

十、编译内核
Gentoo提供给我们几个可选的内核源码,详细清单见Gentoo内核指南,对于x86架构来说,使用gentoo-soureces,emerge gentoo-soureces下载最新的内核源码,下面开始手动编译内核,输入make menuconfig可以得到内核配置菜单,通过上下键选择不同条目,Enter键进入条目,空格用来选择是否使用此条目,‘*’表示作为内核,‘M’表示作为模块加载

在手动配置内核之前,需要了解系统,安装pciutils,用其中的lspci了解你需要的大部分信息,还可以运行lsmod查看使用哪些内核模块。

配置内核时有很多选项,这篇文档专门介绍各个选项的意思:Linux2.6.19内核选项简介,根据自己系统的需要,选择必要的选项,不必要可以跳过,只管编译吧,如果出现问题,可以重编译,并且第二次编译要比第一次快很多,这就是传说中的make:)

设置完,可以编译make && make modules_install,通常会很长时间,waiting。。。

编译完会生成arch/x86/boot/bzImage这个内核,将它copy到/boot目录,重新命名,我的是kernel-2.6.24-gentoo-r8

最后设置系统自动加载的模块,find /lib/modules/2.6.24-gentoo-r8 -type f -name '*.o' -or -name '*,ko',例如要加载scsi_wait_scan.ko,则在/etc/modules.autoload.d/kernel-2.6写入模块名字scsi_wait_scan

十一、必要系统工具
Gentoo没有自带系统日志工具,手动安装emerge syslog-ng logrotate && rc-update add syslog-ng default

由于我用的是reiserfs文件系统,需要reiserfsprogs工具,方便管理文件系统

十二、安装grub
我用Debian的grub,因此只需要在Debian的menu.lst添加Gentoo项就可以了,如果要使用Gentoo的grub做引导,可以emerge grub,创建/boot/grub/grub.conf,语法类似menu.lst,然后安装grub,直接在grub交互式命令行输入:
root (hd0,4) #指定/boot目录所在分区
setup (hd0) #将grub安装到MBR

十三、修改/etc/fstab
在/etc/fstab设置启动自动挂载的磁盘,这里可以参考我的博文Debian初体验

十四、添加david
添加一个平时使用的普通用户david,Gentoo根据用户所属的组定义其可以执行的活动:
audio 允许使用声音设备
cdrom 允许直接使用光驱
portage 允许以普通用户身份执行emerge --pretend
usb 允许使用usb设备
video 允许使用视频设备
wheel 允许使用su

#指定david所属组和shell,并创建/home/david
useradd -m -G audio,cdrom,portage,usb,video,wheel,users -s /bin/bash david
#修改david密码
passwd david

安装完软件,通常bash最后会提示,有没有和有多少配置文件没有更新,你可以利用Gentoo提供的etc-update更新这些文件,etc-update使用diff对新老文件进行比较,按照命令行提示更新。

现在Gentoo基本装完了,开机已经可以看到Gentoo项了,进入速度飞快:)

ps:如果进入的时候出现网络无法启动,很可能是编译内核时一些参数没有设置,我第一次装的时候就是这样,主要因为我为了追求内核最小最优,很多东西都K掉了,只能重启进Debian运行lsmod查看哪些跟网络相关,然后找到r8169,然后选上Device Drivers->Network device support->Ethernet (1000 Mbit)->Realtek 8169 gigabit ethernet support,这下重启OK,网络自动连接上了,第一次编译的时候想,我的电脑也不是千兆网卡,何必要这项呢,故K掉了,所以说有些项并不是像它表面形容的那样,要我们自己不断的尝试。
阅读(557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~