# Gentoo 快速安装手册(GCC4修订版)

## EricNeon

本文是在台湾gentoo社群翻译的gentoo快速安装手册基础上修改补充而成。首先感谢对岸的前辈们做的辛苦工作！

其中大部分内容保留繁体原文，简体部分的变动请各位谅解。

1. 快速安裝参考文件 

安裝光碟 ISO 檔放在 Gentoo 镜像。這些不同 CD 间的详细说明在 Gentoo 商店可以取得。 universal 光碟提供所有快速，而且不需要网路安裝 Gentoo 所需的东西。套件光碟是非必要的，裡面包含了預先編譯好的套件，像是KDE，GNOME，OpenOffice ，Mozilla，Evolution，還有其他等等。 

推荐使用 Gentoo 的minimal 光碟来启动机器，iso在mirror的 releases/x86/current/installcd/ 目录下可以找到。如果您希望和我一样使用reiser4作为主要的文件系统，建议去下载一个支持Reiser4的liveCD来安装系统，请先看这里 http://gentoo-wiki.com/HOWTO_Install_Gentoo_with_Reiser4_enabled_using_Lxnay%27s_Gentoo_RR4_LiveCD 。

如果你是从当前gentoo系统升级安装，可以跳过前面的准备步骤，直接看“开始安装gentoo”。

使用 Universal 光碟開機後，按下 <F1> 或/且 <F2> 查看有那些開機參數可以用。按下 <ENTER> 繼續啟動預設的核心。你最後會看到一個提示符號。 

原始碼一覽表1.1: 一開始的設定 

# date  (確定你的時間和日期是正確的，如果不是的話，使用 date MMDDhhmmCCYY 設定)

# modprobe module_name  (非必要 - 載入需要的模組)

# net-setup eth0 (設定網路)

# fdisk /dev/hda (分割硬碟)

# cfdisk /dev/hda (这个比较简单些) 

建议的分割方式是使用 ext2 (Reiserfs) 分割出一塊 100 mb 的開機分割區，你實體記憶體兩倍大的置換分割區，其他的就以 ReiserFS (Reiser4 FS) 分割成根目錄。 

使用mke2fs (Ext2)，mke2fs -j (Ext3)，mkreiserfs (ReiserFS) ，mkfs.xfs (XFS)，mkfs.jfs (JFS) 若您使用Reiser4的光蝶，其中包含了mkfs.reiser4(Reiser4FS) 還有 mkswap (置換分割區) 來初始化分割區。例如說：mke2fs -j /dev/hda3。 

接下來是掛載分割區以及解壓縮合適的 stage 檔案。 

原始碼一覽表1.2: 準備安裝 

(啟動置換分割區)                                  # swapon /dev/hdax

(掛載根目錄)                                     # mount /dev/hdax /mnt/gentoo

(建立開機分割區掛載點)                            # mkdir /mnt/gentoo/boot

(掛載開機分割區)                                 # mount /dev/hdax /mnt/gentoo/boot

(切換到掛掛載點)                                 # cd /mnt/gentoo

(解壓縮 stage 壓縮檔...)                      # tar -xvjpf /mnt/cdrom/stages/stage<你要用的 stage>.tar.bz2

(或是 下載最新的壓縮檔...)                        # links http://www.gentoo.org/main/en/mirrors.xml

(                  ... 然後解壓縮)              # tar -xvjpf stage<你要用的 stage>.tar.bz2

(非必要：解壓縮 portage tree)                    # tar -xvjf /mnt/cdrom/snapshots/portage-*.tar.bz2 -C /mnt/gentoo/usr

(建立distfiles目录档)                        # cd /mnt/gentoo/usr/portage; mkdir distfiles

(非必要：選擇鏡像站)                                    # mirrorselect -a -s4 -o | grep 'GENTOO_MIRRORS=' \

                                                  >> /mnt/gentoo/etc/make.conf

(複製名稱伺服器資訊)                             # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

