I'm using my Sheeva to run wview, a great open source weather station package. It is run from an init.d script at boot time. Unfortunately, it fails to run at boot, though the script works fine and can be run manually. The problem is that wview needs time to be set accurately, because it keeps a database of weather station readings that is time based, and sync's the time with the station.
Because the Sheeva doesn't have a persistent RTC with battery backup, when it first powers on the time can be off by months. I run ntpd as part of the boot, but ntpd "should" be started when the time is already reasonable. It does sync eventually, but it takes too long. By then, wview has run and failed, even though it's the last thing in the boot sequence. Right now, I've got a fix kludged, which is to run ntpdate-debian in rc.local as suggested by
http://www.openplug.org/plugwiki/index.php/New_Plugger_How_To, and then to run wview AFTER rc.local. That works, but it doesn't seem right, because, by convention at least, rc.local should be the last thing to run at boot time before the login prompt. It works, but...
I think the correct fix is to run ntpdate (or ntpdate-debian?) as an independently sequenced init.d script, probably in rc0.d shortly after the network comes up. I'm surprised that I haven't seen any suggestion or discussion of this before. I know that init.d scripts usually start daemons, and in this case there is no daemon to start, but it does seem like the right place to do it. Maybe it hasn't been a general problem because, unless one is running wview, nothing else at boot time relies on an accurate time.
Am I missing something, or mis-analyzing the problem?
BTW, I'm running the default released ubuntu 2.6.22.18. Has anything changed in this regard in the new release candidates?