gentoo初装记

时间: 2009-08-06 / 分类: Linux / 浏览次数: 8,371 / 1个评论 发表评论

已经提交了辞职申请单,闲得蛋疼,心血来潮,想装个gentoo试试,记得以前曾经装过一下,到编译内核那里就半途而废了,现在对linux的了解又稍微多了点,英文似乎也进步了一点,所以准备再来试试。
环境:windows 2003 R2 SP2,virtual server 2005 R2,分了256M内存和8G硬盘。
先在windows下下载了mini启动盘,准备网络安装,再下了stage3-i686-2008.0.tar.bz2和portage-lastest.tar.bz2,照着手册来开始安装。
把启动盘加载到虚拟机的光驱里,从光盘启动,先用passwd给root设置密码,再用/etc/init.d/sshd start启动ssh服务,以便待会上传stage3和portage两个包,然后用net-setup eth0设置网络,ping了一下qq.com,咳咳,谁叫它离我近呢,ping它比较爽,确定网络通了,然后开始分区。
fdisk /dev/hda,分了三个区,hda1给了100M,给/boot,hda2分了512M,给swap,其他的都给hda3做根分区,给hda1添加启动标志,把hda2的分区类型改为swap,保存,分区完毕,接着创建文件系统,mkfs.ext2 /dev/hda1给hda1创建为ext2(以前不知道从哪里看的说/boot分区最好为ext2,不知道对不对,反正为ext2没错),mkswap /dev/hda2创建hda2为swap,swapon /dev/hda2启用swap分区,hda3就直接mkfs.ext3 /dev/hda3,文件系统创建完毕。创建完文件系统当然就是将它们挂载上去,mount /dev/sda3 /mnt/gentoo,mkdir /mnt/gentoo/boot,mount /dev/sda1 /mnt/gentoo/boot,如果当时只分了两个区就不用挂载/boot了。
对一下时间,刚创建的虚拟机当然时间是正确的了,接下来用winscp开始把先前下好的stage3跟portage两个包传到虚拟机,tar xvjpf stage3-i686-2008.0.tar.bz2 -C /mnt/gentoo把stage3解开来,时间有点长,再tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr把portage解开,再编辑make.conf文件,学着用nano来编辑吧,gentoo默认的编辑器就是它,待会可没有vi可用,nano -w /mnt/gentoo/etc/make.conf,主要是添加一行MAKEOPTS=”-j2″,让它待会make的时候两路并发,这样速度快一些,没办法,咱只有P4。
然后添加镜像站点和rsync站点,mirrorselect -i -o >> /mnt/gentoo/etc/make.conf,在跳出来的站点里随便选一个,待会还要改的,mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf,这里选asia的那个吧,然后再打开make.conf,发现里面多了两行,一行是GENTOO_MIRRORS=“http://….”,后面的地址改掉,改成http://mirrors.163.com/gentoo,网易的镜像速度比较快,嘿嘿,下面那行SYNC=”rsync://…”就别改了。
下面把DNS的配置复制过来cp -L /etc/resolv.conf /mnt/gentoo/etc/,然后挂载两个文件系统,mount -t proc none /mnt/gentoo/proc和mount -o bind /dev /mnt/gentoo/dev,老夫是不太明白这两个东东是干啥的,以前看的基础都忘了,按照手册上说是“将/proc文件系统挂载到/mnt/gentoo/proc,这样chroot后的环境里安装时也可以获取内核提供的相关信息,然后以bind方式挂载/dev文件系统”,挂载完文件系统,下面开始切换到新的系统环境咯。
chroot /mnt/gentoo /bin/bash,把根从/切换到/mnt/gentoo,再使用env-update来建立新的环境,就是建新的环境变量,然后用source /etc/profile加载这些变量,为了便于识别,运行一条命令export PS1=”(chroot) $PS1″,这样在命令提示符前多了个(chroot),这样就知道是在新的环境下了。
再用emerge – -sync[两个-连着为啥发布后只有一个-了呢?只好分开了]更新portage树,谁知道你下的那个portage-lastest是不是真的lastest啊,更新一下好,更新完portage树,再设置一下时区,说是让系统知道自己在哪里,⊙﹏⊙b汗,有很大关系么?不知道以后再设置行不行,照着做吧,cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,接着就该安装内核源码了,emerge gentoo-sources,其他的源码不鸟它,安装完手册上说是用ls -l /usr/src/linux查看一下内核源码的符号链接,啦啦,老夫弄了好几遍都没错,估计不看也没事,不过老夫还是看了,它指向linux-2.6.30-gentoo-r4,下面开始配置内核咯。
进入到/usr/src/linux下,运行make menuconfig开始配置,哦,老夫先运行了个make defconfig生成了个针对i386的默认配置,这样好修改嘛,默认配置主要有几个要修改的地方,一个是处理器,老夫改成P4了,再个是文件系统,老夫前面hda1分区时ext2啊,默认可没有选择ext2的支持,加上,顺便加上了NTFS的支持,手册上提醒的伪文件系统默认倒是选上了,咱不用拨号,就不要ppp的支持了,用的P4 2.4G,不支持超线程, 也不需要SMP多处理器支持了,内存才512,也不需要大内存支持了,什么PCMCIA、无线网卡、万兆网卡千兆网卡,shit,用不起,都去掉,老夫就留下了dec 21140的支持,配置完,保存,开始编译内核。
输入make && make modules_install,make的过程有点长,老夫都等了将近一个小时,出去放放水、到处逛逛再回来,内核和模块已经编译完成了,然后就把内核复制到启动分区去,cp arch/i386/boot/bzImage /boot/kernel-2.6.30-gentoo-r4,名字随便给一个,弄长了待会输入还麻烦,接下来编辑fstab,把里面的内容修改一下,老夫就改了个