(掛載 proc 檔案系統)                            # mount -t proc none /mnt/gentoo/proc

(變換根目錄到新的環境)                           # chroot /mnt/gentoo /bin/bash

(設定必須的環境變數)                             # env-update; source /etc/profile

注意点：

1. 不要使用GRP套件；

2. stage可以下载任意一个，但是其实从stage2或者stage3所花费的时间反而最少；

3. 若文件系统采用Reiser4，在mount分区时，需要指定文件系统类型， 例如“#mount -t reiser4 /dev/hda2 /mnt/gentoo”；

4. 根分区要最先mount；

現在開始安裝 Gentoo： 

原始碼一覽表1.3: 安裝 Gentoo 

(設定 USE，CFLAGS 還有 CXXFLAGS。由 Stage1 安裝也可以改變 CHOST) # nano -w /etc/make.conf

我的make.conf如下：

```

# These settings were set by the catalyst build script that automatically built this stage

# Please consult /etc/make.conf.example for a more detailed example

CFLAGS="-O2 -march=athlon-mp -fomit-frame-pointer -pipe -momit-leaf-frame-pointer -fno-ident -fforce-addr"

CHOST="i686-pc-linux-gnu"

#CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"

CXXFLAGS="${CFLAGS}"

LDFLAGS="-Wl,-O1"

ACCEPT_KEYWORDS="~x86"

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

#SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"

GENTOO_MIRRORS="http://gentoo.mirrors.pair.com/ http://prometheus.cs.wmich.edu/gentoo/ http://mirror.pacific.net.au/linux/Gentoo/ http://gentoo.kems.net http://mirror.gentoo.gr.jp http://gentoo.gg3.net"

#FETCHCOMMAND='/usr/bin/proz --no-getch -s ${URI} -P ${DISTDIR}'

PORTDIR_OVERLAY="/usr/portage /live/portage"

#USE="static bootstrap java nptl -ia64 -ppc -mips cairo readline -fortran -doc multitarget multislot -ipv6 pcmcia unicode utf-8 opengl xml2 mad stoke zh_CN nptlonly hal dbus cjk -qt -kde acc alsa fbcon bitmap-fonts cups 3dnow 3dnowext mmxext mp mmx sse mtrr"

USE="nptl nptlonly -ipv6 -qt -kde -doc nls cjk"

AUTOCLEAN="yes"

FEATURES="autoaddcvs autoconfig ccache cvs strict sfperms"

#FEATURES="buildpkg distcc "

#PORTAGE_BINHOST=""

LANGUAGE="zh_CN.UTF-8:zh_CN:zh_CN.GBK:en_US:en_US.UTF-8"

#LANG="zh_CN.UTF-8"

VIDEO_CARDS="AGP_VIA"

CLEAN_DELAY=3

EMERGE_WARNING_DELAY=5

# folow is config for distcc

#MAKEOPTS="-j6"

#DISTCC_HOSTS="localhost 203.148.3.75 192.168.2.213"

```

注意：

1. 设置CFLAGS前请先确认你的CPU类型和支持的参数。

#cat /proc/cpuinfo

2. CFLAGS中的-march=athlon-mp 原本为 -mcpu=i386 ，在编译gcc4时，必须修正为 “-march=arch -mtune=arch”。二后面的cpu类型应当与你自己的相符，可选的有"athlon-xp, i686 ,pentume4 , pentume3 , pentume4-m " 等等。

3. 优化参数 “-O2”也可以设置成“-O1”，也许你以前听说过用“-O3”获得最好的性能效果，但在编译GCC4.x环境时，暂时不要使用O3，“-Os”是一个安全的可选参数。

4. 其中#CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"只有当你的GCC版本大于3.4.3时才可以启用。由于gentoo官方的liveCD还是在使用gcc3.3.5，所以请暂时使用#CXXFLAGS="${CFLAGS}"。

5. 其中的LDFLAGS="-Wl,-O1"可以使编译处理更加快速，但是这个选项是可供选择的，你可以把它注释掉。

