Feb 7

[原]开始安装Gentoo 晴

linuxing , 10:41 , Gentoo , 评论(0) , 引用(0) , 阅读(24607) , Via 本站原创 | |
 Gentoo的安装说难不难,说容易也不容易。其实只要你了解linux的基本原理,安装还是比较顺利的。我这里只是列举一下我所操作的步骤,相关的命令和原理介绍,请参考Gentoo官方安装文档
1、选择安装介质
 考虑到网络下载的速度较慢,我使用的是Gentoo Universal Installation CD,使用stage 3安装方式。(stage1和stage2在新的版本里面已经没有支持了)
 刻录Gentoo Universal Installation CD后,使用光盘启动即可。
2、设定网络
 我不习惯在本地进行linux的操作,所以先设置好网络,以方便远程安装。(这也有助于后面编译大型软件,节省时间)
 先用ifconfig看看是否正常加载了驱动,否则使用下面的命令加载驱动模块(以8139网卡为例)
modprobe 8139too

 若是用虚拟机进行的,加载pcnet32模块。
 然后设定网络参数:
ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
route add default gw ${GATEWAY}

 用实际的地址替换上面的参数。如还需要支持DNS的话,修改/etc/resolv.conf文件,增加如下参数:
引用
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

※也可以使用net-setup eth0脚本来设置。
 另外,对于ADSL、无线网络的接入方式,可以使用adsl-setup和iwconfig来配置。
3、分区
 接下来需要进行的就是分区的操作,需要留意的一点就是硬盘可以支持的分区数量:一个硬盘可以支持的主分区最多只有4个,但启动一个可以划分为扩展分区,扩展分区里面再划分逻辑分区。linux下标记由hda1到hda4为主分区,hda5开始为逻辑分区。
 linux最少需要一个swap分区和一个根分区。它们都可以基于物理磁盘的主分区和逻辑分区上。
 使用fdisk命令进行分区,预期分区格式如下:
引用
/dev/hda1 /boot 32M
/dev/hda2 /        10G
/dev/hda3 swap  512M
/dev/hda5 /usr    20G
/dev/hda6 /var    10G
/dev/hda7 /home   10G
/dev/hda8 /opt     11G

最后结果如下:
引用
# fdisk -l

Disk /dev/hda: 61.4 GB, 61492838400 bytes
255 heads, 63 sectors/track, 7476 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1           5       40131   83  Linux
/dev/hda2               6        1222     9775552+  83  Linux
/dev/hda3            1223        1285      506047+  82  Linux swap / Solaris
/dev/hda4            1286        7476    49729207+   5  Extended
/dev/hda5            1286        3718    19543041   83  Linux
/dev/hda6            3719        4935     9775521   83  Linux
/dev/hda7            4936        6152     9775521   83  Linux
/dev/hda8            6153        7476    10634998+  83  Linux

4、建立文件系统
 我比较怀旧,还是选择了ext3。命令如下:
mkfs.ext3 /dev/hda1

 swap分区需要激活:
mkswap /dev/hda3
swapon /dev/hda3

 激活后,用top可以看到swap已经生效。
 接下来就是挂载到系统上。(小心先后顺序问题)

livecd ~ # mount /dev/hda2 /mnt/gentoo
livecd ~ # mkdir /mnt/gentoo/boot
livecd ~ # mount /dev/hda1 /mnt/gentoo/boot/
livecd ~ # mkdir /mnt/gentoo/usr
livecd ~ # mkdir /mnt/gentoo/var
livecd ~ # mkdir /mnt/gentoo/home
livecd ~ # mkdir /mnt/gentoo/opt
livecd ~ # mount /dev/hda5 /mnt/gentoo/usr
livecd ~ # mount /dev/hda6 /mnt/gentoo/var
livecd ~ # mount /dev/hda7 /mnt/gentoo/home
livecd ~ # mount /dev/hda8 /mnt/gentoo/opt

 使用df -h可以查看到结果。
※注意,如果/tmp是单独的分区,需要考虑权限问题。对于/var/tmp目录也有同样的限制(/var/tmp目录是gentoo编译套件的临时目录)
chmod 1777 /mnt/gentoo/tmp

5、使用stage3压缩包
 先要考虑的问题是时间,如果时间不正确,会引起后面很多问题,所以先要设置好时间:
date 月日时分年

 然后就是找对需要的stage3压缩包,这个可以通过uname -m或直接找你对应的硬件平台。
进入/mnt/gentoo目录,从网络下载,或直接从光盘获得。(我当然是从光盘拿啦,速度快不少)我需要的stage3包在/mnt/cdrom/stages目录下:
ls /mnt/cdrom/stages
tar xvjpf /mnt/cdrom/stages/stage3-i686-2005.1.tar.bz2

6、使用portage快照
 portage快照里面是告訴 Portage 那些软件可以安裝,那些 profiles 可以使用等等的文件集合。
