wiki:gentooinstallationtutorial

Wiki: Gentoo Stage3 Installation Tutorial

For IBM Thinkpad T40p

下载

分区

挂载分区

分区表

从stage3安装

安装 portage

设置make.conf

设置package.use

安装准备

更新portage

设置locale

设置时区

安装内核

编译内核

安装grub

修改grub

NT Loader

安装软件包

必要的包

显卡3D

安装无线网卡

world

设置

设置加载模块

设置启动项

设置fstab

添加用户

重启

创建stage4档

其他安装方法

安装livecd

系统维护

ebuild用法

下载

下载 livecd 和 stage3,到 这里 找个mirror站点下载即可,最近的是在 ftp://ftp3.tsinghua.edu.cn/mirror/gentoo 或者 http://gentoo.osuosl.org/releases/x86/

分区

从livecd 启动,给硬盘分区。硬盘分为4个区,linux可以完全安装在扩展分区上, 可以用 cfdisk 或者 fdisk 这样强大的工具来分区,分区结果如下:

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

/dev/hda1 1 1460 11727418+ af Unknown

Partition 1 does not end on cylinder boundary.

/dev/hda2 * 1461 1947 3900960 7 HPFS/NTFS

Partition 2 does not end on cylinder boundary.

/dev/hda3 1948 9729 62508915 f W95 Ext'd (LBA)

Partition 3 does not end on cylinder boundary.

/dev/hda5 1948 3407 11727418+ 7 HPFS/NTFS

/dev/hda6 3408 6569 25394481 b W95 FAT32

/dev/hda7 6569 6575 52416 83 Linux

/dev/hda8 6576 6710 1084356 83 Linux

/dev/hda9 6711 7684 7823623+ 83 Linux

/dev/hda10 7685 9729 16426431 83 Linux

挂载分区

打开硬盘的DMA,装完系统后,下边这句可以写到 /etc/conf.d/local.start 中。

# hdparm -c 1 -d 1 /dev/hda

先格式化,然后挂载分区

# mke2fs /dev/hda7

# mkswap /dev/hda8

# swapon /dev/hda8

# mkfs.reiser4 /dev/hda9

# mke2fs -j /dev/hda10

# mount /dev/hda9 /mnt/gentoo

# mkdir /mnt/gentoo/boot

# mount /dev/hda7 /mnt/gentoo/boot

# mkdir /mnt/gentoo/home

# mount /dev/hda10 /mnt/gentoo/home

# mkdir /mnt/gentoo/proc

# mount -t proc none /mnt/gentoo/proc

# mkdir /mnt/gentoo/dev

# mount -o bind /dev /mnt/gentoo/dev

分区表

1. 备份分区表信息:

# dd if=/dev/(your_disk) of=mbr.save count=1 bs=512

# sfdisk -d /dev/(your_disk) > partitions.save