6. USE的可能设置非常丰富，但是如果你不希望从一开始就把xorg等桌面都编译进去，请先使用最小范围的设定。我仅设定了USE="nptl nptlonly -ipv6 -qt -kde -doc nls cjk" 。nptl是一个LinuxThreads的替代品，使您机器的性能上一个台阶，在编译glibc时将用到。相关测试结果和讨论可以去BIM的developer论坛看看。“nptlonly”是最合适的，可以处理掉glibc多余的编译，缩短编译时间。而更加细致的USE设定我们将在/etc/portage/packege.use文件中控制。

7. AUTOCLEAN="yes"设定可以自动清理/var/tmp/portage下的临时文件。

8. FEATURES的设定中要注意"autoaddcvs ccache cvs strict "，cvs的设定可以使您的编译永远保持最新，autoaddcvs会自动下载相关ebuild的cvs patch。 ccache的设定是在编译时启用cache，这也许会在编译时额外占用你1-2G的硬盘空间。而“strict”参数是对portage的一个安全检查。

9. 如果你的周围有很多已经安装好的linux系统，你也许希望利用distcc来加速编译。又或许你希望得到编译后的而进制tbz包，以便于以后的快速安装，你可以加入"buildpkg"。

10. 其中CLEAN_DELAY=3和EMERGE_WARNING_DELAY=5可以缩短编译包前后的警告时间。

使用/etc/portage下的文件来控制编译：

默认的情况下，/etc/portage下面只有一个set的空目录。我们需要自己在portage下新建三个文档：packege.use （用于控制各个ebuild的USE参数）, packege.keywords （用于当前编译版本控制）, packege.unmask （用于解放被官方mask掉的非稳定版本）。

我的 package.unmask 内容如下 ：

```

>=sys-libs/glibc-2.3.5.20050722

>=sys-devel/gcc-4.0.1

>=dev-lang/python-2.4-r3

>=sys-devel/binutils-2.16

>=x11-base/xorg-x11-6.8.99

=x11-libs/ecore-9999 

=x11-libs/evas-9999 

>=x11-libs/qt-4.0.0 

```

我的 package.keywords 内容如下 ：

```

=sys-devel/binutils-2.16.1 -*

>=sys-libs/glibc-2.3.5.20050722 -*

sys-libs/libstdc++-v3 ~x86

>=dev-lang/python-2.3.5 ~x86

=sys-devel/gcc-4.0.1 -*

>=x11-libs/qt-4.0.0_rc1-r2 -*

```

注意： 

1. 其中glibc必须是2.3.5.2005xxxx的snapshot版本，这是专门针对GCC4.x使用的版本。

2. 其中binutils也必须是2.16.1的snapshot版本。

3. 我的python已经设定使用python2.4.1以上版本。

4. 这里我的QT设定为4.0.0以上版本，QT4.0已经可以用GCC4.X编译，但是kde的部分包还需要QT3.x，所以如果你使用KDE，请不要急于强制使用QT4。

我的 package.use 内容如下 ：

```

sys-libs/glibc multilib userlocales nls nptl nptlonly -doc nomalloccheck

net-dialup/rp-pppoe -X

net-dialup/ppp -gtk

sys-devel/libperl ithreads berkdb

dev-lang/perl ithreads berkdb

sys-devel/gcc multislot multitarget multilib fortran -objc 

sys-devel/binutils multilib multislot

x11-terms/xterm unicode truetype

x11-base/xorg-x11 truetype-fonts opengl mmx cjk 3dnow bitmap-fonts -type1-fonts

app-text/ghostscript -cups

mail-client/mutt cjk crypt imap mbox nls slang nntp ssl

sys-libs/slang cjk unicode

gnome-base/gnome-applets -apm acpi

app-editor/nano slang unicode

sys-libs/ncurses gpm minimal unicode

dev-util/dialog unicode

www-client/mozilla-firefox gnome mozsvg java mozxmlterm xinerama

sys-apps/dbus mono

gnome-base/gnome-vfs hal howl

x11-terms/xterm toolbar truetype unicode

x11-libs/gtk+ jpeg tiff

app-portage/eix bash-completion

sys-kernel/morph-sources fuse supermount suspend2

app-arch/tar bzip2

```

