I integrated udev with Fedora Core. The main piece is simply building
/udev on boot, since we don't have an initramfs yet. We should also
clear out /udev on shutdown, for /udev directories mounted on persistent
media.
The attached script goes in /etc/init.d
Then do "chkconfig --add udev"
And the rest is handled automatically. I made it for Fedora but it will
probably work, with little change, on any Linux system.
Right now it only does sysfs-based discovery of block and tty devices,
since those are the only types of devices I have on my system. There is
a TODO in the script where we would add the other device types.
OK, I fixed that bug you hinted at earlier in my previous
sleep_for_dev() patch. I am sure you fixed it, but here we go
nonetheless, just in case.
I actually changed it up a bit. It is probably faster to count down
from SECONDS_TO_WAIT_FOR_DEV than count up.
I also made the lone 'path' argument const, since it can be.
Some other misc. bits, too.
Unix file modes should be stored in a mode_t, not a standard type. At
the moment it is actually unsigned, in fact, not a signed integer.
Attached patch does an s/int mode/mode_t mode/ and cleans up the
results.
> But the test.block script doesn't catch any partitions on the block
> devices :)
Never happy!
[19:07:52]root@phantasy:~/src/udev/udev# ./test.block
[19:13:37]root@phantasy:~/src/udev/udev# ls /udev/hd*
ls: /udev/hd*: No such file or directory
[19:13:42]root@phantasy:~/src/udev/udev# ./test.block
[19:13:53]root@phantasy:~/src/udev/udev# ls /udev/hd*
/udev/hda /udev/hda2 /udev/hda4 /udev/hda6 /udev/hdd
/udev/hda1 /udev/hda3 /udev/hda5 /udev/hdc
test.block now recurses /sys/block, looking for partitions. Should add
all drives and all partitions.
> Hm, I would also like to add the /etc/hotplug.d/default/udev.hotplug
> symlink, but rpm doesn't seem to like symlinks in the %files section.
> Anyone know how to do this properly?
The problem is that the symlink is left dangling to an absolute location
in the build root, which won't exist on the installer's system. RPM 4.0
and on catches this.
Attached patch fixes it up and makes it work.
Some spec file changes. Primarily, this makes the thing build without a
build root if so desired (i.e. build right out of /usr/src/redhat and
the standard file system). It should still build from a build root,
too.
Also:
- Add some Prereqs
- Pass RPM_OPT_FLAGS to make so we build with the RPM build
policy (i.e., optimizations, architecture, etc.)
- Specify the exact files in %files to make sure we install
everything properly and avoid a warning