mistie710 (mistie710) wrote,

I dunnit! (KDE3 HAL-enabled on openSUSE 12.2)

OK, here's the poop. As you may be aware, I have been building a new server. The one buggette that has been haunting me is something that I've seen in many places online but few people appear to have the answer. Well, it was a lot of work, but I finally found out why HAL wasn't working.

The thing is that HAL has been deprecated but is vital to KDE3 and its automounting setup. openSUSE have attempted to replace it with udisks2 but, as I found out to my cost and everlasting annoyance on Kanata, udisks2 sucks and blows at the same time. The fact that openSUSE 11.4 went to Evergreen was encouraging but with Kurumi based around a UEFI setup, getting 11.4 to work there would have been a complete nightmare, so back I went to 12.2. This time, I pulled HAL from the main KDE3 repo, then switched the damn thing off and went over to the HAL-enabled repo and grabbed KDE3 there. All went well until I suddenly realised that Kurumi couldn't recognise a thing other than her root partition.

A couple of years ago, the system message bus process, dbus, was introduced to replace all that had gone on before, including the dubious practice of device polling that had been used to detect things before that. dbus was usually started before HAL so that the pair of them could talk out whatever was running and where. One idea was that dbus should really have a user, so I tried creating one using the command:
groupadd -g 81 dbus; useradd -c 'System message bus' -u 81 -g dbus dbus; usermod -s /bin/false dbus; usermod -d '/' dbus

No luck there, though I suspect that it may have set part of what was needed going. With that, I decided to pull the service control script to bits to see what it did. The main gubbins is a program call /usr/sbin/hald which, for the sake of diagnostics, just happens to contain a bunch of switches that eventually gave me the clues I needed.

The first clue was that hald died because it could access three "files" in a directory called /etc/hal/fdi. I later discovered that the "files" should have been directories so I create those three; policy, information and preprobe. Having done that, I was getting further but was now getting a [DIE] error when trying to access the fdi-cache. To get around that, I ran the script /usr/lib/hal/hald-generate-fdi-cache. I then rebooted and lo, HAL burst into life! Everything is mounting as it should!

So it would seem that a bunch of files are not being created when HAL is installed. To fix it (as root):
  1. mkdir /etc/hal/fdi/preprobe
  2. mkdir /etc/hal/fdi/information
  3. mkdir /etc/hal/fdi/policy
  4. /usr/lib/hal/hald-generate-fdi-cache
  5. reboot
  6. *something something something*
  7. PROFIT!!!
Hopefully this fix doesn't revert after an update or whatever, but right now it is working just fine!

Of course, you realise that openSUSE 12.3 is a handful of days or so away though...
  • Post a new comment


    default userpic

    Your IP address will be recorded