The first of those saves the mbr and the second will store all partition info (including logical partitions, which aren't part of the mbr). 2. 还原分区信息:

# dd if=mbr.save of=/dev/(your_disk)

# sfdisk /dev/(your_disk) < partitions.save

从stage3安装

把stage3 压缩包解压到 /mnt/gentoo,使用参数p,保证不修改原来压缩包中的文件权限位。

# tar xvjpf /mnt/cdrom/stages/stage3-<subarch>-2006.0.tar.bz2

安装 portage

下载 portage 压缩包,解压到 /mnt/gentoo/

# tar xvjf /mnt/gentoo/portage-<date>.tar.bz2 -C /mnt/gentoo/

设置make.conf

根据T40p的硬件条件,几个主要的变量设置如下,USE 变量中必须的是 " cjk nls ntpl ntplonly ",强烈推荐使用稳定版本,也就是 x86:

CFLAGS="-march=pentium-m -O3 -pipe -fomit-frame-pointer"

#CFLAGS="-O3 -march=pentium-m -mtune=pentium-m -pipe -ftracer -fomit-frame-pointer -ffast-math -momit-leaf-frame-pointers"

CHOST="i686-pc-linux-gnu"

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

LDFLAGS="-Wl,-O1"

#LDFLAGS="-Wl,-O1 -Wl,--enable-new-dtags -Wl,--sort-common -s"

MAKEOPTS="-j3"

ACCEPT_KEYWORDS="x86"

USE="-fortran -arts -eds -ipv6 -qt -qt3 -qt4 -kde python -vorbis acpi X \

bash-completion cjk cups esd gtk2 imlib mime mmx mmxext nls aiglx alsa \

nptl nptlonly opengl oss posix readline sse sse-filters sse2 \

truetype unicode xft ati dri apm -apache -apache2 -xmms -ldap "

FEATURES="ccache parallel-fetch"

CCACHE_SIZE="2G"

CCACHE_DIR="/var/tmp/ccache"

VIDEO_CARDS=" radeon vesa vga"

INPUT_DEVICES=" keyboard mouse void synaptic"

LINGUAS="zh_CN"

GENTOO_MIRRORS="ftp://ftp3.tsinghua.edu.cn/mirror/gentoo"

#GENTOO_MIRRORS="http://gentoo.139pay.com"

#PORTDIR_OVERLAY="/usr/local/overlays/xgl-coffee"

PORTAGE_BINHOST="https://e.ututo.org.ar/i686/"

PORTAGE_BINHOST="http://gentoopackages.net/packages/i686/"

设置package.use

sys-libs/glibc userlocales

x11-terms/rxvt-unicode xft -iso14755

net-dialup/rp-pppoe -X

net-dialup/ppp -gtk

x11-base/xorg-x11 -3dfx -3dnow -bitmap-fonts -font-server -hardened -insecure-drivers -ipv6 -minimal mmx nls opengl pam -sdk sse sse2 -static truetype-fonts xv -type1-fonts -xprint

media-video/mplayer rtc avi encode esd mpeg quicktime real cdparanoia dvd dvdread ati win32codecs xvid -xmms cpudetection

mail-client/mutt imap pop mbox smime

dev-util/subversion -nowebdav

net-print/cups samba

安装准备

先复制resolv.conf到新系统

cp /etc/resolv.conf /mnt/gentoo/etc/

然后,chroot到gentoo的系统,开始安装

# chroot /mnt/gentoo /bin/bash

# env-update && source /etc/profile

更新portage

# emerge --sync

设置locale

根据 /usr/share/i18n/SUPPORTED,编辑文件 /etc/locale.gen

en_US.UTF-8 UTF-8

en_US ISO-8859-1

zh_CN GB2312

zh_CN.GBK GBK

zh_CN.UTF-8 UTF-8

zh_CN.GB18030 GB18030

设置时区

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改 /etc/conf.d/clock,设置

CLOCK="local"

设置正确的系统时间

# date MMDDhhmmYYYY

# hwclock --systohc

安装内核

从portage获取最新内核

# USE="-doc" emerge gentoo-sources

编译内核

# cd /usr/src/linux

# make menuconfig

# make && make modules_install

# cp arch/i386/boot/bzImage /boot/<kernel-version>

安装grub

    • 使用命令grub-install脚本,把grub的stage等文件复制到 /boot/grub 中去 (grub-install只是一个shell脚本,通过调用grub命令来完成安装任务):

      • # grub-install /dev/hda

    • 如果 /boot 为单独的分区,需要执行下边的命令:

      • # grub-install --root-directory=/boot /dev/hda

    • 如果是mbr被损坏,要重新安装grub到mbr,在grub命令提示符下先用find寻找 stage1的位置,然后安装。

      • # grub

      • grub> find /boot/grub/stage1

      • (hd0,6)

      • grub> root (hd0,6)

      • grub> setup (hd0)

      • grub> quit

修改grub

比如刚才的取名为linux-2.6.16-r9,则在 /boot/grub/menu.lst 中添加:

default saved

timeout 3

hiddenmenu

title=Gentoo Linux

root (hd0,6)

kernel /linux-2.6.17-r8 root=/dev/hda9 ro

savedefault

title=Microsoft Windows XP Professional

rootnoverify (hd0,1)

savedefault

makeactive

chainloader +1

title=Mac OS X

root (hd0,0)

savedefault

makeactive

chainloader +1

boot

NT Loader

如果要跟windows到NT Loader配合,可以这样做:

1. 先取得grub到引导扇区内容

# dd if=/dev/hda7 of=bootsect.lin bs=512 count=1

2. 把bootsect.lin 复制到windows所在分区,比如c:\\,修改c:\\boot.ini

[boot loader]

timeout=10

default=C:\BOOTSECT.LIN

[operating systems]

C:\BOOTSECT.LIN="Gentoo Linux GRUB Bootloader"

multi(0)disk(0)rdisk(0)partition(0)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn

安装软件包

必要的包

dbus

新型ipc,进程间新的通信协议

udev

比较新的系统,这个包已经包括在system中了

hotplug

管理USB和PCI热拔插的工具

coldplug

自动加载模块,比如插入u盘,则加载 usb_storage 等

syslog-ng

用于syslogd的日志工具

vixie-cron

用于cron的工具

ccache

增加编译效率,结合FEATURES变量使用

显卡3D

首先需要内核支持agp,如果要编译非内核自带的drm,那么 一定 要取消掉内核的 drm支持,编译内核时候make menuconfig如下:

Device Drivers --->

Character devices --->

<M> /dev/agpgart (AGP Support)

<M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support

< > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

< > ATI Radeon

因为drm是mesa必须依赖的包,则另外编译drm如下:

emerge -av libdrm x11-drm mesa mesa-progs

在启动模块中加入显卡相关模块 /etc/modules.autoload.d/kernel-2.6,如果不 添加的话,那么装了coldplug后,估计也可以自动识别。

intel-agp # your AGP chipset

agpgart

radeon

安装mesa驱动

如果要启动Aiglx的话,它已经内置到xorg-x11-7.1中了,编译之:

# emerge -av xorg-x11 xorg-server xf86-input-evdev xf86-input-mouse xf86-input-keyboard xf86-video-vga xf86-video-vesa xf86-video-ati

然后修改xorg.conf在对应处添加如下项目:

Section "Module"

Load "dri"

Load "drm"

# Load "GLcore"

EndSection

Section "DRI"

Group 0

Mode 0666

EndSection

Section "ServerLayout"

Option "AIGLX" "true"

EndSection

Section "Device"

Identifier "ATI FireGL 9000 Mobile[M9]"

Driver "ati"

VideoRam 65536

# Insert Clocks lines here if appropriate

BusID "PCI:1:0:0"

Option "BusType" "AGP"

Option "AGPMode" "4"

Option "EnablePageFlip" "true"

Option "RenderAccel" "on"

Option "UseInternalAGPGART" "no"

Option "mtrr" "on"

Option "ColorTiling" "on"

Option "OpenGLOverlay" "off"

Option "VideoOverlay" "on"

# Option "ReducedBlanking"

# This two lines are needed to prevent fonts from being scrambled

Option "XaaNoScanlineImageWriteRect"

Option "XaaNoScanlineCPUToScreenColorExpandFill"

Option "XAANoOffscreenPixmaps" "true"

Option "DRI" "true"

Screen 0

EndSection

Section "Extensions"

Option "Composite" "Enable"

EndSection

Section "Screen"

DefaultDepth 24

EndSection

修改 /etc/env.d/03opengl,使用命令

eselect opengl set xorg-x11

安装ati-drivers

**此为闭源驱动,无法使用Aiglx。**注意安装完成之后: 1. 修改 /etc/X11/xorg.conf,设置

Section "Device"

Identifier "fglrx"

Driver "fglrx"

VideoRam 65536

BusID "PCI:1:0:0"

...

2. 修改 /etc/env.d/03opengl,使用命令

eselect opengl set ati

或者直接修改该文件

LDPATH="/usr/lib/opengl/ati/lib"

OPENGL_PROFILE="ati"

安装无线网卡

T40p不是迅驰机,采用的是Dual无线网卡,lspci可以看到:

02:02.0 Ethernet controller: Atheros Communications, Inc. AR5211 802.11ab NIC (rev 01)

所以安装madwifi-ng驱动支持,辅助的工具安装wireless-tools和 wpa_supplication,前者提供iwconfig,后者提供wpa加密网络的便捷支持。推荐的 GUI设置工具为network-admin,此工具包含在gnome-system-tools包中,我在安装 过程中发觉唯独丢掉了network-admin这个工具,可以修改 gnome-system-tools-2.14.0.ebuild中第35行为:

G2CONF="${G2CONF} --enable-boot --enable-services --enable-network"

另外值得推荐的工具是networkmanager,不过在-x86中是被mask的,因为还不稳 定,事实使用过程中也常常crash :P

# emerge -av madwifi-ng wpa_supplication gnome-system-tools networkmanager

如果启用NetworkManager来管理网络设备的话,需要先把net.*从runlevel里边删 除,然后添加NetworkManager到default的runlevel。

# rc-update delete net.eth0 net.lo

# rc-update add NetworkManager default

无线网卡的配置

使用GUI工具的话配置很简单,需要知道的东西是无线网络的ESSID和加密方式,加 密方式包括是否加密和加密的用户名密码。

pam_keyring

使用NetworkManager来管理的话,有一个令人厌烦的地方是,每次启动后 gnome-keyring会提醒你输入密码,可以安装pam_keyring来解决;装完 pam_keyring后,编辑文件 /etc/pam.d/gdm,加入如下内容:

auth optional pam_keyring.so try_first_pass

session optional pam_keyring.so

如果不幸你曾经输入的keyring密码和你的登录密码不一致,因为当前的 gnome-keyring没有机制修改密码,所以你需要首先杀死gnome-keyring-daemon进 程,然后删除keyring文件 ~/.gnome2/keyrings,然后重新登录设置匹配的密码。

world

自行使用emerge命令安装过的软件包名都记录在 /var/lib/portage/world 中了:

Beryl+Gnome-light构建桌面

现在的桌面采用Beryl+Gnome-light,放弃了使用很久的fvwm。

Gnome中常用的工具有

evince

阅读pdf,dvi

eog

看图

rhythmbox

音乐播放

nautilus

资源管理器

gnome-applets

包含network, battery monitor,放在工具栏很方便

gnome-cups-manager

打印机管理

gnome-volume-manager

磁盘卷管理器,记得 把用户加入 plugdev 组

gnome-system-tools

其中的network-admin比较方便

networkmanager

网络管理,方便切换wired和wireless,用来替代baselayout

Beryl相关

beryl

beryl window manager

emerald

decoration

系统相关

acpid

acpi daemon

baselayout

基础脚本,启动脚本

cpufreqd

发挥pm的speedstep功能,对nb很有用,需要内核支持

hibernate-script

搭配ibm-acpi用于nb休眠

gentoolkit

gentoo工具集 equery, quickpkg ...

eix

快速的portage查询工具

wireless-tools

无线管理工具

wpa_supplicant

加密无线管理工具

显示相关

libdrm, x11-drm, mesa, mesa-prog

其他的资源

fetchmail, procmail, ssmtp

构建邮件系统

gnome-audio

事件动作的声音文件

localpurge

自动删除不需要的locale文件,节省磁盘空间(>100M)

hal

硬件抽象层,结合udev管理热拔插设备

mutagen

mp3 tag管理工具

quake3-teamarena

quake III :) 记得需要原版ISO中的.pak资源文件

