分类: BSD
2008-05-26 00:44:58
昨晚无意间更新/usr/src/至current。系统核心在make kernel以后升级至FB8-current,结果发现部分功能出现奇怪的结果,甚至干扰桌面工作的debug模式都被打开了。用fusefs-ntfs挂载一个ntfs格式的移动硬盘都会出错,导致死循环无法退出,其间切换不同的vtty都不能使用键盘,简直就让人发狂到了极点。
无奈之下产生了重新make buildworld的想法,结果发觉/lib/libc.so.7的版本超过了1.1。系统不断报错,连最简单的ls都无法使用了。这个结果让我更加郁闷,只好产生了重新安装FB的想法,几经咬牙之后,还是舍不得自己积累的配置和软件,于是,我抱着偷懒就是学习的念头,开始进行恢复安装。
废话少说,因为这个该死的/lib/libc.so.7库文件不断报错,我在root下无法从网络上下载任何文件,所以只能进行CDRom引导安装。
用CDRom引导进入安装界面以后直接选择[Standard]标准安装。
进入分配磁盘空间界面以后,按下键盘[q],跳过磁盘格式化选择过程。(我的目的就是保留现有数据)。
启动引导管理器安装过程随意,反正恢复安装不会对修改出错误的引导信息。
在磁盘标签界面按照之前/etc/fstab列表中的标签一一对应,选中相应的分区按下[m]挂载到之前的目录。做完上述步骤后按下[q],进入下一步。
在软件包选择界面选中[X-Developer]和[X-User],这两个集合包含了桌面系统所需的软件包。然后安装,结束可按照之前的系统参数继续设置一次,大部分设置会追加在安装前的配置文件中。很少的几个配置文件将会被重新创建,例如:与系统用户信息现关联的/etc/passwd和/etc/group等等。
虽然系统用户信息丢失,只要之前的备份工作做得好,恢复一下特定文件还是可以保证系统无损的。但是由于我的电脑无法使用cp和tar等命令。所以,我只能重新创建之前的用户信息了。
安装完毕后重新起动进入单用户模式。
方法为:启动界面选择[6.Escape to loader prompt],然后在命令提示符后输入[boot -s]。
确认使用默认的/bin/sh后,挂载所有的分区。
#mount -aw //直接读取/etc/fstab里的信息然后把分区以读写方式挂载。
#cd /usr/src
#make buildworld && make installworld && exit
//重现编译所有的基本库和二进制程序,在成功以后进行安装,成功安装后进入多用户模式。
经历以上步骤后,我进入系统测试发觉效果良好,新建了之前的用户帐户后,所有功能都恢复正常,仅仅是部分配置文件有所更改,手动恢复就可以。
昨天晚上的恢复安装并没有解决所有问题,当我使用pkgdb -F修复我的ports完整性时,pkgdb工具总是报错,并且在执行命令的目录下生成ruby18.core文件。因此,判断为pkgdb工具损坏。隧将/usr/ports/lang/ruby18与/usr/ports/ports-mgmt/portupgrade重新下载编译,然后继续pkgdb -F,发觉工具仍然报错说无法修复/var/db/pkg/pkgdb.db。只好重命名/var/db/pkg/pkgdb.db,然后使用pkgdb -u生成全新的pkgdb.db。
终于可以用pkgdb -F了,剩下的就是等待智能的pkgdb把受损的ports补全。