]> Frank Brehm's Git Trees - config/uhu1/etc.git/commitdiff
saving uncommitted changes in /etc prior to emerge run
authorroot <root@uhu1.uhu-banane.de>
Sat, 28 Jan 2012 20:13:47 +0000 (21:13 +0100)
committerroot <root@uhu1.uhu-banane.de>
Sat, 28 Jan 2012 20:13:47 +0000 (21:13 +0100)
.etckeeper
conf.d/._cfg0000_udev [new file with mode: 0644]
init.d/._cfg0000_udev [new file with mode: 0755]
init.d/._cfg0000_udev-mount [new file with mode: 0755]
init.d/._cfg0000_udev-postmount [new file with mode: 0755]

index d8e610d136f572bdbeae423a053fa3248ddfbe0b..20a3eb1b56079d7a3e93fafcb209ab8afa00d40c 100755 (executable)
@@ -104,6 +104,7 @@ maybe chmod 0644 './clamd.conf'
 maybe chmod 0644 './colordiffrc'
 maybe chmod 0644 './colordiffrc-lightbg'
 maybe chmod 0755 './conf.d'
+maybe chmod 0644 './conf.d/._cfg0000_udev'
 maybe chmod 0644 './conf.d/apache2'
 maybe chmod 0644 './conf.d/auditd'
 maybe chmod 0644 './conf.d/bootmisc'
@@ -447,6 +448,9 @@ maybe chmod 0644 './idn.conf.sample'
 maybe chmod 0644 './idnalias.conf'
 maybe chmod 0644 './idnalias.conf.sample'
 maybe chmod 0755 './init.d'
+maybe chmod 0755 './init.d/._cfg0000_udev'
+maybe chmod 0755 './init.d/._cfg0000_udev-mount'
+maybe chmod 0755 './init.d/._cfg0000_udev-postmount'
 maybe chmod 0755 './init.d/apache2'
 maybe chmod 0755 './init.d/atd'
 maybe chmod 0755 './init.d/auditd'
