[arch-commits] Commit in udev/repos (7 files)

Dave Reisner dreisner at archlinux.org
Sat Jan 21 00:32:07 UTC 2012


    Date: Friday, January 20, 2012 @ 19:32:06
  Author: dreisner
Revision: 147038

db-move: moved udev from [testing] to [core] (x86_64)

Added:
  udev/repos/core-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch
    (from rev 147033, udev/repos/testing-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch)
  udev/repos/core-x86_64/PKGBUILD
    (from rev 147033, udev/repos/testing-x86_64/PKGBUILD)
  udev/repos/core-x86_64/udev.install
    (from rev 147033, udev/repos/testing-x86_64/udev.install)
Deleted:
  udev/repos/core-x86_64/81-arch.rules
  udev/repos/core-x86_64/PKGBUILD
  udev/repos/core-x86_64/udev.install
  udev/repos/testing-x86_64/

----------------------------------------------------------------+
 0001-udevd-kill-hanging-event-processes-after-30-seconds.patch |  162 +++++++
 81-arch.rules                                                  |    9 
 PKGBUILD                                                       |  208 +++++-----
 udev.install                                                   |  127 +++---
 4 files changed, 334 insertions(+), 172 deletions(-)

Copied: udev/repos/core-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch (from rev 147033, udev/repos/testing-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch)
===================================================================
--- core-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch	                        (rev 0)
+++ core-x86_64/0001-udevd-kill-hanging-event-processes-after-30-seconds.patch	2012-01-21 00:32:06 UTC (rev 147038)
@@ -0,0 +1,162 @@
+From e64fae5573e566ce4fd9b23c68ac8f3096603314 Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay.sievers at vrfy.org>
+Date: Wed, 18 Jan 2012 05:06:18 +0100
+Subject: [PATCH] udevd: kill hanging event processes after 30 seconds
+
+Some broken kernel drivers load firmware synchronously in the module init
+path and block modprobe until the firmware request is fulfilled.
+
+The modprobe-generated firmware request is a direct child device of the
+device which caused modprobe to run. Child device event are blocked until
+the parent device is handled. This dead-locks until the kernel firmware
+loading timeout of 60 seconds is reached.
+
+The hanging modprobe event should now time-out and allow the firmware
+event to run before the 60 second kernel timeout.
+---
+ src/udev-event.c |    2 +-
+ src/udevd.c      |   62 +++++++++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 51 insertions(+), 13 deletions(-)
+
+diff --git a/src/udev-event.c b/src/udev-event.c
+index 9bdc518..f0b9548 100644
+--- a/src/udev-event.c
++++ b/src/udev-event.c
+@@ -49,7 +49,7 @@ struct udev_event *udev_event_new(struct udev_device *dev)
+         udev_list_init(udev, &event->run_list, false);
+         event->fd_signal = -1;
+         event->birth_usec = now_usec();
+-        event->timeout_usec = 60 * 1000 * 1000;
++        event->timeout_usec = 30 * 1000 * 1000;
+         dbg(event->udev, "allocated event %p\n", event);
+         return event;
+ }
+diff --git a/src/udevd.c b/src/udevd.c
+index 11ab19a..77a1e79 100644
+--- a/src/udevd.c
++++ b/src/udevd.c
+@@ -133,6 +133,7 @@ struct worker {
+         struct udev_monitor *monitor;
+         enum worker_state state;
+         struct event *event;
++        unsigned long long event_start_usec;
+ };
+ 
+ /* passed from worker to main process */
+@@ -372,6 +373,7 @@ out:
+                 close(fd_inotify);
+                 close(worker_watch[WRITE_END]);
+                 udev_rules_unref(rules);
++                udev_builtin_exit(udev);
+                 udev_monitor_unref(worker_monitor);
+                 udev_unref(udev);
+                 udev_log_close();
+@@ -389,6 +391,7 @@ out:
+                 worker->monitor = worker_monitor;
+                 worker->pid = pid;
+                 worker->state = WORKER_RUNNING;
++                worker->event_start_usec = now_usec();
+                 worker->event = event;
+                 event->state = EVENT_RUNNING;
+                 udev_list_node_append(&worker->node, &worker_list);
+@@ -419,6 +422,7 @@ static void event_run(struct event *event)
+                 worker_ref(worker);
+                 worker->event = event;
+                 worker->state = WORKER_RUNNING;
++                worker->event_start_usec = now_usec();
+                 event->state = EVENT_RUNNING;
+                 return;
+         }
+@@ -610,9 +614,11 @@ static void worker_returned(int fd_worker)
+                                 continue;
+ 
+                         /* worker returned */
+-                        worker->event->exitcode = msg.exitcode;
+-                        event_queue_delete(worker->event, true);
+-                        worker->event = NULL;
++                        if (worker->event) {
++                                worker->event->exitcode = msg.exitcode;
++                                event_queue_delete(worker->event, true);
++                                worker->event = NULL;
++                        }
+                         if (worker->state != WORKER_KILLED)
+                                 worker->state = WORKER_IDLE;
+                         worker_unref(worker);
+@@ -796,7 +802,7 @@ static void handle_signal(struct udev *udev, int signo)
+                                 }
+ 
+                                 if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
+-                                        if (worker->event != NULL) {
++                                        if (worker->event) {
+                                                 err(udev, "worker [%u] failed while handling '%s'\n",
+                                                     pid, worker->event->devpath);
+                                                 worker->event->exitcode = -32;
+@@ -1574,25 +1580,57 @@ int main(int argc, char *argv[])
+                                 break;
+ 
+                         /* timeout at exit for workers to finish */
+-                        timeout = 60 * 1000;
+-                } else if (udev_list_node_is_empty(&event_list) && children > 2) {
+-                        /* set timeout to kill idle workers */
+-                        timeout = 3 * 1000;
+-                } else {
++                        timeout = 30 * 1000;
++                } else if (udev_list_node_is_empty(&event_list) && children <= 2) {
++                        /* we are idle */
+                         timeout = -1;
++                } else {
++                        /* kill idle or hanging workers */
++                        timeout = 3 * 1000;
+                 }
+                 fdcount = epoll_wait(fd_ep, ev, ARRAY_SIZE(ev), timeout);
+                 if (fdcount < 0)
+                         continue;
+ 
+                 if (fdcount == 0) {
++                        struct udev_list_node *loop;
++
++                        /* timeout */
+                         if (udev_exit) {
+-                                info(udev, "timeout, giving up waiting for workers to finish\n");
++                                err(udev, "timeout, giving up waiting for workers to finish\n");
+                                 break;
+                         }
+ 
+-                        /* timeout - kill idle workers */
+-                        worker_kill(udev, 2);
++                        /* kill idle workers */
++                        if (udev_list_node_is_empty(&event_list)) {
++                                info(udev, "cleanup idle workers\n");
++                                worker_kill(udev, 2);
++                        }
++
++                        /* check for hanging events */
++                        udev_list_node_foreach(loop, &worker_list) {
++                                struct worker *worker = node_to_worker(loop);
++
++                                if (worker->state != WORKER_RUNNING)
++                                        continue;
++
++                                if ((now_usec() - worker->event_start_usec) > 30 * 1000 * 1000) {
++                                        err(udev, "worker [%u] timeout, kill it\n", worker->pid,
++                                            worker->event ? worker->event->devpath : "<idle>");
++                                        kill(worker->pid, SIGKILL);
++                                        worker->state = WORKER_KILLED;
++                                        /* drop reference taken for state 'running' */
++                                        worker_unref(worker);
++                                        if (worker->event) {
++                                                err(udev, "seq %llu '%s' killed\n",
++                                                    udev_device_get_seqnum(worker->event->dev), worker->event->devpath);
++                                                worker->event->exitcode = -64;
++                                                event_queue_delete(worker->event, true);
++                                                worker->event = NULL;
++                                        }
++                                }
++                        }
++
+                 }
+ 
+                 is_worker = is_signal = is_inotify = is_netlink = is_ctrl = false;
+-- 
+1.7.8.3
+

Deleted: core-x86_64/81-arch.rules
===================================================================
--- core-x86_64/81-arch.rules	2012-01-21 00:32:04 UTC (rev 147037)
+++ core-x86_64/81-arch.rules	2012-01-21 00:32:06 UTC (rev 147038)
@@ -1,9 +0,0 @@
-# do not edit this file, it will be overwritten on update
-# this file is going away in the near future
-
-# this might belong in <http://aur.archlinux.org/packages.php?ID=22698>
-# see also /usr/src/*/Documentation/laptops/sonypi.txt
-KERNEL=="sonypi",	MODE="0666"
-
-# this might belong in <https://aur.archlinux.org/packages.php?ID=18393>
-KERNEL=="legousbtower*", MODE="0666"

Deleted: core-x86_64/PKGBUILD
===================================================================
--- core-x86_64/PKGBUILD	2012-01-21 00:32:04 UTC (rev 147037)
+++ core-x86_64/PKGBUILD	2012-01-21 00:32:06 UTC (rev 147038)
@@ -1,101 +0,0 @@
-# $Id$
-# Maintainer: Tom Gundersen <teg at jklm.no>
-# Contributor: Aaron Griffin <aaron at archlinux.org>
-# Contributor: Tobias Powalowski <tpowa at archlinux.org>
-# Contributor: Thomas Bächler <thomas at archlinux.org>
-
-pkgbase="udev"
-pkgname=('udev' 'udev-compat')
-pkgver=175
-pkgrel=1
-arch=(i686 x86_64)
-url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
-license=('GPL')
-groups=('base')
-options=(!makeflags !libtool)
-makedepends=('gobject-introspection' 'gperf')
-#source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgbase-$pkgver.tar.bz2
-source=(http://people.freedesktop.org/~kay/udev/$pkgbase-$pkgver.tar.bz2
-        81-arch.rules)
-
-build() {
-  cd $srcdir/$pkgbase-$pkgver
-
-  ./configure --sysconfdir=/etc\
-              --with-rootlibdir=/lib\
-              --libexecdir=/lib/udev\
-              --sbindir=/sbin\
-              --with-systemdsystemunitdir=/lib/systemd/system\
-              --disable-rule-generator\
-              --enable-udev_acl
-
-  make
-}
-  
-package_udev() {
-  pkgdesc="The userspace dev tools (udev)"
-  depends=('util-linux' 'libusb-compat' 'glib2' 'module-init-tools' '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
-
-  # /dev/loop0 is created for convenience, to autoload the module if necessary
-  # may be obsoleted by https://lkml.org/lkml/2011/7/30/111
-  mknod -m 0660 ${pkgdir}/lib/udev/devices/loop0 b 7 0
-  chgrp disk ${pkgdir}/lib/udev/devices/loop0
-
-  # udevd moved, symlink to make life easy for restarting udevd manually
-  ln -s /lib/udev/udevd ${pkgdir}/sbin/udevd
-
-  # 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=('2fc9c1efcbde98e3d73ffee7a77aea47'
-         '3da2bb9891592f9438a07bd641465531')

Copied: udev/repos/core-x86_64/PKGBUILD (from rev 147033, udev/repos/testing-x86_64/PKGBUILD)
===================================================================
--- core-x86_64/PKGBUILD	                        (rev 0)
+++ core-x86_64/PKGBUILD	2012-01-21 00:32:06 UTC (rev 147038)
@@ -0,0 +1,107 @@
+# $Id$
+# Maintainer: Tom Gundersen <teg at jklm.no>
+# Contributor: Aaron Griffin <aaron at archlinux.org>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+# Contributor: Thomas Bächler <thomas at archlinux.org>
+
+pkgbase="udev"
+pkgname=('udev' 'udev-compat')
+pkgver=177
+pkgrel=3
+arch=(i686 x86_64)
+url="http://git.kernel.org/?p=linux/hotplug/udev.git;a=summary"
+license=('GPL')
+groups=('base')
+options=(!makeflags !libtool)
+makedepends=('gobject-introspection' 'gperf' 'libxslt' 'usbutils' 'kmod')
+source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgbase-$pkgver.tar.xz
+	0001-udevd-kill-hanging-event-processes-after-30-seconds.patch)
+
+build() {
+  cd $srcdir/$pkgbase-$pkgver
+
+  # deal with broken drivers waiting for firmware to be loaded
+  patch -p1 -i ../0001-udevd-kill-hanging-event-processes-after-30-seconds.patch
+
+  ./configure --prefix=/usr \
+              --with-rootprefix= \
+              --sysconfdir=/etc \
+              --bindir=/sbin \
+              --libdir=/usr/lib \
+              --with-rootlibdir=/lib \
+              --libexecdir=/lib \
+              --with-systemdsystemunitdir=/lib/systemd/system \
+              --enable-udev_acl
+
+  make
+}
+  
+package_udev() {
+  pkgdesc="The userspace dev tools (udev)"
+  depends=('util-linux' 'libusb-compat' 'glib2' 'kmod' 'pciutils' 'usbutils' 'pciutils')
+  install=udev.install
+  backup=(etc/udev/udev.conf)
+
+  cd $srcdir/$pkgbase-$pkgver
+  make DESTDIR=${pkgdir} install
+
+  # create framebuffer blacklist
+  install -d -m755 ${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
+
+  # /dev/loop0 is created for convenience, to autoload the module if necessary
+  # this is no longer needed when util-linux-2.21 is released as /dev/loop-control
+  # will be used instead. In that case move this to udev-compat
+  install -d -m755 ${pkgdir}/lib/udev/devices/
+  mknod ${pkgdir}/lib/udev/devices/loop0 b 7 0
+  chgrp disk ${pkgdir}/lib/udev/devices/loop0
+ 
+  # udevd moved, symlink to make life easy for restarting udevd manually
+  ln -s /lib/udev/udevd ${pkgdir}/sbin/udevd
+
+  # 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=('')
+  install -d -m755 ${pkgdir}/lib/udev/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 nodes to be compatible with on-demand module
+  # loading in the most recent kernel
+  #
+  # the list of nodes is generated from /lib/modules/`most recent kernel`/modprobe.devname
+  # excluding any devices not included in the LTS kernel and any entries in the
+  # modprobe.devname file of the LTS kernel (if it exists).
+
+  install -d -m755 ${pkgdir}/lib/udev/devices
+  cd ${pkgdir}/lib/udev/devices
+
+  install -d -m755 net
+  mknod net/tun c 10 200
+  mknod ppp c 108 0
+#  mknod loop-control c 10 237 -- does not exist in old kernels
+  mknod uinput c 10 223
+  install -d -m755 mapper
+  mknod mapper/control c 10 236
+  install -d -m755 snd
+  mknod snd/timer c 116 33
+  mknod snd/seq c 116 1
+  mknod btrfs-control c 10 234
+  mknod autofs c 10 235
+  mknod fuse c 10 229
+  install -d -m755 cpu
+  mknod cpu/microcode c 10 184
+  
+}
+md5sums=('b4e00faf8153fd7202a7ef609284b0c3'
+         '3e40dca1c4f8194b4633e3befb4da4d4')

Deleted: core-x86_64/udev.install
===================================================================
--- core-x86_64/udev.install	2012-01-21 00:32:04 UTC (rev 147037)
+++ core-x86_64/udev.install	2012-01-21 00:32:06 UTC (rev 147038)
@@ -1,62 +0,0 @@
-# arg 1:  the new package version
-# arg 2:  the old package version
-
-post_upgrade() {
-  if [ "$(vercmp $2 174)" -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
-    if [ "$(vercmp $2 172)" -lt 0 ]; then
-      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"
-      echo "/lib/modprobe.d. Any customizations shoud be done to the file in /etc, as it"
-      echo "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"
-      echo "the video group, as permissions and ownership of fb devices are controlled"
-      echo "by X."
-      echo "  --"
-    fi
-    echo "We now use upstream rules for assigning devices to the 'disk', 'optical',"
-    echo "'scanner' and 'video' groups. Beware of any changes."
-    echo "  --"
-    echo "We no longer create symlinks from /dev/<dev> to /dev/<dev>0."
-    echo "  --"
-    echo "For security reasons, we no longer add devices to the 'storage' group. Use"
-    echo "udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want"
-    echo "this functionality back."
-    echo " --"
-    echo "We no longer create the static nodes on install needed for an initrd-less and"
-    echo "devtmpfs-less boot, this only affects fresh installs."
-    echo "---------------"
-  fi
-}

Copied: udev/repos/core-x86_64/udev.install (from rev 147033, udev/repos/testing-x86_64/udev.install)
===================================================================
--- core-x86_64/udev.install	                        (rev 0)
+++ core-x86_64/udev.install	2012-01-21 00:32:06 UTC (rev 147038)
@@ -0,0 +1,65 @@
+# arg 1:  the new package version
+# arg 2:  the old package version
+
+post_upgrade() {
+  if [ "$(vercmp $2 175)" -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
+    if [ "$(vercmp $2 172)" -lt 0 ]; then
+      echo "Blacklisting of framebuffer devices has moved from /etc/modprobe.d to"
+      echo "/lib/modprobe.d. Any customizations shoud be done to the file in /etc, as it"
+      echo "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"
+      echo "the video group, as permissions and ownership of fb devices are controlled"
+      echo "by X."
+      echo "  --"
+    fi
+    if [ "$(vercmp $2 174)" -lt 0 ]; then
+      echo "We now use upstream rules for assigning devices to the 'disk', 'optical',"
+      echo "'scanner' and 'video' groups. Beware of any changes."
+      echo "  --"
+      echo "We no longer create symlinks from /dev/<dev> to /dev/<dev>0."
+      echo "  --"
+      echo "For security reasons, we no longer add devices to the 'storage' group. Use"
+      echo "udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want"
+      echo "this functionality back."
+      echo " --"
+      echo "We no longer create the static nodes on install needed for an initrd-less boot"
+      echo "where devtmpfs is not mounted by the kernel, this only affects fresh installs."
+      echo " --"
+    fi
+    echo "devtmpfs support is now a hard requirement. Users of the official Arch kernels"
+    echo "have this enabled."
+    echo "---------------"
+  fi
+}




More information about the arch-commits mailing list