On Thu, 2006-08-03 at 01:39 -0700, Greg KH wrote:
> On Wed, Aug 02, 2006 at 10:14:46PM -0700, Piet Delaney wrote:
> > I wasn't able to login to your Fedora 5 (10.10.111.220).
> > I tried my AMD hammer at home (hammer.piet.net) and looked
> > at the Fedora 5 udev scripts. I can't see what the gento 
> > /sbin/start_udev might be doing to boost Performance so much
> > and didn't see the udev daemon stuff we saw on your system.
> > Perhaps it's probing the modules to pre-awaken them. I'm not
> > using modules, so I doubt it would have an effect.
> 
> The gentoo script for startup is attached below.  It picks it's startup
> logic depending on the kernel version running.
> 
> Hope this helps,

I messed with the gentoo script today, adding missing gentoo functions
and all.  udev 096 doesn't install sbin/udev so even with a new 
version of the udev distribution installed the script doesn't know. 

If you install 096's udev to sbin the gentoo script still gets confused
with 2.6.13 kernels. It tries to use the non-existing udevstart 
and udevsend cmds which don't exist; or tries to use old 030 versions!

The RELEASE-NOTES only say udev is no longer installed to
avoid looping (which I experienced) with old kernels and that
the man page is out of date.

I'm starting to lean towards just waiting till we have Linux From
Scratch (LFS) 6.2 working and then switching to the new event mechanism.
It's about to be released and supported the new 2.6.16 kernel and the
new udev-096. Perhaps I can extract 6.2 udev scripts part of
6.2 without too much work and supports pre 2.6.16 kernels; I suspect
not.

I get the impression that the udev code and associated scripts haven't
been designed for backward compatibility. Perhaps I'm wrong, I only
spent a day or two on it, but that's my initial impesssion. I get the
impression from the news groups that better clarity in the environment
would be greatly appreciated my many.

-piet

