LinuxSir.cn,穿越时空的Linuxsir!

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

[转]从Kubuntu到Gentoo

[复制链接]
发表于 2007-7-18 01:09:56 | 显示全部楼层 |阅读模式
http://forum.ubuntu.org.cn/viewt ... mp;highlight=gentoo

1.本帖写给需要的人士,不在于怂恿任何人尝试Gentoo
2.gentoo的支持可以在linuxsir的gentoo版或是IRC #gentoo-cn得到
3.本文较为繁琐,特别是2,3楼,可忽略不看
4.不回答类似"我为什么要用Gentoo?"这类问题
5.事实上,在整个安装过程中, kubuntu所起的作用主要是chroot /dev/XXX/ /bin/bash,之后尽可能参照官方手册

简化版

下载Stage3,portage
Gentoo的官方网也提的镜像列表:
http://www.gentoo.org/main/en/mirrors.xml
下载stage3,portage-latest这两个文件包,选择和你的机器实际情况相符合的包,比如我的CPU是celeron-M 350,所以我下的就是i686
stage3
http://adelie.polymtl.ca/release ... i686-2007.0.tar.bz2
portage,
http://adelie.polymtl.ca/snapshots/portage-latest.tar.bz2
加载目标分区假设为/dev/sda9
代码:
sudo mkdir -p /mnt/gentoo
sudo mount /dev/sda9 /mnt/gentoo
sudo mkdir -p /mnt/gentoo/boot
sudo mount /dev/sda8 /mnt/gentoo/boot
sudo mount -t proc none /mnt/gentoo/proc
sudo mount -o bind /dev /mnt/gentoo/dev

解压文件
代码:
sudo tar xvf  stage3-i686-2007.0.tar.bz2 -C /mnt/gentoo
sudo tar xvf  portage-latest.tar.bz2 -C /mnt/gentoo/usr

复制DNS信息
代码:
sudo cp /etc/resolv.conf   /mnt/gentoo/etc/resolv.conf

进入gentoo安装环境并修改root密码
代码:
sudo chroot /mnt/gentoo/      /bin/bash
passwd

配置编译选项
http://zhangle.is-a-geek.org/doc ... book-x86.xml?full=1
系统设置
http://zhangle.is-a-geek.org/doc ... =1#book_part1_chap8
Gentoo系统管理基本操作
http://zh.gentoo-wiki.com/Gentoo_Quick_Guide
更新系统
代码:
emerge –sync  #常规的更新操作,相当于apt-get update
emerge-webrsync #当sync因网络限制无法使用时,通过web方式的更新

安装工具软件
代码:
emerge pciutils  usbutils  gentoolkit   ufed

使用axel作为下载工具
代码:
nano -w /etc/make.conf

加入下面的内容
代码:
FETCHCOMMAND="/usr/bin/axel -a -n2   \${URI} -o \${DISTDIR}" #
RESUMECOMMAND="/usr/bin/axel -a -n2   \${URI} -o \${DISTDIR}"
FEATURES="ccache parallel-fetch"

设置USE,请按自己的需求设置
代码:
ufed

编译内核
代码:
emerge gentoo-sources
cd /usr/src/linux
make menuconfig

复制译好的内核
代码:
make && make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.21.1-gentoo
cp .config  /boot/config-2.6.21.1-gentoo

设置grub
代码:
title           kubuntu, kernel 2.6.21.1-gentoo
root            (hd0,7)
kernel          /vmlinuz-2.6.21.1-gentoo root=/dev/sda9 ro vga=791
boot

正式安装
代码:
emerge kdebase-startkde
 楼主| 发表于 2007-7-18 01:10:42 | 显示全部楼层
电子书 UbuntuToGentoo.pdf
下载
http://forum.ubuntu.org.cn/download.php?id=15640
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:11:48 | 显示全部楼层
关于本文
本文讲述如果使用kubuntu作为跳板,以它为基础,使用Gentoo Stage3安装Gentoo系统,中间会穿插一些两个发行版之间的相近之处的比较说明,所以本文假设用户已经有kubuntu一些很基本的使用经验,以及可以很轻松完成类似硬盘分区,加载分区,至少会使用某一种文本编辑器.

事实上,kubuntu在这里起到的作用是硬盘分区,下载和解压必要的文件,通过chroot提进入gentoo的安装环境,其他任何可以提供以上这些功能的发行版在这种安装方法基本上都是相同的。你可以使用现已安装好的系统,也可以使用livecd作为媒介。