tar xvjf /mnt/cdrom/snapshot/portage-2005.1.tar.bz2 -C /mnt/gentoo/usr/

7、设置编译变量
 有很多的变量会影响到Portage的编译,如果是临时的变量,可以用export设置,但如果是常用的变量,则在etc/make.conf文件中定义。(可以参考etc/make.example.conf文件)
 下面是我使用的参数:
引用
CFLAGS="-O2 -march=i686"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"

8、寻找最快的镜像站点
 由于gentoo在安装的时候需要随时用网络上下载可用的最新套件,所以我们最好为他设置一个最快的镜像站点文件。
mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

 自动选择-a经常出问题,我还是用手动选择算了。可以同时选择多个站点。
9、为进入chroot环境做准备
 拷贝DNS的设置文件,以待后面chroot后使用:
cp -L /etc/resolv.conf /mnt/gentoo/etc/

 挂载必须的两个目录
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev

10、进入chroot环境
 使用下面的命令进入新环境:
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

11、为安装套件做准备
 先更新Portage Tree:
emerge --sync

 然后是查看默认的profile是否合适:
ls -FGg /etc/make.profile

 我安装的时候已经有2006.0的profile了,手动的替换过去:
ln -snf /usr/portage/profiles/default-linux/x86/2006.0 /etc/make.profile

 最后要了解的还有两个变量USE和GLIBC Locales,USE参数可以从这个文件获得信息:/usr/portage/profiles/use.desc,根据需要使用export或写到/etc/make.conf文件即可。例如:
引用
USE="-gtk -gnome qt kde dvd alsa cdr"

 至于GLIBC Locales,是可以设定在编译的时候只使用的地域。我们需要加上中午的支持。更详细的请参考官方资料。
 先打开GLIBC自定义支持:
echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

 然后根据/usr/share/i18n/locales和/usr/share/i18n/charmaps/里面的设定添加需要的支持,如:
引用
en_US/ISO-8859-1
en_US.UTF-8/UTF-8
zh_CN/GB18030
zh_CN/GB2312
zh_CN/GBK
zh_CN.UTF-8/UTF-8

 再来就是重新设定一下chroot环境下的时间区域:(奇怪,只有重庆,没有北京?)

ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
date 020715042006
Tue Feb  7 15:04:00 CST 2006
hwclock --systohc
sed 's/CLOCK="UTC"/CLOCK="local"/' /etc/conf.d/clock

12、安装核心
 好啦,终于把准备工作都做好了,开始安装核心源码:

USE="-doc symlink" emerge gentoo-sources
ls /usr/src/ -l
total 4
lrwxrwxrwx   1 root root   22 Feb  7 15:43 linux -> linux-2.6.15-gentoo-r1
drwxr-xr-x  19 root root 4096 Feb  7 15:43 linux-2.6.15-gentoo-r1

 然后就是比较麻烦的核心编译。我使用的是最简化的编译选项:
# cd /usr/src/linux
# make menuconfig

 启动后如图:
点击在新窗口中浏览此图片
 先是设定CPU类型:
点击在新窗口中浏览此图片
 支持超线程:
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片
 若使用的内存很大,把这里选中:
点击在新窗口中浏览此图片
 若你使用的是笔记本电脑,则应该把PCMCIA模块也选中:
点击在新窗口中浏览此图片
 根据你使用的SCSI卡或RAID卡选择对应的模块:
点击在新窗口中浏览此图片
 下面是选择你使用的文件系统:(记住,把你使用的文件系统内置到核心中,这个可以避免很多问题)
点击在新窗口中浏览此图片
 把NFS和SMB网络文件系统的支持选上,用模块即可:
点击在新窗口中浏览此图片
 把文件系统支持的语言选中简体中文、繁体中文,UTF-8:
点击在新窗口中浏览此图片
 最后要考虑的就是USB支持,现在很多USB键盘,需要打开这里:
点击在新窗口中浏览此图片
 保存、退出后。开始编译:

make && make modules_install
cp arch/i386/boot/bzImage /boot/gentoo-2.6.15-r1/

 我建议把coldplug也加上,毕竟自动监测还是比较方便的,就是牺牲一些启动时间而已:

emerge coldplug
rc-update add coldplug default
rc-update add coldplug boot

※一个比较好的方法是,引用光盘自带的核心设定文件,然后再手动添加需要的选项
zcat /proc/config.gz > /usr/src/linux/.config
make menuconfig

13、另外编译核心的方式
 如果嫌手动编译麻烦,可以使用genkernel进行:
emerge genkernel
zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6
genkernel all

 会产生如下几个文件,/boot目录下:
