解决Ubuntu启动时出现的Failed to initialize HAL错误

5304阅读 0评论2010-08-04 skyily
分类:LINUX

   在Ubuntu Linux下,有不少朋友遇到“failed to initialize hal”错误。
这个错误最直接的表现是:在启动时弹出提示框告诉用户“failed to initialize hal”
这个错误将间接导致一些即插即用硬件使用错误。
比如:网卡本来是即插即用的,你拨掉网线、网络就会不可用,当你再插上网上,系统应该自动恢复网络。但如果出现上述错误就不会这样了。
又比如:U盘和移动硬盘本来是即插即用的,你一插上U盘就会在桌面上显示一个U盘符号并显示卷名称。但如果出现上述错误,就会表现为U盘或移动硬盘不能自动挂载。

出现上述原因的根本在于系统服务dbus和hal的启动顺序。
Ubuntu Linux中采用dbus+hal来管理即插即用设备,关于具体工作方式,大家可以自己用google搜索一下。
   关键要知道的一点就是dbus服务必须在hal之前启动,否则hal就会启动失败。

回到问题本身.要想让系统正常工作,必须先让dbus在hal之前启动,然后才是gdm。 gutsy之前的版本都是这么做的,即使设为shell也没有问题.而升级到gutsy后,hal与dbus处于同一启动级别.因此在 concurrency=shell设置下由于hal和dbus同时启动导致hal无法读取dbus.因此只需要将hal的启动级调到dbus之后即可. 而为了安全起见,也将gdm的启动级从13调到14,以防止与hal的13冲突.

注:

   着手HAL的启动问题,查到hal的启动项为 /etc/rc2.d/S12hal。12表示启动优先级。(S for service?) 其依赖的dbus的启动项为S12dbus。

在修改好hal和gdm的顺序之后,我发现rc2.d中没有dbus

可能是在什么时候把这个服务禁止了,起的,

ln -s ../init.d/dbus S12dbus    这里以情况而定。

重启:成功,网卡有可以启动了。一切正常了。


上一篇:一首简单的歌
下一篇:ubuntu启动不了x server