前言

初次听到Gentoo这个发行版早于kubuntu,大约是在2005年中,当时看到网络上一些人对它的评价主要集中在性能,提高对linux的认识上.甚至当时国内某知名IT网站进行linux发行版比较时还对gentoo作出大概是”只适合用来学习linux,而不适合实际使用”.诸多说法,总让人感觉它有些高不可攀.

近几天,本着实现当年愿望的想法,去尝试了一下Gentoo,并且到现在为止已快使用3周了,总的一个感觉是:Gentoo,并不是很多人所说的”高手的玩物”,”用来折腾,而不是拿来使用”;其实,菜鸟也可以Gentoo.

同样还有一个感觉:它的性能神话也只是神话,是否较其他发行版有多大的性能优势(在安装软件的数量和类别相等的情况下比较)?我的观点是,只要你是个正常的人类,或者你的机器不会太破.你基本上是感觉不出来的.

那么为什么会有这么多人对Gentoo情有独衷呢?作为一个Gentoo的新手我不敢冒然断言,但近三周的使用中我确实喜欢上这个发行版了,而我喜欢它的原因是它的定制性极强,同时可以很简捷地实现我的一些特殊使用需求.

关于定制性,举个例子来说,我电脑上另一个系统kubuntu,是从基本系统上安装x-window-system-core kde-core来的,而每次装完之后我还需要把多余的那些显卡,输入输出设备驱动删除,这样做一方面是因为我有洁癖,另一方面是因为这里面有些东西会导致我的X自动重启.

而在安装Gentoo系统时,我可以在它的一个核心文件make.conf中加入下面这样的几句:

代码:
INPUT_DEVICES="keyboard mouse synaptics" #定义输入输出设备,键盘/鼠标/触摸板

VIDEO_CARDS="i810" #我的显卡,855GME集成,所以用i810

ALSA_CARDS="intel8x0" #声卡,interl 的 ac97集成声卡

这样,在后面的X/KDE安装过程中,系统只会安装和我硬件型号对应的驱动组件,其他不需要的一律不装.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:12:47 | 显示全部楼层
Gentoo基本印象

gentoo系统安装的思路并不复杂,特别是对于有使用过alternate光盘定制安装过系统的人来说很好理解,我简单地将gentoo的安装理解为5个步聚:

1.构建好基本系统(stage3+kernel),这时你的gentoo系统和用alternate定制安装并且不选择任何的K/X/kubuntu-desktop时所得到的系统是差不多的(当然可能会有少量小工具的差异)

2.获取Gentoo系统的软件库信息(portage),并将它更新到最新状态.

3.在基本系统上,安装一些小型工具,以使得下一步的安装更为简便.同时对你系统的一些基本信息如主机名,时区,locale,用户,fstab中的分区和挂载等进行设置,顺带连网络也一起配好,这一步完成之后,再安上一个内核.你的gentoo系统基本上已经可以用来做很多事了.

4.选定好你所需要的软件,并将安装任务提交给计算机,接下去就是时间问题了.当然中间可能会有一些小问题导致不能一次性编译成功.

5.调整系统,第一次安装Gentoo很难保证可以完美地构建出与你的实际情况100%吻合的系统,所以在一定的时期内对系统进行微调,从而一步步接近你的理想状态.

#Gentoo安装VS kubuntu精简安装
代码:
kubuntu:
base-system -> 设置好需要安装的软件列表 ->sudo apt-get install softwarelist -> 完成
Gentoo :
base-system -> 设置好编译选项,软件列表 -> 提交编译 -> 完成

总体来说,两者的安装过程基本一致,且都由系统自动解决依赖关系.Gentoo软件库中也提供已编译好了的软件包,比如我的openoffice就没有从源码译,而是安装Gentoo官方准备好的bin文件.
OK,废话就讲到这里,进入正题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:13:54 | 显示全部楼层
下载Stage3,portage
和kubuntu的官方网站一样,Gentoo的官方网也提供了从全球采集到的镜像列表:
http://www.gentoo.org/main/en/mirrors.xml
你可以从这个列表中选择最适合你的站进下载stage3,portage-latest这两个文件包,下载时请注意选择和你的机器实际情况相符合的包,比如我的CPU是celeron-M 350,所以我下的就是i686
http://adelie.polymtl.ca/release ... i686-2007.0.tar.bz2
而portage,其实和kubuntu网络源中Packages.gz担任很相似的角色,也就是记录着Gentoo软件库中软件信息,所以下载最新版本的往往是很不错的选择:
http://adelie.polymtl.ca/snapshots/portage-latest.tar.bz2