antiword

把word文档转为txt文档 赞!

jimmac-xcursors

ubuntu中的仿mac milk光标

stardict, stardict-langdao-zh-en-gb, stardict-langdao-en-zh-gb, sdcv

字典以及命令行字典

设置

设置加载模块

在 /etc/modules.autoload.d/kernel-2.6 中设置自动加载的模块,比如:

agpgart

intel-agp

fglrx

button

ibm-acpi

nvram

psmouse

ide-cd

speedstep-centrino

loop

设置启动项

启动等级(runlevels)一般分成了boot, defalut, nonetwork 和 single,这可以在 /etc/runleveles 目录下找到对应关系。

rc-config 可以用来查看各个启动等级中启动的项目,要想添加和删除启动项目,可以使用 rc-update 命令。这些命令其实就是对 /etc/runlevels 目录的操作,比如添加 acpid 到 default 启动项目,就是在 /etc/runlevels/default 中增加了指向 /etc/init.d/acpid 的符号链接:

# rc-update add acpid boot

# rc-update add alsasound boot

# modules-update

设置fstab

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

/dev/hda7 /boot ext2 defaults 1 2

/dev/hda8 none swap sw 0 0

/dev/hda9 / ext3 defaults 0 1

/dev/hda10 /home ext3 defaults 0 0

