On 04/17/2011 03:34 AM, Simon Geard wrote:
> On Sun, 2011-04-17 at 00:26 -0500, DJ Lucas wrote:
>> Ahh...lightbulb. This is why we currently have the udev-retry in our
>> bootscripts. Are the ids files accessed directly by external programs or
>> by the utility libraries/programs? Provide a common library to access
>> the files (if not done already) and install into the root and place the
>> ids files into the libexecdir, problem solved.
>
> I don't pretend to follow the details - I'm going mostly by the
> statements made by systemd-developer Lennart Poettering on the subject,
> in response to some of the more recent arguments on the subject:
>
> http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
>
> Looking on my own system, examples of offending rules seem to be things
> like 78-sound-card.rules, which uses the *descriptions* associated with
> USB device IDs to classify whether a device is a headphone, microphone,
> speaker, etc. A bit hacky, perhaps (and that file admits as much), but I
> suppose it's the only way to deal with some hardware.
>
> As to why that's an issue at boot time, I *assume* that if the id files
> aren't present when the hardware is detected on boot, the device won't
> be correctly recognised. It won't break the boot, but it will cause
> problems when the user tries using their USB speakers or whatever.
>
> Simon.
>

FYI, I'm taking everything said in this thread at face value without 
really investigating it myself. I've been busy working on the DESTDIR 
LFS POC.

dj [ sources ]$ ls /etc/rcS.d/
S00mountkernfs  S03udev      S06swap     S09localnet    S12console
S01sysctl       S04fuse      S07checkfs  S10udev_retry
S02modules      S05setclock  S08mountfs  S11cleanfs

My setup above should be consistent with that of LFS's 
/etc/rc.d/rcsysinit,d. BTW, just noticed that the fuse devs got FHS 
broken too, that is their script, not mine.

Anyway, udev starts 4th in the startup scripts, it runs across a uevent 
that uses a rule found in /usr, and it fails to create the device node. 
The boot process continues, and the rest of the filesystems are mounted, 
udev-retry replays all of the failed uevents for a second time once all 
of the required files/programs are in place and the devices are detected 
and setup as if it were the first time around.

Once all uevents are handled, udevadm exits, and the boot process 
continues. With settle gone, there is no way to *wait* for all uevents 
to be processed. I would guess that 1 second wait would be way more time 
than necessary to wait for modern hardware, but how long do we spin for 
i486? Separate, but local /usr works as expected, now we are still 
broken WRT to a remote /usr.

dj [ sources ]$ ls /etc/rc3.d/
S00sysklogd  S02netfs  S04haldaemon  S06sshd   S08samba
S01network   S03dbus   S05cups       S07avahi  S09gpm

In this case, /usr would not be available until 5 scripts later. What 
happens to those failed uevents? I don't know the answer to that, I 
would imagine that 'udevadm trigger' could be used again but I don't 
know for certain. Keep in mind that those devices would never work when 
booted to runlevel 2, but runlevel 2 is a broken config anyway if you 
have /usr remote.

The upstream devs are certainly correct in saying that no /usr makes all 
of these problems go away, but I imagine these problems don't exist for 
the majority of users anyway. At any rate, I'd suggest that we make 
continue to make provisions for FHS for as long as we possibly can, and 
still remain compatible with major distros; or until a new major spec 
comes along that gives us a clear definition.

-- DJ Lucas

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page

Reply via email to