准备好硬盘分区
与kubuntu相似,Gentoo在安装软件的过程中会把软件的源码下载到本地硬盘上,再加上编译过程中的缓存,建议相用Gentoo的人,在硬盘空间上就不要太吝啬了,如果启用ccache,建议能保证15-20G的空间.

附:ccache这个工具可以将你已经编译好的各个模块备份在你指定的目录里,当以后碰到编译同样的模块时,会直接从备份中复制,从而达到大幅降低二次以后编译的速度,关于ccache的设置请参阅: http://gentoo-wiki.com/Ccache

关于硬盘分区的操作,本文不进行细说,建议对分区操作还没什么把握的人参阅一下Gentoo手册2007版中关于分区的那部份,地址如下:
http://zhangle.is-a-geek.org/doc ... =1#book_part1_chap4

如果保留k-kubuntu使用双系统,那建议为/boot划分一个独立的分区,另外很多人提到双系统共用/home分区的做法,个人并不太赞同,特别是两个系统无法保证所有软件版本的一致性,以及你想在两个系统中使用相同的用户名时.如果你喜欢为各个目录建立独立分区,建议先建好分区,待系统安装完成后再进行各分区的转移.

挂上目标分区(以下所涉及分区标识请按自己的实际情况修改)

代码:
sudo mkdir -p /mnt/gentoo
sudo mount /dev/sda9 /mnt/gentoo
sudo mkdir -p /mnt/gentoo/boot
sudo mount /dev/sda8 /mnt/gentoo/boot


注:如果你不想使用独立的/boot或是相装完系统后再手动调整,这里/boot就先不要挂了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:15:45 | 显示全部楼层
解压前面所下载的两个包即stage,portage
代码:
sudo tar xvf  stage3-i686-2007.0.tar.bz2 -C /mnt/gentoo
sudo tar xvf  portage-latest.tar.bz2 -C /mnt/gentoo/usr


解压完之后,/dev/sda9就有一个不含内核的gentoo基本系统了,有兴趣的人可以这个时候进入到/mnt/gentoo看一下里面的文件夹结构.

在进入gentoo的安装环境之前还需将DNS信息文件复制过去

代码:
sudo cp /etc/resolv.conf   /mnt/gentoo/etc/resolv.conf
sudo mount -t proc none /mnt/gentoo/proc
sudo mount -o bind /dev /mnt/gentoo/dev


进入gentoo安装环境
代码:
sudo chroot /mnt/gentoo/      /bin/bash

执行完这一步后,你就处于gentoo的基本安装环境中了,为便于后面安装,先设置一下root密码
代码:
passwd

万事俱备,正式开工!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:16:35 | 显示全部楼层
声明:在本文中进行make.conf设置时并没有一步到位地讲述,而是按我自已安装过程中一步一步修改的过程讲述.

gentoo的高度可定制性向来为诸多玩家所津津乐道,愚以为这个定制至少可以分为两个方面的定制
1.针对你的硬件,定制gentoo系统本身,主要集中在profile的选择,/etc/make.conf中的参数设置
2.针对你使用需求的定制,即你在这个系统上主要用哪些软件,需要这些软件对其他哪些软件提供支持,这一步就是gentoo精华之一,通过USE的设置来实现.

具体设置请参阅手册中”5.d. 配置编译选项”
http://zhangle.is-a-geek.org/doc ... book-x86.xml?full=1
同样在/usr/portage/profiles/default-linux/底下也有很多针对不同用途系统的默认模版可以参考

编辑make.conf

代码:
Nano  -w /mnt/gentoo/etc/make.conf


结合我自己的make.conf,简单讲述一下,愚对此仍无清晰的理解,故不要照抄

CPU类型及编译优化参数设置,请按实际情况设置.
代码:
CFLAGS="-O3 -march=pentium-m -pipe -fomit-frame-pointer "
#设置好我的CPU类别,按-fomit-frame-pointer这一参数可以去掉源码中的调试部份,使最后编译出来的程序更加精练.我不懂编程,自然也不会去调试哪个程序,
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
LDFLAGS="-Wl,-O1"
ACCEPT_KEYWORDS="~x86" #也可以用x86,前者表示使用最新的软件,后者使用稳定版
MAKEOPTS="-j2"
#设置编译并发线程数,-jX中X取值通常做法是你的CPU数量+1,如你是双核则-j3


