UbuntuGutsy开机时出现”failedtoinitializeHAL”的解决办法:
#mv/etc/rc2.d/S12hal/etc/rc2.d/S13hal
#mv/etc/rc2.d/S13gdm/etc/rc2.d/S14gdm
其中第二步视gdm项的启动顺序而定,只要gdm比hal启动级大即可.比如S14gdm的启动级就比S13hal大.以下有启动级的简介.
问题原因其实是/etc/init.d/rc文件中的一句CONCURRENCY=shell造成的.默认是none.而设为shell之后系统加载将并行启动程序.而concurrency=none则不会.并行启动将会大大节省系统启动的时间.因此很多linux优化的文章中都会介绍这一方法.
启动项的启动顺序是由/etc/rc(n).d/里各链接名指定的.比如此例中/etc/rc2.d/S12hal就比S13gdm先启动,而相同S值的项目在concurrency=shell的情况下将并行启动.
回到问题本身.要想让系统正常工作,必须先让dbus在hal之前启动,然后才是gdm。gutsy之前的版本都是这么做的,即使设为shell也没有问题.而升级到gutsy后,hal与dbus处于同一启动级别.因此在concurrency=shell设置下由于hal和dbus同时启动导致hal无法读取dbus.因此只需要将hal的启动级调到dbus之后即可.而为了安全起见,也将gdm的启动级从13调到14,以防止与hal的13冲突.
下载本文示例代码
阅读(192) | 评论(0) | 转发(0) |