> 
> greg k-h
> 
> ------------------
> # Copyright 1999-2005 Gentoo Foundation
> # Distributed under the terms of the GNU General Public License v2
> 
> udev_version() {
>       local version=0
> 
>       if [[ -x /sbin/udev ]] ; then
>               version=$(/sbin/udev -V)
>               # We need it without a leading '0', else bash do the wrong thing
>               version=${version##0}
>               # Older udev's will print nothing
>               [[ -z ${version} ]] && version=0
>       fi
> 
>       echo "${version}"
> }
> 
> # This works for 2.6.15 kernels or greater
> trigger_events() {
>       list=""
>       # if you want real coldplug (with all modules being loaded for all
>       # devices in the system), uncomment out the next line.
>       #list="$list $(echo /sys/bus/*/devices/*/uevent)"
>       list="$list $(echo /sys/class/*/*/uevent)"
>       list="$list $(echo /sys/block/*/uevent /sys/block/*/*/uevent)"
>       for i in $list; do
>               case "$i" in
>                       */device/uevent)
>                               # skip followed device symlinks
>                               continue
>                               ;;
>                       */class/mem/*|*/class/tty/*)
>                               first="$first $i"
>                               ;;
>                       */block/md*)
>                               last="$last $i"
>                               ;;
>                       */*)
>                               default="$default $i"
>                               ;;
>               esac
>       done
> 
>       # trigger the sorted events
>       for i in $first $default $last; do
>               echo "add" > "$i"
>       done
> }
> 
> populate_udev() {
>       # populate /dev with devices already found by the kernel
>       if [ "$(get_KV)" -gt "$(KV_to_int '2.6.14')" ] ; then
>               ebegin "Populating /dev with existing devices through uevents"
>               udevtrigger
>               eend 0
>       else
>               ebegin "Populating /dev with existing devices with udevstart"
>               /sbin/udevstart
>               eend 0
>       fi
> 
>       # loop until everything is finished
>       # there's gotta be a better way...
>       ebegin "Letting udev process events"
>       loop=0
>       while test -d /dev/.udev/queue; do
>               sleep 0.1;
>               test "$loop" -gt 300 && break
>               loop=$(($loop + 1))
>       done
>       #einfo "loop = $loop"
>       eend 0
> 
>       return 0
> }
> 
> seed_dev() {
>       # Seed /dev with some things that we know we need
>       ebegin "Seeding /dev with needed nodes"
> 
>       # copy over any persistant things
>       if [[ -d /lib/udev/devices ]] ; then
>               cp --preserve=all --recursive --update /lib/udev/devices/* /dev
>       fi
> 
>       # Not provided by sysfs but needed
>       ln -snf /proc/self/fd /dev/fd
>       ln -snf fd/0 /dev/stdin
>       ln -snf fd/1 /dev/stdout
>       ln -snf fd/2 /dev/stderr
>       [[ -e /proc/kcore ]] && ln -snf /proc/kcore /dev/core
> 
>       # Create problematic directories
>       mkdir -p /dev/{pts,shm}
>       eend 0
> }
> 
> 
> main() {
>       # Setup temporary storage for /dev
>       ebegin "Mounting /dev for udev"
>       if [[ ${RC_USE_FSTAB} == "yes" ]] ; then
>               mntcmd=$(get_mount_fstab /dev)
>       else
>               unset mntcmd
>       fi
>       if [[ -n ${mntcmd} ]] ; then
>               try mount -n ${mntcmd}
>       else
>               if egrep -qs tmpfs /proc/filesystems ; then
>                       mntcmd="tmpfs"
>               else
>                       mntcmd="ramfs"
>               fi
>               # many video drivers require exec access in /dev #92921
>               try mount -n -t ${mntcmd} udev /dev -o exec,nosuid,mode=0755
>       fi
>       eend $?
> 
>       # Create a file so that our rc system knows it's still in sysinit.
>       # Existance means init scripts will not directly run.
>       # rc will remove the file when done with sysinit.
>       touch /dev/.rcsysinit
> 
>       # Selinux lovin; /selinux should be mounted by selinux-patched init
>       if [[ -x /sbin/restorecon && -c /selinux/null ]] ; then
>               restorecon /dev &> /selinux/null
>       fi
> 
>       # Actually get udev rolling
>       if [[ ${RC_DEVICE_TARBALL} == "yes" && \
>             -s /lib/udev-state/devices.tar.bz2 ]] ; then
>               ebegin "Populating /dev with saved device nodes"
>               try tar -jxpf /lib/udev-state/devices.tar.bz2 -C /dev
>               eend $?
>       fi
> 
>       seed_dev
> 
>       # Setup hotplugging (if possible)
>       ebegin "Setting up proper hotplug agent"
>       if [[ -e /proc/sys/kernel/hotplug ]] ; then
>               if [ "$(get_KV)" -gt "$(KV_to_int '2.6.14')" ] ; then
>                       einfo "  Using netlink for hotplug events..."
>                       echo "" > /proc/sys/kernel/hotplug
>               elif [[ $(udev_version) -ge "48" ]] ; then
>                       einfo "  Setting /sbin/udevsend as hotplug agent ..."
>                       echo "/sbin/udevsend" > /proc/sys/kernel/hotplug
>               elif [[ -x /sbin/hotplug ]] ; then
>                       einfo "  Using /sbin/hotplug as hotplug agent ..."
>               else
>                       einfo "  Setting /sbin/udev as hotplug agent ..."
>                       echo "/sbin/udev" > /proc/sys/kernel/hotplug
>               fi
>       fi
>       eend 0
> 
>       ebegin "Starting udevd"
>       /sbin/udevd --daemon
>       eend $?
> 
>       populate_udev
> 
>       # Create nodes that udev can't
>       ebegin "Finalizing udev configuration"
>       [[ -x /sbin/dmsetup ]] && /sbin/dmsetup mknodes &>/dev/null
>       [[ -x /sbin/lvm ]] && \
>               /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null
>       # Running evms_activate on a LiveCD causes lots of headaches
>       [[ -z ${CDBOOT} ]] && [[ -x /sbin/evms_activate ]] && \
>               /sbin/evms_activate -q &>/dev/null
>       eend 0
> }
> 
> main
> 
> 
> # vim:ts=4
-- 
Piet Delaney
BlueLane Teck
W: (408) 200-5256; [EMAIL PROTECTED]
H: (408) 243-8872; [EMAIL PROTECTED]


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

Reply via email to