[转]Gentoo 快速安装手册(GCC4修订版)
时间:2005-07-27 来源:sombad
本文是在台湾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
(?#125;製名稱伺服器資訊) # 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如下:
Code: |
# 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 内容如下 :
Code: |
>=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 内容如下 :
Code: |
=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 内容如下 :
Code: |
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 内容 :
Code: |
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过程中的几个组件。
Code: |
#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版本。
然后再次更新环境
Code: |
#source /etc/profiles |
现在我们已经开始使用GCC4.0.1编译了,首先我们要让GCC4自身编译一次。
Code: |
#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的包,当然最好是
Code: |
#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: ?#123;整設定檔
(設定時區) # ln -sf /usr/share/zoneinfo/<適合的時區檔> /etc/localtime
(編輯 fstab 檔) # nano -w /etc/fstab
底下是一個 /etc/fstab 範例(不要直接照抄):
原始碼一覽表1.5: /etc/fstab
Code: |
# <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) ?#125;製核心) # 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
Code: |
grub> root (hd0,0) grub> setup (hd0) grub> quit |
# nano -w /boot/grub/grub.conf
Code: |
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
Code: |
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
Code: |
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

<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载
<img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />
飞行射击 下载- 4 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载73.78MB · 90℃
1970-01-01
- 5 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载43.7 MB · 99℃
1970-01-01
- 6 <img preview="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" width="32" height="32" src="http://pic.pdowncc.com/uploadimg/ico/2025/0523/1747993424374100.png" alt="弓箭勇者最新版" />下载110.69MB · 98℃
1970-01-01