注意：

1. glibc中的 “userlocales” 需要另外设定/etc/locales.build，可以参考论坛中的相关帖子；

2. perl的 “ithreads ”是让 perl 在以后升级时可以对其自身进行编译；

3. ncurese中的“gpm”是鼠标支持，但是如果第一次直接用GCC4编译gpm可能会出现错误，建议先用gcc3.x编译 gpm ，然后再用GCC4重新编译；

4. eix是一个快速搜索portage的工具，加上bash-cpmletion可以象bash中一样开启自动补完功能；

5. tar的参数中使用了“bzip2”，让tar动作默认使用bzip2；

6. 多数包都加上“unicode nls cjk”的设定；

gentoo中的多国语言环境是Glibc在编译时完成的，所以我们要编辑/etc/locales.build来时之产生中文环境。

我的 /etc/locales.build 内容 ：

```

en_US/ISO-8859-1

en_US.UTF-8/UTF-8

zh_CN/UTF-8

zh_CN.UTF-8/UTF-8

zh_CN.GBK/GBK

zh_CN.GB2312/GB2312

zh_TW/BIG5

zh_TW.UTF-8/UTF-8

```

现在我们可以更新套件目录树。

#emerge sync

(只適用 Stage1 ：bootstrap)                                   # cd /usr/portage ;scripts/bootstrap.sh

(適用 Stage1，Stage2：安裝基礎系統)                             

如果你是从stage2开始，首先要用gcc3.x编译更新bootstrap过程中的几个组件。

```

#emerge binutils automake libstdc++-v3 m4 autoconf flex sed make gcc-config gnuconfig

# source /etc/profles

#emerge gmp kbd

#emerge gcc4.0.1 -O

```

注意： 

1. 如果你的/etc/portage/package.use中的ncurese开启了gpm，则在编译gcc4之前也要编译一次gpm。而gmp是gcc4必须的。

2. kbd首先用gcc3.x编译一次。

3. 如果你使用gcc3.3.5的stage开始，gcc4第一次编译时必须独立编译，否则会依赖glibc-2.3.5.20050722，而这个glibc版本不能用gcc3.4.x以下版本编译。

4. binutils和 gcc-config必须在切换gcc4之前更新完毕，libstdc++-v3最好也在切换到GCC4之前编译。

在gcc4.0.1编译完成后，我们就可以安全切换到GCC4了。

先察看当前的gcc有哪些版本

#gcc-config -l

切换到新的gcc

#gcc-conifg [num]

更换后用 # gcc -v 察看当前GCC版本。

然后再次更新环境

```
#source /etc/profiles 
```

现在我们已经开始使用GCC4.0.1编译了，首先我们要让GCC4自身编译一次。

```

#emerge gcc -O

#emerge glibc 

#emerge binutils automake libstdc++-v3 m4 autoconf flex sed make gcc-config gnuconfig

```

前面的步骤完成后，我们就需要重新更新整个环境

#source /etc/profiles

这个的这个GCC4.0.1才算是真正的GCC4，ok，我们现在就继续编译所有system的包，当然最好是

```

#emerge -e world 

```

注意： 

1. 在编译所有的ebuild之前，我都希望你可以用 emerge -pvt来检查其中的参数设定；

2. 如果你是从当前系统更新，那么前面的步骤就可以省去一点，至少那些binutils automake libstdc++-v3 m4 autoconf flex sed make gcc-config gnuconfig的更新就可以免去了。

3. emerge -e world的步骤可以将emerge -e system和stage1中的包都包含进去，如果你怕太花时间。可以简单emerge -e system

