summaryrefslogtreecommitdiff
path: root/testing/udev
diff options
context:
space:
mode:
authorroot <root@rshg047.dnsready.net>2011-07-12 14:14:44 +0000
committerroot <root@rshg047.dnsready.net>2011-07-12 14:14:44 +0000
commitec9bd2e246eb94181a9254dcb2de7ddc191bb8cc (patch)
tree2f7af52e79332c2dc24b2c28ac3fceb0cbda7f10 /testing/udev
parente03f4b9bc9da3327de94bc58aa92ecb836c1580d (diff)
Tue Jul 12 14:14:44 UTC 2011
Diffstat (limited to 'testing/udev')
-rw-r--r--testing/udev/81-arch.rules71
-rw-r--r--testing/udev/PKGBUILD97
-rw-r--r--testing/udev/static-node-permission.patch26
-rw-r--r--testing/udev/udev.install70
4 files changed, 264 insertions, 0 deletions
diff --git a/testing/udev/81-arch.rules b/testing/udev/81-arch.rules
new file mode 100644
index 000000000..71f1a883b
--- /dev/null
+++ b/testing/udev/81-arch.rules
@@ -0,0 +1,71 @@
+# Udev rules for Archlinux by Tobias Powalowski <tpowa@archlinux.org>
+# do not edit this file, it will be overwritten on update
+#
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %k the kernel name for the device.
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute.
+# %% the '%' char itself.
+#
+# There are a number of modifiers that are allowed to be used in some of the
+# fields. See the udev man page for a full description of them.
+# global stuff
+#
+
+# permission for sg devices
+KERNEL=="sg[0-9]*", ATTRS{type}!="3|6", GROUP="disk", MODE="0660"
+
+# permissions for IDE CD devices
+SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", ATTRS{media}=="cdrom*", GROUP="optical"
+
+# permissions for SCSI CD devices
+SUBSYSTEMS=="scsi", KERNEL=="s[rg][0-9]*", ATTRS{type}=="5", GROUP="optical"
+
+# permissions for removable devices like cardreaders or sticks
+KERNEL=="sd*", ATTRS{scsi_level}=="3", ATTRS{type}=="0", GROUP="storage"
+
+# permissions for firewire external drives
+KERNEL=="sd*", ATTRS{scsi_level}=="5", GROUP="storage"
+
+# permissions for usb to scsi external adapters
+KERNEL=="sd*", ATTRS{scsi_level}=="3", ATTRS{type}=="7", GROUP="storage"
+
+# permissions for ide storage like pcmcia card readers
+ACTION!="add", GOTO="pcmcia_end"
+SUBSYSTEM!="block", GOTO="pcmcia_end"
+KERNEL=="hd*[!0-9]", IMPORT{program}="ata_id --export $tempnode"
+KERNEL=="hd*", IMPORT{parent}=="ID_*"
+KERNEL=="hd*", ENV{ID_TYPE}=="generic", GROUP="storage"
+LABEL="pcmcia_end"
+
+# permissions for SCSI scanners
+SUBSYSTEMS=="scsi", KERNEL=="sg[0-9]*", ATTRS{type}=="6", GROUP="scanner"
+
+# mem
+KERNEL=="ram0", SYMLINK+="ramdisk"
+KERNEL=="ram1", SYMLINK+="ram"
+
+# video4linux
+
+KERNEL=="vbi0", SYMLINK+="vbi"
+KERNEL=="radio0", SYMLINK+="radio"
+KERNEL=="radio[0-9]*", GROUP="video"
+KERNEL=="video0", SYMLINK+="video"
+KERNEL=="vtx0", SYMLINK+="vtx"
+
+# misc
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+
+# USB devices
+KERNEL=="legousbtower*", MODE="0666"
+#######################################
+# Permissions and Symlinks - end
+#######################################
diff --git a/testing/udev/PKGBUILD b/testing/udev/PKGBUILD
new file mode 100644
index 000000000..59b827015
--- /dev/null
+++ b/testing/udev/PKGBUILD
@@ -0,0 +1,97 @@
+# $Id: PKGBUILD 131208 2011-07-11 21:32:31Z tomegun $
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+# Maintainer: Tom Gundersen <teg@jklm.no>
+
+pkgbase="udev"
+pkgname=('udev' 'udev-compat')
+pkgver=172
+pkgrel=2
+arch=(i686 x86_64)
+url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
+license=('GPL')
+groups=('base')
+# older initscripts versions required start_udev
+options=(!makeflags !libtool)
+makedepends=('glibc' 'coreutils' 'util-linux' 'pciutils' 'libusb-compat' 'glib2' 'kernel26' 'gperf' 'libxslt' 'gobject-introspection')
+source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgbase-$pkgver.tar.bz2
+ static-node-permission.patch
+ 81-arch.rules)
+
+build() {
+ cd $srcdir/$pkgbase-$pkgver
+ # permissions on static /dev/fuse node (will be in udev-173)
+ patch -Np1 -i ../static-node-permission.patch
+ ./configure --sysconfdir=/etc --with-rootlibdir=/lib --libexecdir=/lib/udev\
+ --sbindir=/sbin --with-systemdsystemunitdir=/lib/systemd/system\
+ --disable-rule-generator
+ make
+}
+
+package_udev() {
+ pkgdesc="The userspace dev tools (udev)"
+ depends=('glibc' 'coreutils' 'util-linux' 'libusb-compat' 'glib2'
+ 'module-init-tools>=3.11' 'pciutils')
+ install=udev.install
+ backup=(etc/udev/udev.conf)
+ conflicts=('pcmcia-cs' 'hotplug' 'initscripts<2009.07')
+ replaces=('devfsd')
+
+ cd $srcdir/$pkgbase-$pkgver
+ make DESTDIR=${pkgdir} install
+ # Install our rule for permissions and symlinks
+ install -D -m644 $srcdir/81-arch.rules $pkgdir/lib/udev/rules.d/81-arch.rules
+
+ # create framebuffer blacklist
+ mkdir -p $pkgdir/lib/modprobe.d/
+ for mod in $(find /lib/modules/*/kernel/drivers/video -name '*fb.ko.gz' -exec basename {} .ko.gz \;); do
+ echo "blacklist $mod"
+ done | sort -u > $pkgdir/lib/modprobe.d/framebuffer_blacklist.conf
+
+ # these static devices are created for convenience, to autoload the modules if necessary
+ # /dev/loop0
+ mknod -m 0660 ${pkgdir}/lib/udev/devices/loop0 b 7 0
+ chgrp disk ${pkgdir}/lib/udev/devices/loop0
+
+ # Replace dialout/tape/cdrom group in rules with uucp/storage/optical group
+ for i in $pkgdir/lib/udev/rules.d/*.rules; do
+ sed -i -e 's#GROUP="dialout"#GROUP="uucp"#g;
+ s#GROUP="tape"#GROUP="storage"#g;
+ s#GROUP="cdrom"#GROUP="optical"#g' $i
+ done
+}
+
+package_udev-compat() {
+ pkgdesc="The userspace dev tools (udev) - additional rules for older kernels"
+ depends=('udev')
+ groups=('')
+ cd $srcdir/$pkgbase-$pkgver
+ install -d -m755 ${pkgdir}/lib/${pkgbase}/rules.d
+ install -D -m644 ${srcdir}/${pkgbase}-${pkgver}/rules/misc/30-kernel-compat.rules ${pkgdir}/lib/udev/rules.d/30-kernel-compat.rules
+ # create static devices in /lib/udev/devices/
+ mkdir -p ${pkgdir}/lib/udev/devices/{pts,shm}
+
+ mknod -m 0600 ${pkgdir}/lib/udev/devices/console c 5 1
+ mknod -m 0666 ${pkgdir}/lib/udev/devices/null c 1 3
+ mknod -m 0660 ${pkgdir}/lib/udev/devices/zero c 1 5
+ mknod -m 0666 ${pkgdir}/lib/udev/devices/kmsg c 1 11
+
+ ln -snf /proc/self/fd ${pkgdir}/lib/udev/devices/fd
+ ln -snf /proc/self/fd/0 ${pkgdir}/lib/udev/devices/stdin
+ ln -snf /proc/self/fd/1 ${pkgdir}/lib/udev/devices/stdout
+ ln -snf /proc/self/fd/2 ${pkgdir}/lib/udev/devices/stderr
+ ln -snf /proc/kcore ${pkgdir}/lib/udev/devices/core
+
+ # these static devices are created for convenience, to autoload the modules if necessary
+ # /dev/net/tun
+ mkdir ${pkgdir}/lib/udev/devices/net
+ mknod -m 0666 ${pkgdir}/lib/udev/devices/net/tun c 10 200
+ # /dev/fuse
+ mknod -m 0666 ${pkgdir}/lib/udev/devices/fuse c 10 229
+ # /dev/ppp
+ mknod -m 0600 ${pkgdir}/lib/udev/devices/ppp c 108 0
+}
+md5sums=('bd122d04cf758441f498aad0169a454f'
+ '07e5b965d7e90988ea2f7ffb19a08ef7'
+ 'ec529eb1ddaabb70c61b38f80bb8462a')
diff --git a/testing/udev/static-node-permission.patch b/testing/udev/static-node-permission.patch
new file mode 100644
index 000000000..3d9a8722c
--- /dev/null
+++ b/testing/udev/static-node-permission.patch
@@ -0,0 +1,26 @@
+From 36acdbcc776822624103eff7c80a9468317918ac Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay.sievers@vrfy.org>
+Date: Mon, 11 Jul 2011 22:56:37 +0200
+Subject: [PATCH] udevd: fix (recently) broken static node permission setting
+
+Many thanks to Tom Gundersen for identifying the issue.
+---
+ udev/udev-rules.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/udev/udev-rules.c b/udev/udev-rules.c
+index d16c1f9..7db0767 100644
+--- a/udev/udev-rules.c
++++ b/udev/udev-rules.c
+@@ -2721,7 +2721,7 @@ void udev_rules_apply_static_dev_perms(struct udev_rules *rules)
+ struct stat stats;
+
+ /* we assure, that the permissions tokens are sorted before the static token */
+- if (uid == 0 && gid == 0)
++ if (mode == 0 && uid == 0 && gid == 0)
+ goto next;
+ util_strscpyl(filename, sizeof(filename), udev_get_dev_path(rules->udev), "/",
+ &rules->buf[cur->key.value_off], NULL);
+--
+1.7.6
+
diff --git a/testing/udev/udev.install b/testing/udev/udev.install
new file mode 100644
index 000000000..c3970fedd
--- /dev/null
+++ b/testing/udev/udev.install
@@ -0,0 +1,70 @@
+# arg 1: the new package version
+# arg 2: the old package version
+
+post_upgrade() {
+ if [ "$(vercmp $2 172)" -lt 0 ]; then
+ echo "ATTENTION UDEV:"
+ echo "----------"
+ if [ "$(vercmp $2 168)" -lt 0 ]; then
+ echo "Kernel 2.6.32 or newer is now required."
+ echo " --"
+ echo "OSS emulation modules are not loaded by default, add to rc.conf if needed."
+ echo " --"
+ echo "Arch specific cd symlinks are now no longer created."
+ echo " --"
+ echo "cd and net persistent rules will no longer be autogenerated,"
+ echo "see <https://wiki.archlinux.org/index.php/Udev> for details."
+ echo " --"
+ echo "Errors are now logged (possibly to the console) by default."
+ echo " --"
+ fi
+ if [ "$(vercmp $2 171)" -lt 0 ]; then
+ echo "Arch's custom blacklisting logic has been removed. MOD_AUTOLOAD and"
+ echo "blacklisting in MODULES no longer works."
+ echo "See 'man modprobe.conf' for a replacement to blacklisting."
+ echo "To disable a module mod1 on the kernel command line, use"
+ echo "mod1.disable=1"
+ echo "or"
+ echo "modprobe.blacklist=mod1"
+ echo " --"
+ echo "The following modules are no longer unconditionally loaded:"
+ echo " pcspkr irtty-sir analog lp ppdev ide-generic"
+ echo "Add them to MODULES in rc.conf if you need them."
+ echo " --"
+ fi
+ echo "Support for non-devtmpfs self-compiled kernels have been moved to udev-compat."
+ echo " --"
+ echo "Blacklisting of framebuffer devices has moved from /etc/modprobe.d to /lib/modprobe.d"
+ echo "Any customizations shoud be done to the file in /etc, as it takes precedence."
+ echo " --"
+ echo "kbd and rtc devices are no longer world readable."
+ echo " --"
+ echo "rtc is no longer in the audio group and fb devices are no longer in the video group"
+ echo "(permissions and ownership of fb devices are controlled by X)."
+ echo "---------------"
+ fi
+}
+
+post_install() {
+ # If a ramfs is mounted, we still need to make sure that /dev/{console,null,zero} exist
+ # The Archlinux installer bind-mounts /dev to /mnt/dev, thus making the real /dev invisible
+ ROOTDIR=""
+ [ "$(stat -c %D /)" != "$(stat -c %D /dev)" ] && ROOTDIR=$(mktemp -d /tmp/udevinstall.XXXXXX)
+ [ -n "${ROOTDIR}" ] && mount --bind / ${ROOTDIR}
+ if [ ! -c ${ROOTDIR}/dev/console ]; then
+ rm -f ${ROOTDIR}/dev/console
+ mknod -m600 ${ROOTDIR}/dev/console c 5 1
+ fi
+ if [ ! -c ${ROOTDIR}/dev/null ]; then
+ rm -f ${ROOTDIR}/dev/null
+ mknod -m644 ${ROOTDIR}/dev/null c 1 3
+ fi
+ if [ ! -c ${ROOTDIR}/dev/zero ]; then
+ rm -f ${ROOTDIR}/dev/zero
+ mknod -m644 ${ROOTDIR}/dev/zero c 1 5
+ fi
+ if [ -n "${ROOTDIR}" ]; then
+ umount ${ROOTDIR}
+ rmdir ${ROOTDIR}
+ fi
+}