Commit 0e55fda5 authored by Sjoerd Simons's avatar Sjoerd Simons
Browse files

Merge branch 'master' into experimental

Conflicts:
	debian/changelog
	debian/control
	debian/patches/series
	debian/rules
parents c40546a9 72405a1a
......@@ -26,6 +26,67 @@ systemd (214-1) UNRELEASED; urgency=medium
-- Jon Severinsson <jon@severinsson.net> Sun, 16 Jul 2014 20:00:00 +0200
systemd (208-8) UNRELEASED; urgency=medium
* Fix duplicate line in copyright. (Closes: #756899)
-- Martin Pitt <mpitt@debian.org> Thu, 07 Aug 2014 08:31:38 +0200
systemd (208-7) unstable; urgency=medium
[ Michael Biebl ]
* Mask remaining services provided by the initscripts package and document
in more detail why certain services have been masked. (Closes: #659264)
* Install zsh completions to the correct place. (Closes: #717540)
[ Jon Severinsson ]
* Cherry-pick upstream fix for journal file permissions.
* Map some rcS.d init script dependencies to their systemd equivalent.
* Update Depends on initscripts to the version with a systemd-compatible
mountnfs ifup hook. (Closes: #746358)
* Add Breaks on lvm2 versions without native systemd support.
(Closes: #678438, #692120)
* Do not fail udev upgrades if the udev service is already runtime-masked
when the preinst script is run. (Closes: #755746)
* Add Pre-Depends on systemd to systemd-sysv, to avoid risking that the
sysv-compatible symlinks become dangling on a partial install.
* Ensure that systemctl is usable right after being unpacked, by adding the
required Pre-Depends to systemd and libsystemd-daemon0. (Closes: #753589)
* Add support for TuxOnIce hibernation. (Closes: #746463)
[ Martin Pitt ]
* Rename "api" autopkgtest to "build-login", and stop requiring that
sd_login_monitor_new() succeeds. It doesn't in many environments like
schroot or after upgrades from < 204, and the main point of the test is
to check that libsystemd-login-dev has correct contents and dependencies.
Drop "isolation-machine" requirement.
* Use glibc's xattr support instead of requiring libattr. Fixes FTBFS with
latest glibc and libattr. Cherrypicked from trunk. Drop libattr1-dev build
dependency. (Closes: #756097)
* Build python3-systemd for Python 3 bindings. Drop python-systemd; it does
not have any reverse dependencies, and we want to encourage moving to
Python 3. (LP: #1258089)
* Add simple autopkgtest for python3-systemd.
* Add dbus dependency to libpam-systemd. (Closes: #755968)
* Fix /dev/cdrom symlink to appear for all types of drives, not just for
pure CD-ROM ones. Also, fix the symlinks to stay after change events.
(LP: #1323777)
* 75-persistent-net-generator.rules: Adjust Ravello interfaces; they don't
violate the assignment schema, they should just not be persistent.
Thanks to Boris Figovsky. (Closes: #747475, LP: #1317776)
* Reinstate patches to make logind D-BUS activatable.
* Re-add systemd-shim alternative dependency to libpam-systemd. Version it
to ensure cgmanager support. (Closes: #754984, LP: #1343802)
* Convert udev-finish.upstart from a task to a job, to avoid hangs with
startpar. (Closes: #756631)
* Add debian/extra/60-keyboard.hwdb: Latest keymaps from upstream git.
This makes it trivial to backport keymap fixes to stable releases.
(Closes: #657809; LP: #1322770, #1339998)
* udev.init: Create static device nodes, as this moved out of udevd.
Thanks to Michael Biebl for the script! (Closes: #749021)
-- Martin Pitt <mpitt@debian.org> Wed, 06 Aug 2014 13:33:22 +0200
systemd (208-6) unstable; urgency=medium
[ Jon Severinsson ]
......
......@@ -30,15 +30,14 @@ Build-Depends: debhelper (>= 9),
libwrap0-dev,
libselinux1-dev (>= 2.1.9),
libacl1-dev,
libattr1-dev,
liblzma-dev,
libgcrypt11-dev,
libkmod-dev (>= 14),
libblkid-dev (>= 2.20),
libgirepository1.0-dev (>= 1.31.1),
gobject-introspection (>= 1.31.1),
python-dev,
python-lxml,
python3-all-dev,
python3-lxml,
libglib2.0-doc
Package: systemd
......@@ -47,18 +46,19 @@ Section: admin
Priority: optional
Recommends: libpam-systemd
Suggests: systemd-ui
Pre-Depends: ${misc:Pre-Depends}
Pre-Depends: ${shlibs:Pre-Depends},
${misc:Pre-Depends}
Depends: ${shlibs:Depends},
${misc:Depends},
libsystemd0 (= ${binary:Version}),
util-linux (>= 2.19.1-2),
initscripts (>= 2.88dsf-17),
initscripts (>= 2.88dsf-53.2),
sysv-rc,
udev,
acl,
adduser,
libcap2-bin
Breaks: lvm2 (<< 2.02.84-1),
Breaks: lvm2 (<< 2.02.104-1),
lsb-base (<< 4.1+Debian4)
Conflicts: klogd
Description: system and service manager
......@@ -82,6 +82,7 @@ Conflicts: sysvinit-core,
Replaces: sysvinit (<< 2.88dsf-44~),
sysvinit-core,
upstart
Pre-Depends: systemd
Depends: ${shlibs:Depends},
${misc:Depends},
systemd (= ${binary:Version})
......@@ -108,7 +109,8 @@ Depends: ${shlibs:Depends},
${misc:Depends},
systemd (= ${binary:Version}),
libpam-runtime (>= 1.0.1-6),
systemd-sysv
dbus,
systemd-sysv | systemd-shim (>= 6-4)
Description: system and service manager - PAM module
systemd is a replacement for sysvinit. It is dependency-based and
able to read the LSB init script headers in addition to parsing rcN.d
......@@ -130,9 +132,9 @@ Architecture: linux-any
Multi-Arch: same
Section: libs
Priority: optional
Pre-Depends: ${misc:Pre-Depends}
Depends: ${shlibs:Depends},
${misc:Depends}
Pre-Depends: ${shlibs:Depends},
${misc:Pre-Depends}
Depends: ${misc:Depends}
Description: systemd utility library
The libsystemd0 library provides interfaces to various systemd components
......@@ -377,15 +379,15 @@ Description: libgudev-1.0 development files
This package contains the files needed for developing applications that
use libgudev-1.0.
Package: python-systemd
Package: python3-systemd
Section: python
Priority: optional
Architecture: linux-any
Depends: ${shlibs:Depends},
${misc:Depends},
${python:Depends}
Description: python bindings for systemd
This package contains Python bindings for the systemd libraries.
${python3:Depends}
Description: Python 3 bindings for systemd
This package contains Python 3 bindings for the systemd libraries.
Package: systemd-dbg
Architecture: linux-any
......
......@@ -28,7 +28,6 @@ Copyright: 2008-2013 Kay Sievers <kay@vrfy.org>
2012 B. Poettering <fsprg@point-at-infinity.org>
2012 Holger Hans Peter Freyther
2012 Dan Walsh
2012 Holger Hans Peter Freyther
2012 Roberto Sassu
2012 David Strauss <david@davidstrauss.net>
2012 Marti Raudsepp <marti@juffo.org>
......
This diff is collapsed.
......@@ -15,9 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
PATH='/sbin:/bin'
#
PATH='/sbin:/bin'
# Read a single line from file $1 in the $DEVPATH directory.
......
......@@ -67,8 +67,6 @@ ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist"
ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist"
# Kingston Technologies
ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist"
# Ravello Systems
ENV{MATCHADDR}=="2c:c2:60:*", GOTO="globally_administered_whitelist"
# ignore interfaces with locally administered or null MAC addresses
......@@ -97,6 +95,9 @@ ENV{MATCHADDR}=="7c:1e:52:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="7c:Ed:8d:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="Dc:B4:c4:*", ENV{MATCHADDR}=""
# ignore Ravello virtual interfaces
ENV{MATCHADDR}=="2c:c2:60:*", ENV{MATCHADDR}=""
LABEL="globally_administered_whitelist"
# ibmveth interfaces have stable locally administered MAC addresses
......
" Vim syntax file
" Language: udev rules files
" Maintainer: Marco d'Itri <md@linux.it>
" Last Change: 2005 August
"
" This syntax file is unfinished. If you can, please clean it up and submit
" it for inclusion in the vim package.
if exists("b:current_syntax")
finish
endif
let b:current_syntax = "udev"
syn keyword Ucondition ACTION ENV RESULT KERNEL SUBSYSTEM DRIVER ATTR
syn keyword Ucondition KERNELS SUBSYSTEMS DRIVERS ATTRS DEVPATH TEST
syn keyword Ucondition nextgroup=Uparambr,Uoperator
syn keyword Uaction PROGRAM NAME SYMLINK OWNER GROUP MODE RUN OPTIONS
syn keyword Uaction IMPORT GOTO LABEL
syn keyword Uaction nextgroup=Uparambr,Uoperator
syn region Uparambr start=/{/ end=/}/ contains=Uparam
syn match Uparam '[A-Za-z0-9_]*' contained
syn match Ufnmatch "[?*|]" contained
syn region Ufnmatch start=/\[/ skip=/\\\]/ end=/\]/ contained
syn match Uprintf '%[beknMmps%]\|%c{[0-9]}' contained
syn match Ustringvar '\$[a-z]*' nextgroup=Uparambr
syn match Ustring '"[^"]*"' contains=Uprintf,Ufnmatch,Ustringvar
syn match Uoperator "==\|!=\|=\|+=\|:=\|,"
syn match Ueol '\\$'
syn region Ucomment start=/#/ end=/$/
syn keyword Utodo contained TODO FIXME XXX
hi def link Ucondition Identifier
hi def link Uaction Identifier
hi def link Uparambr Delimiter
hi def link Uparam PreProc
hi def link Ufnmatch Special
hi def link Uprintf Special
hi def link Ustringvar Function
hi def link Ustring String
hi def link Uoperator Operator
hi def link Ueol Delimiter
hi def link Ucomment Comment
hi def link Utodo Todo
From: Julien Muchembled <jm@jmuchemb.eu>
Date: Tue, 29 Apr 2014 11:40:50 +0200
Subject: Add support for TuxOnIce hibernation
systemd does not support non-mainline kernel features so upstream rejected this
patch.
It is however required for systemd integration by tuxonice-userui package.
Forwarded: http://lists.freedesktop.org/archives/systemd-devel/2014-April/018960.html
---
src/shared/sleep-config.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/src/shared/sleep-config.c
+++ b/src/shared/sleep-config.c
@@ -224,6 +224,12 @@
size_t size = 0, used = 0;
int r;
+ /* TuxOnIce is an alternate implementation for hibernation.
+ * It can be configured to compress the image to a file or an inactive
+ * swap partition, so there's nothing more we can do here. */
+ if (access("/sys/power/tuxonice", F_OK) == 0)
+ return true;
+
r = hibernation_partition_size(&size, &used);
if (r < 0)
return false;
From: Michael Biebl <biebl@debian.org>
Date: Thu, 18 Jul 2013 20:49:14 +0200
Subject: Launch logind via a shell wrapper
We need to setup the cgroupfs mount and the runtime directory before
starting logind. Use a shell script which is triggered by the D-Bus
service.
---
src/login/org.freedesktop.login1.service | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/login/org.freedesktop.login1.service b/src/login/org.freedesktop.login1.service
index d10f631..82c007e 100644
--- a/src/login/org.freedesktop.login1.service
+++ b/src/login/org.freedesktop.login1.service
@@ -7,6 +7,6 @@
[D-BUS Service]
Name=org.freedesktop.login1
-Exec=/lib/systemd/systemd-logind
+Exec=/lib/systemd/systemd-logind-launch
User=root
SystemdService=dbus-org.freedesktop.login1.service
From: Michael Biebl <biebl@debian.org>
Date: Thu, 18 Jul 2013 20:31:49 +0200
Subject: Make hostnamed/localed/timedated D-Bus activatable
Subject: Make logind/hostnamed/localed/timedated D-Bus activatable
We want to use those services outside of systemd, so we make them
activatable via D-Bus.
---
src/hostname/org.freedesktop.hostname1.service | 2 +-
src/locale/org.freedesktop.locale1.service | 2 +-
src/login/org.freedesktop.login1.service | 2 +-
src/timedate/org.freedesktop.timedate1.service | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/hostname/org.freedesktop.hostname1.service b/src/hostname/org.freedesktop.hostname1.service
index 6041ed6..7d923a5 100644
......@@ -34,6 +35,18 @@ index 025f9a0..8abbbfe 100644
+Exec=/lib/systemd/systemd-localed
User=root
SystemdService=dbus-org.freedesktop.locale1.service
diff --git a/src/login/org.freedesktop.login1.service b/src/login/org.freedesktop.login1.service
index 762dae2..d10f631 100644
--- a/src/login/org.freedesktop.login1.service
+++ b/src/login/org.freedesktop.login1.service
@@ -7,6 +7,6 @@
[D-BUS Service]
Name=org.freedesktop.login1
-Exec=/bin/false
+Exec=/lib/systemd/systemd-logind
User=root
SystemdService=dbus-org.freedesktop.login1.service
diff --git a/src/timedate/org.freedesktop.timedate1.service b/src/timedate/org.freedesktop.timedate1.service
index 875f4be..198777d 100644
--- a/src/timedate/org.freedesktop.timedate1.service
......
From: Jon Severinsson <jon@severinsson.net>
Date: Fri, 11 Jul 2014 02:15:37 +0200
Subject: Map rcS.d init script dependencies to their systemd equivalent.
---
src/core/service.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/core/service.c b/src/core/service.c
index dda34a7..b3f48b4 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -370,6 +370,12 @@ static int sysv_translate_facility(const char *name, const char *filename, char
"remote_fs", SPECIAL_REMOTE_FS_TARGET,
"syslog", SPECIAL_SYSLOG_TARGET,
"time", SPECIAL_TIME_SYNC_TARGET,
+ /* special rcS init scripts */
+ "cryptdisks", "cryptsetup.target",
+ "mountall", SPECIAL_LOCAL_FS_TARGET,
+ "mountnfs", SPECIAL_REMOTE_FS_TARGET,
+ "checkroot", "systemd-remount-fs.service",
+ "dbus", "dbus.socket",
};
unsigned i;
From: Michael Biebl <biebl@debian.org>
Date: Thu, 18 Jul 2013 20:36:39 +0200
Subject: Start logind on demand via libpam-systemd
Don't make pam_sm_open_session() a NOP if logind is not running. Trying
to access logind via D-Bus will start it on demand.
---
src/login/pam-module.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
--- a/src/login/pam-module.c
+++ b/src/login/pam-module.c
@@ -222,10 +222,6 @@
assert(handle);
- /* Make this a NOP on non-logind systems */
- if (!logind_running())
- return PAM_SUCCESS;
-
if (parse_argv(handle,
argc, argv,
&class_pam,
From bc3d33edd2b227c17ae338bf147067bdfafe299c Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Wed, 28 May 2014 17:36:40 +0800
Subject: [PATCH] build-sys: use glibc's xattr support instead of requiring
libattr
(cherry picked from commit d2edfae0f9bdbecf6a8518e2a5bcf06f470e0d9e)
---
configure.ac | 51 --------------------------------------------
src/core/mount-setup.c | 2 --
src/core/socket.c | 4 +---
src/journal/journal-file.c | 7 +-----
src/journal/journal-vacuum.c | 10 +--------
5 files changed, 3 insertions(+), 71 deletions(-)
diff --git a/configure.ac b/configure.ac
index 9605b38..4b0b45b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -468,44 +468,6 @@ AC_SUBST(ACL_LIBS)
AM_CONDITIONAL([HAVE_ACL], [test "x$have_acl" != xno])
# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([xattr],
- AS_HELP_STRING([--disable-xattr],[Disable optional XATTR support]),
- [case "${enableval}" in
- yes) have_xattr=yes ;;
- no) have_xattr=no ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --disable-xattr) ;;
- esac],
- [have_xattr=auto])
-
-if test "x${have_xattr}" != xno ; then
- AC_CHECK_HEADERS(
- [attr/xattr.h],
- [have_xattr=yes],
- [if test "x$have_xattr" = xyes ; then
- AC_MSG_ERROR([*** XATTR headers not found.])
- fi])
-
- AC_CHECK_LIB(
- [attr],
- [fsetxattr],
- [have_xattr=yes],
- [if test "x$have_xattr" = xyes ; then
- AC_MSG_ERROR([*** libattr not found.])
- fi])
-
- if test "x$have_xattr" = xyes ; then
- XATTR_LIBS="-lattr"
- AC_DEFINE(HAVE_XATTR, 1, [XATTR available])
- else
- have_xattr=no
- fi
-else
- XATTR_LIBS=
-fi
-AC_SUBST(XATTR_LIBS)
-AM_CONDITIONAL([HAVE_XATTR], [test "x$have_xattr" != xno])
-
-# ------------------------------------------------------------------------------
AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK support]),
[case "${enableval}" in
yes) have_smack=yes ;;
@@ -514,18 +476,6 @@ AC_ARG_ENABLE([smack], AS_HELP_STRING([--disable-smack],[Disable optional SMACK
esac],
[have_smack=auto])
-if test "x${have_xattr}" = xno; then
- if test "x${have_smack}" = xyes; then
- AC_MSG_ERROR(SMACK requires xattr support)
- else
- have_smack=no
- fi
-else
- if test "x${have_smack}" = xauto; then
- have_smack=yes
- fi
-fi
-
if test "x${have_smack}" = xyes ; then
AC_DEFINE(HAVE_SMACK, 1, [Define if SMACK is available])
fi
@@ -1025,7 +975,6 @@ AC_MSG_RESULT([
SMACK: ${have_smack}
XZ: ${have_xz}
ACL: ${have_acl}
- XATTR: ${have_xattr}
GCRYPT: ${have_gcrypt}
QRENCODE: ${have_qrencode}
MICROHTTPD: ${have_microhttpd}
diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
index cff83d3..12b7ed3 100644
--- a/src/core/mount-setup.c
+++ b/src/core/mount-setup.c
@@ -87,10 +87,8 @@ static const MountPoint mount_table[] = {
NULL, MNT_FATAL|MNT_IN_CONTAINER },
{ "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME,
NULL, MNT_IN_CONTAINER },
-#ifdef HAVE_XATTR
{ "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV,
NULL, MNT_IN_CONTAINER },
-#endif
{ "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV,
NULL, MNT_IN_CONTAINER },
{ "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV,
diff --git a/src/core/socket.c b/src/core/socket.c
index 8e02c03..3bd4532 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -28,9 +28,7 @@
#include <signal.h>
#include <arpa/inet.h>
#include <mqueue.h>
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "unit.h"
#include "socket.h"
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 2d2d289..010dda1 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -26,10 +26,7 @@
#include <sys/statvfs.h>
#include <fcntl.h>
#include <stddef.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "journal-def.h"
#include "journal-file.h"
@@ -2513,7 +2510,6 @@ int journal_file_open(
}
if (f->last_stat.st_size == 0 && f->writable) {
-#ifdef HAVE_XATTR
uint64_t crtime;
/* Let's attach the creation time to the journal file,
@@ -2528,7 +2524,6 @@ int journal_file_open(
crtime = htole64((uint64_t) now(CLOCK_REALTIME));
fsetxattr(f->fd, "user.crtime_usec", &crtime, sizeof(crtime), XATTR_CREATE);
-#endif
#ifdef HAVE_GCRYPT
/* Try to load the FSPRG state, and if we can't, then
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 695e518..442120a 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -24,10 +24,7 @@
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <unistd.h>
-
-#ifdef HAVE_XATTR
-#include <attr/xattr.h>
-#endif
+#include <sys/xattr.h>
#include "journal-def.h"
#include "journal-file.h"
@@ -79,11 +76,8 @@ static void patch_realtime(
unsigned long long *realtime) {
usec_t x;
-
-#ifdef HAVE_XATTR
uint64_t crtime;
_cleanup_free_ const char *path = NULL;
-#endif
/* The timestamp was determined by the file name, but let's
* see if the file might actually be older than the file name
@@ -106,7 +100,6 @@ static void patch_realtime(
if (x > 0 && x != (usec_t) -1 && x < *realtime)
*realtime = x;
-#ifdef HAVE_XATTR
/* Let's read the original creation time, if possible. Ideally
* we'd just query the creation time the FS might provide, but
* unfortunately there's currently no sane API to query
@@ -125,7 +118,6 @@ static void patch_realtime(
if (crtime > 0 && crtime != (uint64_t) -1 && crtime < *realtime)
*realtime = crtime;
}
-#endif
}
static int journal_file_empty(int dir_fd, const char *name) {
--
2.0.1
......@@ -7,21 +7,19 @@ Add more aliases for CD/DVD devices.
rules/60-cdrom_id.rules | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/rules/60-cdrom_id.rules b/rules/60-cdrom_id.rules
index 6eaf76a..ac346fe 100644
--- a/rules/60-cdrom_id.rules
+++ b/rules/60-cdrom_id.rules
@@ -15,6 +15,14 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdr
Index: systemd/rules/60-cdrom_id.rules
===================================================================
--- systemd.orig/rules/60-cdrom_id.rules
+++ systemd/rules/60-cdrom_id.rules
@@ -15,6 +15,12 @@ ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdr
# enable the receiving of media eject button events
IMPORT{program}="cdrom_id --lock-media $devnode"
-KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+ACTION!="add", GOTO="cdrom_end"
+
+# These rules will create symlinks for the CD/DVD reader, to help old
+# programs which are unable to automatically discover the devices.
+# The results are undefined for system with multiple CD/DVD devices.
+ENV{ID_CDROM_CD}=="?*", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+ENV{ID_CDROM}=="?*", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
+ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cdrw", OPTIONS+="link_priority=-100"
+ENV{ID_CDROM_DVD}=="?*", SYMLINK+="dvd", OPTIONS+="link_priority=-100"
+ENV{ID_CDROM_DVD_RW}=="?*", SYMLINK+="dvdrw", OPTIONS+="link_priority=-100"
......