現在我們設定必須的資訊： 

原始碼一覽表1.4: 調整設定檔 

(設定時區)                                        # ln -sf /usr/share/zoneinfo/<適合的時區檔> /etc/localtime

(編輯 fstab 檔)                                   # nano -w /etc/fstab

底下是一個 /etc/fstab 範例(不要直接照抄)： 

原始碼一覽表1.5: /etc/fstab

```
 

# <fs>                  <mountpoint>    <type>          <opts>                  <dump/pass>

/dev/hda1       /boot           ext2(reiserfs)            defaults,noatime        1 2

/dev/hda7               none            swap            sw                      0 0

/dev/hda2               /               reiserfs(reiser4)        defaults,noatime                 0 1

/dev/hda3               /home               reiserfs(reiser4)        defaults,noatime                 0 1

/dev/hda5               /live               reiserfs(reiser4)        defaults,noatime                 0 1

/dev/hda6               /dump               reiserfs(reiser4)        defaults,noatime                 0 1

/dev/cdroms/cdrom0      /mnt/cdrom      auto            noauto,user             0 0

none                    /proc           proc            defaults                0 0

none                    /dev/shm        tmpfs           nodev,nosuid,noexec     0 0

```

繼續安裝 Linux 核心： 

原始碼一覽表1.6: 安裝核心 

(安裝核心原始嗎)                                           # emerge <這裡輸入核心套件名稱>

(使用 genkernel 設定核心...)                               # emerge genkernel; genkernel --menuconfig all

(或 (1) 手動設定核心)                                      # cd /usr/src/linux; make menuconfig;

(   (2) 包含 VM fs, /proc fs, tmpfs,reiserfs,以及reiser4,suspend2)

(   (3) 編譯核心)                                          

        (適用 2.4 核心)# make dep && make clean bzImage modules modules_install

		(適用 2.6 核心)# make && make modules_install

(   (4) 複製核心)                                          # cp arch/i386/boot/bzImage /boot; cp System.map /boot

我使用morph和cko内核

相干设置待续...

現在安裝你可能想要的程式： 

原始碼一覽表1.7: 安裝重要系統程式 

(安裝 system logger; 可以選擇的：sysklogd，metalog，msyslog，syslog-ng)       # emerge syslog-ng 

(讓 systemlogger 開機時自動啟動)                                              # rc-update add syslog-ng default

(安裝 cron; 可以選擇的：vixie-cron, dcron, fcron)                             # emerge vixie-cron

(讓 cron 開機時自動啟動)                                                      # rc-update add vixie-cron default   

(如果你使用 genkernel：安裝 hotplug)                                          # emerge hotplug coldplug

(如果你使用 genkernel：讓 hotplug 開機時自動啟動)                               # rc-update add hotplug default

(只適用 非 ext2，ext3 使用者; 可以選擇的：reiserfsprogs, xfsprogs, jfsutils)    # emerge reiserfsprogs reiser4progs 

(非必要：安裝 DHCP 客戶端程式)                                                # emerge dhcpcd

(領域名稱啟動指令稿)                                                          # rc-update add domainname default

(安装电源管理)                                                                   # emerge acpi acpid

(讓 acpid開機時自動啟動)                                                    # rc-update add acpid default

如果你需要其他的核心模組，現在是安裝他們的時候： 

原始碼一覽表1.8: 安裝其他的核心模組 

# emerge pcmcia-cs (或 nforce-net，nforce-audio，e100，e1000，ati-drivers，rp-pppoe)

# VIDEO_CARDS="yourcard" emerge x11-drm   (適用 ATI Radeon 9200，Rage128以上，Matrox，Voodoo 和起他的顯示卡)

完成你的 Gentoo 系統設定： 

原始碼一覽表1.9: 完成系統設定 

(設定 root 密碼)                                         # passwd

(建立使用者)                                             # useradd 你的名字 -m -G users,wheel,audio -s /bin/bash