引用
System.map-genkernel-x86-2.6.15-gentoo-r1 模组
initramfs-genkernel-x86-2.6.15-gentoo-r1 初始化根磁盘,用于启动的时候监测硬件
kernel-genkernel-x86-2.6.15-gentoo-r1 核心映像文件

 之后再加上coldplug自动监测硬件:
emerge coldplug
rc-update add coldplug default
rc-update add coldplug boot

 这样的方法最简单,但可能核心比较大,看自己的选择咯。(我选择了手动编译)
14、设定需要的模块
 有些模块我们不是放到核心里面的,那就必须配置一下,让他开机的时候加载咯。
 修改/etc/modules.autoload.d/kernel-2.6文件,写入要加载的模块,如:8139too。(可以加载的模块,可以从/lib/modules/2.6.15-gentoo-r1获得)
15、配置/etc/fstab文件
 该文件是用于自动挂载文件系统的,参考上面的设定配置它:
引用

/dev/hda1               /boot           ext3      defaults,noatime    1 2
/dev/hda2               /               ext3            defaults        0 1
/dev/hda3               none            swap            sw              0 0
/dev/hda5               /usr            ext3            defaults        0 0
/dev/hda6               /var            ext3            defaults        0 0
/dev/hda7               /home           ext3            defaults        0 0
/dev/hda8               /opt            ext3            defaults        0 0
/dev/cdroms/cdrom0      /mnt/cdrom      iso9660         noauto,ro       0 0
proc                    /proc           proc            defaults        0 0
shm                     /dev/shm        tmpfs           nodev,nosuid,noexec    0 0

※注意,这时候vi还没有编译,gentoo提供的编辑工具只有nano。
16、设定主机网络参数
 这里设置的参数是为了让主机启动后能自己获得IP地址,以及它的主机名等。
# cat /etc/conf.d/hostname
HOSTNAME="gentoo"

 若有DNS域和NIS域的话,可以修改/etc/conf.d/domainname文件。然后用rc-update add domainname default加入到启动里面。(我这里没有)
 gentoo的网络设置和其他发行版本的设置有点不一样,可以参考/etc/conf.d/net.example文件配置。例如我的网络配置:
引用
config_eth0=( "192.168.228.178 netmask 255.255.255.0 brd 192.168.228.255" )
routes_eth0=( "default gw 192.168.228.1" )

 如果你使用的是dhcp,这用这样表示:
引用
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"

 若你用多个网卡,则添加多个ethx即可。
 最后是设置启动后自动启动网络:
rc-update add net.eth0 default

 如果你有多个网卡,则:
cd /etc/init.d
ln -s net.eth0 net.eth1
rc-update add net.eth1 default

 如此类推。。
 另外,你还可以修改/etc/hosts文件,做IP和域名映射,这个看需要吧。
17、设定必须的系统资料
 给管理员设置密码
passwd
echo "tts/0" >> /etc/securetty

 按需要设定/etc/conf.d/keymaps、/etc/conf.d/clock等文件。
18、安装系统必须的软件
 好啦,就差一些系统必须的软件了,安装吧:
emerge syslog-ng
rc-update add syslog-ng default
emerge vixie-cron
rc-update add vixie-cron default
emerge slocate
emerge dhcpcd

 如果还有ADSL,用USE="-X" emerge rp-pppoe安装。
19、启动前最后的设定
 这里需要做的是安装启动程序Grub:
emerge grub

  修改配置文件:
nano -w /boot/grub/grub.conf

  我使用的核心不是用genkernel编译的,所以内容是这样:
引用

default 0
timeout 10
#下面的(hd0,0)表示/dev/hda1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

titile=Gentoo Linux 2.6.15-r1
root (hd0,0)
kernel /boot/kernel-2.6.15-gentoo-r1 ro root=/dev/hda2 video=vesafb:ywrap,mtrr,1024x768-32@85

 另外,如果你的核心使用genkernel编译的,则应该这样:
引用
default 0
timeout 10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

titile=Gentoo Linux 2.6.15-r1
 root (hd0,0)
#下面定义一个虚拟磁盘,用于启动的时候监测硬件
 kernel /boot/kernel-genkernel-x86-2.6.15-gentoo-r1 ro root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda2 udev video=vesafb:ywrap,mtrr,1024x768-32@85
 initrd /boot/initramfs-genkernel-x86-2.6.15-gentoo-r1

  最后当然就是安装grub到MBR了:
grep -v rootfs /proc/mounts > /etc/mtab
grub
grub> root (hd0,0)  指定/boot分区
grub> setup (hd0)   安装到MBR
grub> quit

 好啦,基本系统安装完成啦!下面就不用说了,重启!
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

 恭喜你!一切顺利的话,机器重启后就可以进入我们的gentoo系统,后面的就看你自己的发挥咯!

PS:我启动后的简单步骤:
/etc/init.d/sshd start
rc-update add sshd default
locate -u


※2006-02-07 第一次编写完成
Tags: ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]