none /proc proc defaults 0 0

none /dev/shm tmpfs defaults 0 0

/dev/hda6 /home/wine vfat defaults,shortname=mixed,utf8,fmask=133,dmask=022,uid=nini,gid=users 0 0

/dev/hdc /mnt/cdrom iso9660 ro,noauto,user,utf8 0 0

添加用户

# useradd nini -m -G users,wheel,portage,audio,games -s /bin/bash

# passwd nini

重启

创建stage4档

当系统全部搞定,而且清洁之后,可以备份整个系统或者备份根分区到一个地方,方便以后 快速恢复,可以用samba备份到nt机器上去,或者其他怎么的都可以 :) 下边是备份了根分 区,制作stage4:

# emerge samba

# mount -t smbfs -o username=julian //192.168.0.23/backup /mnt/smb

# cd /

# tar cjpf /mnt/smb/gentoo.tar.bz2 / --exclude=/proc/* --exclude=/tmp/* \

--exclude=/var/tmp/* --exclude=/boot/* --exclude=/usr/portage/distfiles/* \

--exclude=/usr/portage/packages/* --exclude=/usr/src/* --exclude=/home \

--exclude=/var/log/* --exclude=/sys/* --exclude=/dev/* --exclude=/mnt/*

其他安装方法

安装livecd

关键步骤:解压livecd到自己的硬盘

# mkdir /mnt/squashfs

# mount -o loop /mnt/livecd/livecd.squashfs /mnt/squashfs

# cp -a /mnt/squashfs /mnt/gentoo/

设置

1. 安装grub

# grub-install --root-directory=/mnt/gentoo --no-floppy hd0

2. 设置 menu.lst

default 1

timeout 30

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

title=Gentoo Linux 2.6.16-r6

root (hd0,7) kernel /boot/kernel-genkernel-x86-2.6.16-gentoo-r6 root=/dev/ram0 real_root=/dev/hda9 init=/linuxrc ramdisk_size=8192

udev vga=791 splash=silent,theme:livecd-2006.0 CONSOLE=/dev/tty1 quiet

initrd /boot/initrd-genkernel-x86-2.6.16-gentoo-r6

title=Windows XP root (hd0,0) makeactive chainloader +1

3. 最后汉化一下,装些中文字体

系统维护

对系统的维护可以以portage为基础,围绕world来展开,基本的portage系统配置 文件是:

    • /etc/make.conf 基本编译配置

    • /etc/portage/ 基本portage配置目录

    • /var/lib/portage/world

    1. 根据系统重新生成world文件

      1. regenworld

    2. 升级系统,其中u升级、D深度审查依赖树、a提示询问、v详细提示

      1. emerge --sync && emerge -uDN world

    1. 根据world清理不需要的包

      1. emerge -v depclean

    1. 重建依赖关系树,可以挽回上一步误删的包

      1. revdep-rebuild -v

    1. 修补安全漏洞 Gentoo Linux Security Advisor,或者 emerge security

      1. glsa-check -f all

會將系統升級到 "最新的 Gentoo"。

ebuild用法

使用低阶的ebuild,ebuild是低阶的工具,允许你一次一步的执行安装进程。这较为安全是 因为允许你在永久的改变前看到文件都将放到哪里。

# ebuild /usr/local/portage/category/program/program-version.ebuild unpack

# ebuild /usr/local/portage/category/program/program-version.ebuild compile

# ebuild /usr/local/portage/category/program/program-version.ebuild install

这三步操作完全在 /var/tmp/portage/program/ 下工作,这样就不会搞乱你的系统了。 portage环境变量存放在称为 build-info/ 和 temp/ 的子目录里,编译器输出到 work/ 目 录。install操作创建另一个称为image/ 的子目录,在这里执行“预安装”,现在到 image/ 目录

ebuild /usr/local/portage/category/program/program-version.ebuild qmerge

完成安装文件到你生活的系统中。你可能还需要使用 ebuild的 postinst 或者 clean 功 能,他们也在ebuild的man 页里描述。