(設定使用者密碼)                                         # passwd 你的名字

(設定主機名稱)                                           # echo mymachine > /etc/hostname

(設定領域名稱)                                           # echo mydomain.com > /etc/dnsdomainname

(設定 hostsfile，例如："127.0.0.1 localhost mymachine")  # nano -w /etc/hosts

(設定基本系統設定;參閱註解)                                # nano -w /etc/rc.conf

原始碼一覽表1.10: 設定網路 

(設定網路; 使用 dhcp 的話應該設定 iface_eth0="dhcp")             # nano -w /etc/conf.d/net

(加入開機時要啟動的模組)                                         # nano -w /etc/modules.autoload.d/kernel-<版本>

(只適用非 PCMCIA：開機時自動啟動網路介面)                         # rc-update add net.eth0 default

(如果你有多個網路介面：)

   (1) 建立每個介面的啟動指令稿)                                 # ln -s /etc/init.d/net.eth0 /etc/init.d/net.ethx

   (2) 開機時自動啟動，如果不是 PCMCIA)                          # rc-update add net.ethx default

(只適用 PCMCIA：確認 /etc/conf.d/pcmcia 以及開機自動載入 PCMCIA) # rc-update add pcmcia default

現在安裝開機管理員 

原始碼一覽表1.11: 安裝及設定 GRUB 

# emerge grub

# grub

```

grub> root (hd0,0)

grub> setup (hd0)

grub> quit

```

# nano -w /boot/grub/grub.conf

```

default 0

timeout 15

splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux

  root (hd0,0)

  #使用 genkernel 的人：

  kernel /kernel-<核心版本> root=/dev/ram0 init=/linuxrc real_root=/dev/hda2 ramdisk=8192 vga=773 vedio=vesa:1024x768@72 

  initrd /initrd-<核心版本>

  # 不是使用 genkernel 的人：

  kernel /kernel-<核心版本> root=/dev/hda2  vga=773 vedio=vesa:1024x768@72 

```

原始碼一覽表1.12: 安裝及設定 LILO 

# emerge lilo

# nano -w /etc/lilo.conf

```

boot=/dev/hda

prompt

timeout=50

default=gentoo

image=/boot/kernel-<核心版本> 

  label=gentoo

  read-only

  #使用 genkernel 的人：

  append="init=/linuxrc real_root=/dev/hda2 ramdisk=8192 vga=773 vedio=vesa:1024x768@72 "

  root=/dev/ram0

  initrd=/boot/initrd-<核心版本>

  #不是使用 genkernel 的人：

  root=/dev/hda2 resume2=/dev/hda7 vga=773 vedio=vesa:1024x768@72 

```

注意：

1. 使用suspend2功能的，要在kernel行加入 resume2=swapwhere

```
resume2=/dev/hdax 

```

更新lilo:

# /sbin/lilo

現在卸載所有分割區然後重開機： 

原始碼一覽表1.13: 完成然後安裝 GUI 

(離開 chroot)                                   # exit; cd /

(卸載所有分割區)                                 # umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo

(重開機;移除光碟機中的 universal 光碟)            # reboot

(開機後：)

(只適用 ADSL 使用者)                            # adsl-setup

你可以在 Gentoo 文件得到更多的資訊。

----------

## Zer4tul

还是不大清楚使用4.x编译的软件相对3.x编译的有什么优点……解释一下吧。

----------

## punkid

目前没勇气给gentoo重装一遍了。不过这帖子还是挺管用的，以后重装gentoo用的上！

----------

## ldh168

太好拉，多谢楼主！

 :Very Happy: 

----------

## vyouzhi

多谢楼主

----------

## druggo

什么时候能搞定4.1呢？

----------

## millermiller

楼主的文章写的精彩，实用。以前的《快若刀锋》也拜读过，堪称经典。

但俺还是不愿意一边一边的装机器。一是觉得没有必要，目前的兔兔跑的很好。但就是为了体验一下gcc4觉得还是不情愿。

