LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1313|回复: 3

FreeBSD Release 5.4 to 6.1的危险经历

[复制链接]
发表于 2006-5-21 22:34:51 | 显示全部楼层 |阅读模式
6.0出来后,一直没有升级,等到6.1发布后,决定升级,没想到却遇到了麻烦。下面把我的这次经历写出来(里面有些地方我还不是很清楚)。
1. 先cvsup,同步源代码,接下来:
/usr/src/usr.sbin/mergemaster/mergemaster.sh -p
这里出现了第一个错误。当出现处理./etc/master.passwd这个文件的时候,有d,i,m,v四个选项,我没看清楚,选择了d,结果/etc/master.passwd给清空了(后来我选的i,就是用/usr/src/etc/master.passwd替换/etc/master.passwd,但是会把普通用户删掉,我不清楚最好应怎么办)。然后,
cd /usr/obj
chflags -R noschg *
rm -rf *
adjkerntz -i
cd /usr/src
make buildworld
make buildkernel KERNCONF=MY_KERNCONF
make installkernel KERNCONF=MY_KERNCONF
reboot
一切还算顺利

2. 重新启动,问题来了:
出现了12#错误,看提示,是在装入nvida.ko的时候出了问题。我想,是nvdia显卡驱动是与内核相关的。可是,这时候进入不了系统,没办法修改/boot/loader.conf。想起还有原来的内核,于是查handbook。上面说:在刚启动时,按除了enter键之外的任何键,出boot:,然后unload,再/boot/kernel.old/kernel。这样做了之后,能启动,但在装入内核的时候死机。关键是不知道unload是什么意思。
后来,只好启动时,只按一次回车键,出现一个选择不同的启动方式时,按6,出现命令提示符“OK”。输入?看帮助,里面有unload,load,boot等命令。于是,执行下列命令:
unload
load /boot/kernel.old/kernel
boot
哈,顺利进入系统。

3. 修改/boot/loader.conf, 注释掉nvidia_load="YES",重新启动。
果然,是这里的问题,现在能用6.1内核进入系统了。于是,进入单用户,执行命令:
fsck -p
mount -u /
mount -a
make installworld
安装了一部分后却出现错误,提示需要audit组,可是我的/etc/group里面没有这个组。一查/usr/src/etc/group,发现里面有这个组,于是只好又/usr/src/usr.sbin/mergemaster.sh -p, 出现处理group文件时,选i。然后再make installworld,却又提示一些文件找不到。只好重新make buildworld.

4. 重新make buildworld时,却没有成功,最后的错误是:Too many errors, Gave up! 不知道具体原因,按下Scroll Lock键,向上翻页,但是由于上面的“Too many errors, Gave up!"重复了几十行,根本看不到具体错误原因。make buildworld > log 2>&1 , 想把标准输出和标准错误重定向到log文件,却不能执行。我想,是不是第一次make installworld时只安装了一部分6.1的系统文件,导致系统不相容。

5. 没办法,只好又cvsup,同步到5.4的源代码,退回到5.4。这回很顺利。就这样,先回到5.4,再升级到6.1。用ports升级了nvida的驱动,然后一切OK

=====
总结:
1. 一定要保存一个正确的内核。而且由于每次编译内核后,原来的内核就会覆盖/boot/kernel.old/,所以,最好把正确的内核备份到另一个地方,比如:cp -R /boot/kernel.old /boot/kernel.good
2. 出现问题,不要马上就重装,看看handbook,也许能找到解决办法。
3. /usr/local, /etc, /home 这三个分区最好与/ , /usr单独分开,一旦确实需要重装,也能保留这三个分区里的文件(特别是配置文件)。
发表于 2006-5-22 09:00:15 | 显示全部楼层
只能说LZ还没有理解透如何make world.
另外,/etb,/boot都是不能单独分出来的.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 09:36:15 | 显示全部楼层
Post by congli
只能说LZ还没有理解透如何make world.
另外,/etb,/boot都是不能单独分出来的.

我最不能了解的是mergemaster。
/etc, /boot确实不能单独分出来,而必须和/在同一个分区里面,我理解错了。
不知道还有哪些地方不正确,请多指教。
回复 支持 反对

使用道具 举报

发表于 2006-5-22 21:52:00 | 显示全部楼层
mergemaster这个东西我现在也理解不了。。

所以基本上没有搞过。。。等这几天把书上的东西看完了再搞一下。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表