UTC的bug
给一台测试机装的debian5.0,apt-get到最新,同时还有一个原来的xp系统做双启动。
今天早晨来了还好好的用putty远程访问过,过来一会突然发现断线了。跑过去一看,机器居然重启了,重启也就罢了,还启动不起来!
错误信息,fsck的问题:
/dev/sda2 last superblock write time is in future
然后就是提示要手工fsck,按提示做了,重启,错误依旧,,,,,
麻烦来了。
完整的错误log我这里找不到,因为分区那时候被mount为read-only,什么日志都没,为了便于查找,我就说下关键点吧。
这是个UTC时区的bug,与hwclock脚本、启动顺序有关,比较复杂,症状描写见这个bug:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543375
还有这个帖子:
这我这里的表现是bios时间为北京时间,而debian在启动时却错误地加上8小时,以至于ext3分区的最后mount时间比当前时间还要future(虽然你在debian中已经设置了不用utc),于是死活不让mount。
解决方案:
我没按上面的说法更新util-linux2.16.1包,而是启动进了xp(手头没有livecd),下载安装ext2fsd:http://www.ext2fsd.com/,载入ext3分区,接着在xp下修改debian的/etc/default/rcS文件,把UTC=no改为yes,fsckfix=no改为yes,然后重启到debian。ok
接着在debian里修改当前时间为正常时间,再重启。否则xp时间会不正常。
知识点:
- linux,xp在关机时都会把时间回写到bios
- xp只用当地时间(localtime),它把bios就认为是localtime,不会计算时区;xp默认会自动与网络世界服务器同步。
- fsck -y /dev/sda2 #对所有问题都回答yes
- shutdown -rf now #快速重启,省略fsck,不过这个操作需要对磁盘进行写操作
- ext2fsd可以再xp下读写ext2,ext3分区,而以前用过的ext2fs driver在ext3无效。
- /etc/default/rcS文件,保存着rc.d下其他脚本文件的默认值
顺带说一句,这就是用testing版本的风险。O(∩_∩)O~