公司里淘汰了一批ultra 10。俺在上面装的兔兔跑的很好。以前用debian, 前两天又帮别人装Mandriva 和 Fedore Core 4。 FC4 和mandriva图形安装做得不错，几乎不用干预，“下一步” 就得。但总觉的FC 和 Mandr 装的”垃圾“较多。现在俺最喜欢的就是gentoo了，其次是debian.

看到坛子里，大家都在为推广gentoo支招，很是高兴。国内大家学电脑一开始都是从windows开始的，都产生了依赖性。时间久了，也不愿意或者懒的去学习opensource的东西了。opensource 在国内的普及太缓慢了。而且国内找工作要什么vc, delphi, vb 之类的。没办法大家不学这些怎么吃饭？

乱七八糟说了一堆，望楼主见谅。

----------

## Zer4tul

楼主不是说对tar备份有兴趣么？最近研究没？我对那个也比较有兴趣（最近实习，在公司用Windows，发现特别不顺手……又不可能去现做一个Gentoo，所以决定tar一把），有什么成果可以分享一下不？

----------

## EricNeon

这两天我总共花了10个小时，从stage3-2005.0开始，使用knoppix的liveCD，建立起一个新的gnome环境。这个过程中只有eix/OpenSp/Openjade这三个包编译时被中断，其他总共超过2G的软件全部顺利通过gcc4.0.1的编译。出错的三个包可以用gcc3.4.4编译通过。其中出现的bug，我正在寻找原因。

系统备份很值得研究，我实在不想以后gentoo坏了再从头来一遍。有时间IRC里聊吧。

----------

## akar

 *EricNeon wrote:*   

> 这两天我总共花了10个小时，从stage3-2005.0开始，使用knoppix的liveCD，建立起一个新的gnome环境。这个过程中只有eix/OpenSp/Openjade这三个包编译时被中断，其他总共超过2G的软件全部顺利通过gcc4.0.1的编译。出错的三个包可以用gcc3.4.4编译通过。其中出现的bug，我正在寻找原因。
> 
> 

 

　　是這樣啊，我則利用多系統啟動的便利：以前因為要幫Hiweed測試每個測試版（其實大家想必都會試用不用的操作系統吧！），那我就把同一大硬盤分成１３個分區，又安裝了６，７個操作系統。　那就可以在運行中的系統（只限於在GNU/Linux下）chroot去另一個分區安裝。這樣，不會打斷日常的工作。

 *EricNeon wrote:*   

> 系统备份很值得研究，我实在不想以后gentoo坏了再从头来一遍。有时间IRC里聊吧。

 

這個我以前也有研用了一下，　放在　小心得, 大集合!內。 大家看看合不合用。 :Wink: 

----------

## EricHsu

 *millermiller wrote:*   

> 楼主的文章写的精彩，实用。以前的《快若刀锋》也拜读过，堪称经典。

 

澄清一下下, 版上现在有俩 Eric, 共同点是都爱写文档  :Very Happy: 

----------

## ts

 *EricNeon wrote:*   

> 
> 
> 现在我们已经开始使用GCC4.0.1编译了，首先我们要让GCC4自身编译一次。
> 
> ```
> ...

 

这一部分需要修改，详情请看 https://forums.gentoo.org/viewtopic-p-2767120.html#2767120

#emerge glibc 

在这之后，需要 

```
binutils-config -l
```

查看并更新 binutils-config， 否则不能编译任何包。

https://forums.gentoo.org/viewtopic-p-2767120.html#2767120

----------

## vliqi

我在binutils使用LDFLAGS="-Wl,-O1"出错了，-W1好象不能用了

----------

## ts

 *vliqi wrote:*   

> 我在binutils使用LDFLAGS="-Wl,-O1"出错了，-W1好象不能用了

 

我的能顺利通过编译，但有人报过错误。

----------

## dundas

good reference, thx, I love both Erics

 :Smile: 

----------