diff --git a/conf.d/._cfg0000_udev b/conf.d/._cfg0000_udev
new file mode 100644 (file)
index 0000000..12c2afa
--- /dev/null
@@ -0,0 +1,52 @@
+# /etc/conf.d/udev: config file for udev
+
+# We discourage to disable persistent-net!!
+# this may lead to random interface naming
+
+# Disable adding new rules for persistent-net
+persistent_net_disable="no"
+
+# Disable adding new rules for persistent-cd
+# Disabling this will stop new cdrom devices to appear
+# as /dev/{cdrom,cdrw,dvd,dvdrw}
+persistent_cd_disable="no"
+
+# udev can trigger coldplug events which cause services to start and
+# kernel modules to be loaded.
+# Services are deferred to start in the boot runlevel.
+# Set rc_coldplug="NO" if you don't want this.
+# If you want module coldplugging but not coldplugging of services then you
+# can disable service coldplugging in baselayout/openrc config files.
+# The setting is named different in different versions.
+# in /etc/rc.conf: rc_hotplug="!*" or
+# in /etc/conf.d/rc: rc_plug_services="!*"
+#rc_coldplug="YES"
+
+
+
+
+# Expert options:
+
+# Timeout in seconds to wait for processing of uevents at boot.
+# There should be no need to change this.
+#udev_settle_timeout="60"
+
+# Add extra command line options to udevd, use with care
+# udevd --help for possible values
+#udev_opts=""
+
+# Run udevd --debug and write output to $RUNDIR/udev.log
+# Should not be kept on as it fills diskspace slowly
+#udev_debug="YES"
+
+# Run udevadmin monitor to get a log of all events
+# in $RUNDIR/udevmonitor.log
+#udev_monitor="YES"
+
+# Keep udevmonitor running after populating /dev.
+#udev_monitor_keep_running="no"
+
+# Set cmdline options for udevmonitor.
+# could be some of --env --kernel --udev
+#udev_monitor_opts="--env"
+
diff --git a/init.d/._cfg0000_udev b/init.d/._cfg0000_udev
new file mode 100755 (executable)
index 0000000..1912c8b
--- /dev/null
@@ -0,0 +1,275 @@
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command=/sbin/udevd
+command_args="--daemon ${udev_opts}"
+description="Run udevd and create the device-nodes"
+
+persistent_cd_disable="${persistent_cd_disable:-no}"
+persistent_net_disable="${persistent_net_disable:-no}"
+rc_coldplug=${rc_coldplug:-${RC_COLDPLUG:-YES}}
+udev_debug="${udev_debug:-no}"
+udev_monitor="${udev_monitor:-no}"
+udev_monitor_keep_running="${udev_monitor_keep_running:-no}"
+udev_settle_timeout="${udev_settle_timeout:-60}"
+kv_min="${kb_min:-2.6.32}"
+
+depend()
+{
+       provide dev
+       need sysfs udev-mount
+       before checkfs fsck
+
+       # udev does not work inside vservers
+       keyword -vserver -lxc
+}
+
+KV_to_int()
+{
+       [ -z $1 ] && return 1
+
+       local x=${1%%[!0-9.]*} y= z=
+       local KV_MAJOR=${x%%.*}
+       y=${x#*.}
+       [ "$x" = "$y" ] && y=0.0
+       local KV_MINOR=${y%%.*}
+       z=${y#*.}
+       [ "$y" = "$z" ] && z=0
+       local KV_MICRO=${z%%.*}
+       local KV_int=$((${KV_MAJOR} * 65536 + ${KV_MINOR} * 256 + ${KV_MICRO} ))
+
+       # We make version 2.2.0 the minimum version we will handle as
+       # a sanity check ... if its less, we fail ...
+       [ "${KV_int}" -lt 131584 ] && return 1
+       
+       echo "${KV_int}"
+}
+
+_RC_GET_KV_CACHE=""
+get_KV()
+{
+       if [ -z "${_RC_GET_KV_CACHE}" ] ; then
+               _RC_GET_KV_CACHE="$(uname -r)"
+       fi
+       echo "$(KV_to_int "${_RC_GET_KV_CACHE}")"
+       return $?
+}
+
+# FIXME
+# Instead of this script testing kernel version, udev itself should
+# Maybe something like udevd --test || exit $?
+check_kernel()
+{
+       if [ $(get_KV) -lt $(KV_to_int ${kv_min}) ]; then
+               eerror "Your kernel is too old to work with this version of udev."
+               eerror "Current udev only supports Linux kernel ${kv_min} and newer."
+               return 1
+       fi
+       return 0
+}
+
+get_rundir()
+{
+       echo $(udevadm info --run)
+}
+
+cleanup()
+{
+       # fail more gracely and not leave udevd running
+       start-stop-daemon --stop --exec /sbin/udevd
+       exit 1
+}
+
+rules_disable_switch()
+{
+       # this function disables rules files
+       # by creating new files with the same name
+       # in a temp rules directory with higher priority
+       local f=$(get_rundir)/rules.d/"$1" bname="$1" onoff="$2"
+
+       if yesno "${onoff}"; then
+               echo "# This file disables ${bname} due to /etc/conf.d/udev" \
+                       > "${f}"
+       else
+               rm -f "${f}"
+       fi
+}
+
+is_service_enabled()
+{
+       local svc="$1"
+
+       [ ! -e "/etc/init.d/${svc}" ] && return 1
+
+       [ -e "/etc/runlevels/${RC_BOOTLEVEL}/${svc}" ] && return 0
+       [ -e "/etc/runlevels/${RC_DEFAULTLEVEL}/${svc}" ] && return 0
+       return 1
+}
+
+start_pre()
+{
+       if [ -d /run ]; then
+               checkpath -d -m 0755 -o root:root -q /run/udev
+       fi
+
+       if is_service_enabled network; then
+               # disable network hotplugging
+               local f="$(get_rundir)/rules.d/90-network.rules"
+               echo "# This file disables network hotplug events calling" >> "${f}"
+               echo "# old-style openrc net scripts" >> "${f}"
+               echo "# as we use /etc/init.d/network to set up our network" >> "${f}"
+       fi
+
+       if [ ! -e /etc/runlevels/${RC_DEFAULTLEVEL:-default}/udev-postmount ]; then
+               ewarn "You should add udev-postmount service to your default runlevel."
+       fi
+
+       /lib/udev/write_root_link_rule
+
+       rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable}"
+       rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable}
+       
+       if [ -e /proc/sys/kernel/hotplug ]; then
+               echo "" >/proc/sys/kernel/hotplug
+       fi
+
+       # load unix domain sockets if built as module, Bug #221253
+       # and not yet loaded, Bug #363549
+       if [ ! -e /proc/net/unix ]; then
+               if ! modprobe unix; then
+                       eerror "Cannot load the unix domain socket module"
+               fi
+       fi
+
+       if yesno "${udev_debug}"; then
+               command_args="${command_args} --debug 2> $(get_rundir)/udev.log"
+       fi
+}
+
+start_udevmonitor()
+{
+       yesno "${udev_monitor}" || return 0
+
+       udevmonitor_log="$(get_rundir)/udevmonitor.log"
+       udevmonitor_pid="$(get_rundir)/udevmonitor.pid"
+
+       einfo "udev: Running udevadm monitor ${udev_monitor_opts} to log all events"
+       start-stop-daemon --start --stdout "${udevmonitor_log}" \
+               --make-pidfile --pidfile "${udevmonitor_pid}" \
+               --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
+}
+
+populate_dev()
+{
+       if get_bootparam "nocoldplug" ; then
+               rc_coldplug="NO"
+               ewarn "Skipping udev coldplug as requested in kernel cmdline"
+       fi
+
+       ebegin "Populating /dev with existing devices through uevents"
+       if ! yesno "${rc_coldplug}"; then
+               # Do not run any init-scripts, Bug #206518
+               udevadm control --property=do_not_run_plug_service=1
+       fi
+       udevadm trigger --type=subsystems --action=add
+       udevadm trigger --type=devices --action=add
+       eend $?
+
+       # we can speed up booting under these conditions:
+       #  * using devtmpfs so kernel creates device nodes for us
+       #  * only using kernel created device nodes at boot
+       # (in /etc/fstab and elsewhere)
+       #
+       ebegin "Waiting for uevents to be processed"
+       udevadm settle --timeout=${udev_settle_timeout}
+       eend $?
+
+       udevadm control --property=do_not_run_plug_service=
+       return 0
+}
+
+check_persistent_net()
+{
+       # check if there are problems with persistent-net
+       local syspath= devs= problem=false
+       for syspath in /sys/class/net/*_rename*; do
+               if [ -d "${syspath}" ]; then
+                       devs="${devs} ${syspath##*/}"
+                       problem=true
+               fi
+       done
+
+       ${problem} || return 0
+
+       eerror "UDEV: Your system has a problem assigning persistent names"
+       eerror "to these network interfaces: ${devs}"
+
+       einfo "Checking persistent-net rules:"
+       # the sed-expression lists all duplicate lines
+       # from the input, like "uniq -d" does, but uniq
+       # is installed into /usr/bin and not available at boot.
+       dups=$(
+       RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+       . /lib/udev/rule_generator.functions
+       find_all_rules 'NAME=' '.*' | \
+       tr ' ' '\n' | \
+       sort | \
+       sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
+       )
+       if [ -n "${dups}" ]; then
+               ewarn "The rules create multiple entries assigning these names:"
+               eindent
+               ewarn "${dups}"
+               eoutdent
+       else
+               ewarn "Found no duplicate names in persistent-net rules,"
+               ewarn "there must be some other problem!"
+       fi
+       return 1
+}
+
+check_udev_works()
+{
+       # should exist on every system, else udev failed
+       if [ ! -e /dev/zero ]; then
+               eerror "Assuming udev failed somewhere, as /dev/zero does not exist."
+               return 1
+       fi
+       return 0
+}
+
+stop_udevmonitor()
+{
+       yesno "${udev_monitor}" || return 0
+
+       if yesno "${udev_monitor_keep_running}"; then
+               ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
+       else
+               einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
+               start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
+       fi
+}
+
+display_hotplugged_services()
+{
+       local svcfile= svc= services=
+       for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
+               svc="${svcfile##*/}"
+               [ -x "${svcfile}" ] || continue
+
+               services="${services} ${svc}"
+       done
+       [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
+}
+
+start_post()
+{
+       start_udevmonitor
+       populate_dev
+       check_persistent_net
+       check_udev_works || cleanup
+       stop_udevmonitor
+       display_hotplugged_services
+       return 0
+}
diff --git a/init.d/._cfg0000_udev-mount b/init.d/._cfg0000_udev-mount
new file mode 100755 (executable)
index 0000000..62742bd
--- /dev/null
@@ -0,0 +1,70 @@
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="mount devtmpfs or tmpfs on /dev"
+
+depend()
+{
+       keyword -vserver -lxc
+}
+
+mount_dev_directory()
+{
+       if mountinfo -q /dev; then
+               einfo "/dev is already mounted"
+               return 0
+       fi
+
+       # No options are processed here as they should all be in /etc/fstab
+       ebegin "Mounting /dev"
+       if ! fstabinfo --mount /dev; then
+               # we mount devtmpfs if supported
+               local fs=tmpfs
+               grep -qs devtmpfs /proc/filesystems && fs=devtmpfs
+
+               # Some devices require exec, Bug #92921
+               mount -n -t "$fs" -o "exec,nosuid,mode=0755,size=10M" udev /dev
+       fi
+       eend $?
+}
+
+seed_dev()
+{
+       # Seed /dev with some things that we know we need
+
+       # creating /dev/console, /dev/tty and /dev/tty1 to be able to write
+       # to $CONSOLE with/without bootsplash before udevd creates it
+       [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1
+       [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1
+       [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0
+
+       # udevd will dup its stdin/stdout/stderr to /dev/null
+       # and we do not want a file which gets buffered in ram
+       [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
+       ${HAVE_SELINUX} && restorecon /dev/null
+
+       # so udev can add its start-message to dmesg
+       [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11
+
+       # Create problematic directories
+       mkdir -p /dev/pts /dev/shm
+       ${HAVE_SELINUX} && restorecon -R /dev >/dev/null
+       return 0
+}
+
+start()
+{
+       mount_dev_directory || return 1
+
+       # Selinux lovin; /selinux should be mounted by selinux-patched init
+       if [ -x /sbin/restorecon -a -c /selinux/null ]; then
+               HAVE_SELINUX=true
+               restorecon /dev > /selinux/null
+       else
+               HAVE_SELINUX=false
+       fi
+
+       seed_dev
+       return 0
+}
diff --git a/init.d/._cfg0000_udev-postmount b/init.d/._cfg0000_udev-postmount
new file mode 100755 (executable)
index 0000000..d689681
--- /dev/null
@@ -0,0 +1,66 @@
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+udev_version()
+{
+       echo $(udevadm --version)
+}
+
+depend()
+{
+       need localmount
+       if [ $(udev_version) -lt 175 ]; then
+               after dbus # for trigger failed
+       fi
+       keyword -vserver -lxc
+}
+
+dir_writeable()
+{
+        touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$
+}
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules()
+{
+       # only continue if rules-directory is writable
+       dir_writeable /etc/udev/rules.d || return 0
+
+       local file dest
+       for file in "${RUNDIR}"/tmp-rules--*; do
+               dest=${file##*tmp-rules--}
+               [ "$dest" = '*' ] && break
+               type=${dest##70-persistent-}
+               type=${type%%.rules}
+               ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+               cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+               eend $? "Failed moving persistent rules!"
+       done
+}
+
+start()
+{
+       RUNDIR=$(udevadm info --run)
+       # check if this system uses udev
+       [ -d "${RUNDIR}" ] || return 0
+
+       einfo "Doing udev cleanups"
+
+       if [ $(udev_version) -lt 175 ]; then
+               # Run the events that failed at first udev trigger
+               udevadm trigger --type=failed -v
+       fi
+
+       # store persistent-rules that got created while booting
+       # when / was still read-only
+       store_persistent_rules
+}
+
+stop()
+{
+       return 0
+}
+
+# vim:ts=4