网络源的设置

代码:
GENTOO_MIRRORS="http://61.135.158.199"
SYNC="rsync://61.135.158.199/gentoo-portage"


#这个自然就是和/etc/apt/sources.list一样的东西了

声显卡及输入输出设备指定
代码:
INPUT_DEVICES="keyboard mouse synaptics" #本本上比一般台机多了一个触摸板

VIDEO_CARDS="i810" #我的855GM集成显卡,也许下面的列表可以找到你喜欢的显卡.
#VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 i810 imstt \
        mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage \
        siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware \
        voodoo"
ALSA_CARDS="intel8x0" #我的破声卡,都不太好意思贴出来 从下面找你的声卡吧.
#ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 \
        emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m \
        maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
设置你的语言
LINGUAS="en_US"  #指定系统及所安装程序的语言支持,这里只用了美式英语
#LINGUAS="en_US zh_CN zh" #这个就加入了简体中文了,记得kubuntu中的kde-i18n-zhcn吧

第一轮对make.conf的制定就先做上面这几个部份吧,保存退出编辑器

选择你的系统类型
你的系统主要是什么用途,服务器,家庭桌面? 那就选择适合你的profile

代码:
zerone x86 # eselect profile list  #该命令可以列出你当前可选的几个profile
Available profile symlink targets:
  [1]   default-linux/x86/2006.1
  [2]   default-linux/x86/no-nptl
  [3]   default-linux/x86/no-nptl/2.4
  [4]   default-linux/x86/2006.1/desktop
  [5]   default-linux/x86/2007.0
  [6]   default-linux/x86/2007.0/desktop *
  [7]   hardened/x86/2.6
  [8]   selinux/x86/2006.1


其实上面这些选项都位于/usr/portage/profiles/default-linux/x86/目录下面,

需要注意的是,gentoo 2007默认使用的是第5项,但我的系统主要是办公/娱乐用,自然更喜欢用desktop的profile.
选择很简单,将/etc/make.profile这个链接指向上面某个你选定的目录就可以了
代码:
ln -s  /usr/portage/profiles/default-linux/x86/2007.0/desktop/  /etc/make.profile


如果你偏向服务器应用则
代码:
ln -s  /usr/portage/profiles/default-linux/x86/2007.0/server/  /etc/make.profile


完成以上操作后执行以下命令使其生效

代码:
env-update && source /etc/profile #在每次更改过/etc/make.conf后都需要执行这一步

_________________
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:17:28 | 显示全部楼层
本部份内容请参阅官方手册配置系统部份,不再重复,地址为
http://zhangle.is-a-geek.org/doc ... =1#book_part1_chap8

主要进行的就是fstab,网络,区域,时区locale的设置.
以下是我的一些相关配置
代码:
fideas@zerone ~ $ cat /etc/conf.d/net
mac_eth0="00:134:2D:71:A3"  #使用mac伪装
config_eth0=( "192.168.2.204 netmask 255.255.255.0" )
routes_eth0=("default via 192.168.2.254")

代码:
fideas@zerone ~ $ cat /etc/resolv.conf
nameserver 208.67.222.222
nameserver 208.67.220.220

代码:
fideas@zerone ~ $ cat /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GB18030
zh_CN.GB2312 GB2312
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK

代码:
fideas@zerone / $ cat /etc/hosts
127.0.0.1       localhost zerone
::1             localhost

_________________
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:18:15 | 显示全部楼层
gentoo的基本系统设置/维护指令,请参阅gentoo管理快速入门
http://zh.gentoo-wiki.com/Gentoo_Quick_Guide
更新软件信息
代码:
emerge –sync  #常规的更新操作,相当于apt-get update
emerge-webrsync #当sync因网络限制无法使用时,通过web方式的更新

以上任选一种即可.
安装工具软件
安装日志程序
代码:
emerge syslog-ng
rc-update add syslog-ng default  #加入到runlevels中,以使该程序随系统自启动.类似在kubuntu下可以通过sysv-rc-conf来定制启动项,gentoo中通过rc-update来控制


安装硬件信息查看工具
代码:
emerge pciutils #记得kubuntu的lspci命令吗?就在这个包里了
emerge usbutils #这个自然就是查看USB设备信息了lsusb
emerge gentoolkit  #gentoo的特色工具包,有很多实用工具
emerge ufed  #选择和配置USE的图形工具,装完后通过命令 ufed 来启动它

