From: Greg KH <greg@kroah.com>
To: linux-hotplug@vger.kernel.org
Subject: Re: udev on Fedore 5
Date: Thu, 03 Aug 2006 08:39:06 +0000 [thread overview]
Message-ID: <20060803083906.GA29339@kroah.com> (raw)
In-Reply-To: <1154582086.8839.42.camel@piet2.bluelane.com>
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,
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
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CIDÞVDEV
_______________________________________________
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
prev parent reply other threads:[~2006-08-03 8:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-03 5:14 udev on Fedore 5 Piet Delaney
2006-08-03 8:39 ` Greg KH [this message]
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=20060803083906.GA29339@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).