On Fri, Aug 5, 2011 at 12:12 AM, Matthew Burgess < matt...@linuxfromscratch.org> wrote:
> On 05/08/2011 03:41, Bryan Kadzban wrote: > > Matthew Burgess wrote: > >> But that raises the question of what that bootscript was trying to do > >> in the first place? So, it turns out that the actions specified by > >> 'RUN+=' udev rules can fail for any of a variety of reasons, and this > >> script was simply there to retry such failed actions in the hope that > >> something had (almost magically) changed since the rules were first > >> triggered. I say "almost magically" because there's no smarts in the > >> script at all, it just assumes that because it's being run later in > >> the boot sequence, enough things will have been started up/mounted > >> etc. to make the rules work again. > > > > Yes. It exists for two reasons: > > > > 1) To copy the temporary newly-created rules from wherever > > write_{cd,net}_rules put them, into /etc/udev/rules.d so they persist > > after the next reboot. The rule itself can't necessarily write them to > > /etc because the rootfs is readonly until mountfs. > > OK, that seems a valid thing for us to be doing. > > > 2) To rerun rules like the ALSA one (which runs alsactl, which is > > installed in /usr/sbin, and as of the most recent alsa-utils release, > > requires a /var/lib/alsa/asound.state file), which will fail if either > > /usr or /var is on a separate partition. > > Then the alsa bootscript just needs moving to come after the mountfs > script surely? What use case is there for needing to restore volume, > etc. *before* you've even managed to mount /usr? > Alsa volumes are restored when the device appears on the system via udev, not the bootscript anymore. (no S##alsa in rc*.d). and this does make sense for hotplugging devices. on my system, nothing calls /etc/rc.d/init.d/alsa start > > It looks like magic, but it's not; this script is simply numbered after > > mountfs. The only thing it really supports retrying (via trigger) is > > events that failed due to a missing filesystem. At one point that was > > even in the comments in the script, though I haven't looked at it in a > > while, so I don't know if it's still there. > > Well, as described above, that whole retry mechanism will be going away > in the not too distant future, so we'll need to think about how to avoid > such failures. > > > Their solution is to require an initramfs (SIGH), which mounts all > > filesystems before transferring control to /sbin/init on the rootfs. > > Yes, I've noticed their leanings toward such a configuration, and also > think its overkill, especially for LFS. > > > >> So, which of our rules may require such a retry attempt then? > > > > setclock (as you stated), alsactl from BLFS, and write_{cd,net}_rules > > are the ones I know of that require the udev_retry script. > > I need to take a look at the write_{cd,net}_rules ones, but I could have > sworn for the net ones, the book instructs folks to create 'static' > rules for their net devices before rebooting. Why would those need to > be retried? > > >> We can fix that up in a couple of ways though. Firstly, just ignore > >> the FHS, and leave adjtime in its default location of /etc. > >> Secondly, as Kay Sievers recommends in the thread above, never trust > >> the hwclock at all; if you need an accurate system time, use NTP. > > > > Sigh. I hate shortsightedness. > > > > You need *something* to start with. NTP is not a magic fix-everything. > > If the clock is too far off at boot time, NTP will fail to start up > > until the clock gets less far off at boot time. NTP will also utterly > > fail to save the clock across a reboot. > > Well, that last statement isn't quite true. NTP doesn't save the clock, > but the kernel most certainly can be told to enter '11-minute mode', > whereby it saves the system time to the hardware clock every 11 minutes. > Therefore even when there's a machine crash, the BIOS is much closer > to the proper time when it comes back up. I understand this is the > preferred mode of operation in enterprise environments, and would > certainly be my suggestion for folks needing accurate time. > > For the first couple of statements in that paragraph, the ntp script > really should be doing a one-shot 'ntpdate <time source>' *before* > starting the ntp daemon, and the ntp script should be run as soon as the > network is brought up so that the system time is set correctly a.s.a.p. > In my experience, that first ntpdate command will complete as quickly > as it takes to hit the desired NTP server, so in a reasonably configured > environment, shouldn't affect boot times much at all. > > > The ntpd package has a way to do a one-time sync of the system clock > > from the configured ntp servers, except that it takes *many* seconds to > > run; last time I did that in the ntpd bootscript, it doubled my boot > > time. What needs to happen is a simple, short "I know this isn't > > perfect but it's close enough that ntpd won't choke" synchronization of > > the system time to some other time source, and ntpd doesn't provide it. > > hwclock does, since the /dev/rtc clock was synced at shutdown. > > Like I said above, ntpdate can do that simple, short initial sync. And > again, as I said above, /dev/rtc may not have been synced at shutdown if > the machine crashed, so can not always be relied upon to provide an > accurate time. > > > This is true (the system time coming from the BIOS) with hwclock. > > That's what "hwclock --hctosys" reads from, after all. I do not believe > > it's true without it; last I knew, without hwclock, the system would > > start at time zero. (But it's been many years since I tried it.) > > Hmm, I'll give it a shot this evening, although heaven knows what might > be going on in the VM world I'm running LFS in - my VM may end up having > some smarts that picks the time up from the host...we'll see. > By default, it does not set the time. There is a optional kernel option (Introduced in the last 10-20 kernel releases, can't recall when), CONFIG_RTC_HCTOSYS that will set the system time to the hwclock time. Thanks, > > Matt. > -- > http://linuxfromscratch.org/mailman/listinfo/lfs-dev > FAQ: http://www.linuxfromscratch.org/faq/ > Unsubscribe: See the above information page > -- Nathan Coulson (conathan) ------ Location: British Columbia, Canada Timezone: PST (-8) Webpage: http://www.nathancoulson.com
-- http://linuxfromscratch.org/mailman/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page