更改下载工具
gentoo在安装过程中默认的下载工具是wget,你可以使用axel来替代它以获得更高的下载速度
代码:
emerge axel

安装完成之后,在/etc/make.conf里加上下面的内容
代码:
FETCHCOMMAND="/usr/bin/axel -a -n2   \${URI} -o \${DISTDIR}" #
RESUMECOMMAND="/usr/bin/axel -a -n2   \${URI} -o \${DISTDIR}"
FEATURES="ccache parallel-fetch"

-n2指定了下载时的线程数,为不给服务器带来过大负担,尽量不要超过2个线程.
最后一句的功能是让系统下载完一个包就开始编译,并且在译的过程中在后台继续下载下一个将要编译的软件包.这一点与kubuntu不同,系统会自动检测包编译的先后,不需要等到所有相关的包下载完后才开始安装.
_________________
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-18 01:19:14 | 显示全部楼层
事先说明一下,很多人说gentoo麻烦在编译,这一点我不太认同.USE的设置可能才是gentoo中最费神的地方了,你要对自己的需求有一个较为清晰的认识,并花费一定的时间和精力去看各个项目的功能.而编译只是一个时间问题.
USE可以说是gentoo的精华,它控制了你所安装的软件需要包含哪些功能或是对其他哪些软件提供支持,比如安装kopete/gaim,我从来不上AIM,MSN,那就不需要安装这些插件支持了.
看一下kopete可以提供的支持情况
代码:
fideas@zerone /boot $ eix kopete
{addbookmarks alias arts autoreplace connectionstatus contactnotes crypt debug elibc_FreeBSD gadu groupwise highlight history irc jingle kdeenablefinal kdehiddenvisibility kernel_linux latex netmeeting nowlistening sametime slp sms ssl statistics texteffect translator webpresence winpopup xinerama xscreensaver yahoo}

而我实际安装包含的功能(-号开头表示没有编译进来的功能支持):
代码:
3.5.7(3.5)(01:52:46 AM 07/02/2007)(-addbookmarks -alias arts -autoreplace -connectionstatus -contactnotes crypt -debug -elibc_FreeBSD -gadu -groupwise -highlight -history -irc -jingle -kdeenablefinal kdehiddenvisibility kernel_linux -latex -netmeeting -nowlistening -sametime -slp -sms ssl -statistics -texteffect -translator -webpresence -winpopup xinerama -xscreensaver -yahoo)

从这里就可以看出,经过自己定义安装的kopete比完整功能支持的要精练得多了.
Ufed这个工具对于刚上手gentoo的人来说,是设置USE的绝好工具,事实上很多gentoo的老手仍然对它情有独衷.接下去我们启动这个工具.
代码:
Ufed

然后用上下键移动,按空格选择或取消某个项目.定制完成后,按回车可以保存,或是按ESC放弃保存并退出设置.设置完成之后打开/etc/make.conf,你就可以看到刚才设置的USE选项已经在里面了,设置完之后记得更新一下:
代码:
env-update && source /etc/profile

下面是我当前的USE设置,使用KDE,提供对gtk的支持,去除对gnome支持
代码:
USE="7zip aac aalib aoss bash-completion branding bzip2 caps cdparanoia cdrom
     chroot cjk cscope css curl curlwrappers dga divx dts exif expat fat fax
     faxonly fbcon ffmpeg flac flatfile fpx ftp ftruncate ggi gimp
     glibc-omitfp glitz gmp gnutls gphoto2 graphviz gs gzip id3 imagemagick
     imlib immqt-bc inline java jpeg2k kdehiddenvisibility kqemu lcms libcaca
     live lzo lzw matroska mbox md5sum mhash mime mimencode mjpeg mmap mmx
     mmxext mpeg2 mplayer msn net network network-cron nfs nsplugin ntfs ntlm
     offensive pcmcia pda pdfkit posix rar real realmedia rtc samba skey
     sockets socks5 srt sse sse2 symlink szip tetex tga theora threads
     thunderbird timestats timidity tordns type1 unzip usb v4l v4l2 vcd vhosts
     vidix vim vim-syntax wav wma wmf wmp wxwindows xanim xcomposite xine
     xinerama xinetd xmlrpc xosd xprint xslt xvid xvmc yaepg zip zoran -berkdb
     -esd -gnome -ldap"
回复 支持 反对

使用道具 举报

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

本版积分规则

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