原地满血复活

Oct 08, 2010 23:24

说的是我的本本。国庆节前搞坏了,一直都没来得及修,因为要看书,如果图书馆都关门,家里又有电脑分心,那就一个字都看不进了。

升级到 Fedora 14 后,fedora-release-14 默认打开了 updates-testing 仓库,结果不小心装了几个包。不知道怎么降级,所以直接从光盘 rpm -ivh --force 装上去了,也没有卸载原来的。后来这几个包被 push 到 stable,才想起来用 package-cleanup --clear-dupes 要把旧版本的卸掉。没想到悲剧发生,文件被干掉了--我本以为会保留文件,毕竟新版本也指向它们,没想到新的 rpm 在解析 conflict file 时是这个逻辑。主要是两个库,libcanberra 有四个包,libselinux 有四个包。系统中几乎所有软件包都依赖于 libselinux.so.1,所以连再运行一个命令都不能,甚至重启都不能了。启动时指定 init=/bin/sh 可以拿到 root shell 但是任何命令都执行不了。

今天花了三个小时来修他。手上只有一个淘汰下来的移动硬盘,里面还是 F10,好像换下来之后就没有用它启动过系统。里面还是 LVM 的配置,所以在 grub 纠结了半天。重启无数次后才知道,UUID 和 LABEL 原来都是不能用的,幸运的是 /dev/VolGroup00/LogVol00 这样的写法可以!到了一个完整的系统里就好办多了,把原来的分区挂上,rpm 指定 root 和 db 路径,再次安装那个 rpm,完事。整个过程里最费时间的是在找所有的 UUID 然后挨个试验(最终发现列出来的 UUID 都不对)。还有就是最后要做一次 selinux relabel,以前的 80G 硬盘需要走三行星星,现在 500G 硬盘竟然要走八行了。。很耗时间。期间比较幸运的地方:移动硬盘的系统竟然可以启动,而且是需要用主机上最新的内核才可以;移动硬盘里的 rpm 竟然能解开 F14 的 rpm payload,本以为压缩方式变了的--可是为什么 rpm2cpio|cpio -div 出错呢?还有,在 ext3/4 之间转来转去,竟然没有问题。最后是 /var/log/messages 幸好还留着 package-cleanup 的记录,只有那几个软件包被 Erased。总的来说是很幸运啊!

edit: 更运气了,26 号机器坏掉,正是 http://bugzilla.redhat.com/634757 爆发,之后 mass rebuild,然后到两三天前正好 push stable。 :D

fedora

Previous post Next post
Up