Chinaunix首页 | 论坛 | 博客
  • 博客访问: 628068
  • 博文数量: 144
  • 博客积分: 5037
  • 博客等级: 大校
  • 技术积分: 1581
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-30 21:49
文章存档

2010年(16)

2009年(128)

分类: LINUX

2010-08-04 11:09:54

   在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    这里以情况而定。

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


阅读(5270) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~