/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda3 / ext3 noatime 0 1
/dev/hda2 none swap sw 0 0
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0
proc /proc proc defaults 0 0

上面的配置有问题,后来才知道,所以改的时候一定要注意,后面再说。
接下来设置主机名,nano -w /etc/conf.d/hostname,随便来个gentoo算了,再编辑/etc/conf.d/net设置域名,也随便来个localhost了事,添加dns_domain_lo=”localhost”,还是在net里面设置网卡参数,添加两行
config_eth0=( “192.168.1.20 netmask 255.255.255.0 brd 192.168.1.255” )
routes_eth0=( “default via 192.168.1.1” )
然后保存,把网卡用rc-update add net.eth0 default命令添加到自动启动里。
再编辑/etc/hosts文件,把gentoo gentoo.localhost添加进去就行了,passwd设置一下root密码,手册上说什么编辑一下rc.conf跟keymaps,其实也没什么设置的,默认就够了,就是clock里面把CLOCK改为local就行了。
下面要安装两个必要的软件syslog-ng和vixie-cron,用emerge syslog-ng vixie-cron安装就行了,再用rc-update也把他们添加进自启动里,现在基本都安装完了,就剩下系统引导的问题了,开始安装grub
也用emerge安装grub,装完就开始编辑grub.conf,默认的稍微改一下,老夫设置的如下

default 0

timeout 5

title Gentoo Linux 2.6.30-r4
root (hd0,0)
kernel /boot/linux-2.6.30-gentoo-r4 root=/dev/hda3

title Gentoo Linux 2.6.30-r4 (rescue)
root (hd0,0)
kernel /boot/kernel-2.6.30-gentoo-r5 root=/dev/hda3 init=/bin/bb

配置完了当然是安装grub到引导里,执行grub-install –no-floppy /dev/sda即可。
当当当当。。。。
安装完毕,exit退出新的环境,卸载先前挂载的那些分区和文件系统,
umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
卸载记得不要在/mnt/gentoo目录下的任何地方来操作哦。
reboot,好高兴哦,终于装完了。
推出光盘,系统开始启动,嘿,kernel panic了,提示大概就是说不能找到root=hda3,下面还提示了一些sda1,sda2,sda3的,当时没搞清楚,后来才明白这里提示已经很清楚了,然后老夫就到处问,未果,重新删了虚拟机重来,还是这样的问题,重编译几次内核,问题依旧,最后突然试着在grub引导的时候把root=/dev/hda3改为了sda3,启动了,⊙﹏⊙b汗,hda怎么变成sda了,虽然启动了,但系统还有问题,一堆问题,到最后提示输入root密码继续,进去一看,什么都动不了,说文件只读,再经别人提示,才想起来,用光盘启动,把fstab里面跟gurb.conf里面的hda全改为了sda,终于进系统了。
马上又发现了另一个问题,/boot分区不自动挂载,手动可以挂上去,咋回事呢,再折腾了一边内核,确定ext2支持编译进去了,弄完才发现,fstab里/boot分区后面本应该是defaults的,结果老夫改的系统里默认的,居然是noauto,白白花了老夫一个小时来编译内核,到此,系统终于装完了。
关于那个hda变成了sda的问题,老夫在论坛上咨询了一下,有大佬回复说是因为加载的是sata驱动,兼容pata驱动,那能不能不加载sata驱动呢?说取消 Serial ATA (prod) and Parallel ATA (experimental) drivers,选择 ATA/ATAPI/MFM/RLL support即可,新的kernel使用的pata/sata驱动都是基于libata(driver/ata/)的,而libata又相当于是一个scsi low level driver。所以在新的kernel里,无论是pata/sata device都被当作是scsi device (/dev/sdX)。可以使用旧的ide subsystem来驱动ide device (driver/ide),这样会在/dev目录下显示hdX设备了,终于明白是咋回事了。
其他软件什么的再慢慢研究咯,老夫也快离开了,估计有段时间没法再继续研究咯,回去好好看书找工作咯。

1个评论

  1. litkt
    2011/02/27 20:58:49

    在fstab里自动加载/boot干什么?内核启动后,/boot就用不着了。需要对/boot里的文件作改动时再手动加载不迟,平时不加载/boot就碰不到/boot里的东西,还安全。
    所以fstab里/boot设为noauto是正确的。

发表评论

您的昵称 *

您的邮箱 *

您的网站