From: Greg KH <greg@kroah.com>
To: linux-hotplug@vger.kernel.org
Subject: Re: udevstart v udevtrigger
Date: Thu, 13 Jul 2006 21:29:01 +0000 [thread overview]
Message-ID: <20060713212901.GC4218@kroah.com> (raw)
In-Reply-To: <200607131359.39003.rich@storix.com>
On Thu, Jul 13, 2006 at 01:59:37PM -0700, Rich Turner wrote:
> i am doing some testing with SLES10_GMC and have noticed that there is no
> longer a udevstart command. or i should say that SLES10 does not include the
> udevstart command. it looks for the most part that where udevstart used to be
> used udevtrigger is now being used.
>
> i now see from the changelog that udev and udevstart programs are no longer
> part of the base install.
>
> what is the difference between udevstart and udevtrigger?
Older kernels want to use udevstart, newer ones, with the uevent sysfs
file, can use udevtrigger, which is much simpler.
> if i have the udev command and i run udevtrigger would i expect the same
> results as running udevstart while having the udev command (assuming that
> udevd is not running)?
Why would you ever run these? Only the startup code needs to.
> is there any reason that i can not use the udevtrigger command everywhere i
> used to use udevstart? my thoughts are that i will create a link
> (udevstart->udevtrigger) if i have the udevtrigger command and not the
> udevstart command.
Yeah, it might work. For details on how to get this to work on a range
of kernel versions, you might want to look at the gentoo startup logic
for udev, which I've included below.
hope this helps,
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\a55
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
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid\x120709&bid&3057&dat\x121642
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
next prev parent reply other threads:[~2006-07-13 21:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-13 20:59 udevstart v udevtrigger Rich Turner
2006-07-13 21:29 ` Greg KH [this message]
2006-07-13 22:06 ` Rich Turner
2006-07-13 22:21 ` Greg KH
2006-07-13 23:59 ` Kay Sievers
2006-07-14 16:49 ` Rich Turner
2006-07-14 17:09 ` Andrey Borzenkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060713212901.GC4218@kroah.com \
--to=greg@kroah.com \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.