Commit ce7be9b1 authored by Marco d'Itri's avatar Marco d'Itri
Browse files

Add more CD/DVD aliases to 60-cdrom_id.rules

parent 0a8c29c1
......@@ -46,6 +46,11 @@ systemd (204-9) UNRELEASED; urgency=medium
* Updated fbdev-blacklist.conf for recent kernels.
* Do not blacklist viafb because it is required on the OLPC XO-1.5.
(Closes: #705792)
* Remove write_cd_rules and the associated rules which create "persistent"
symlinks for CD/DVD devices and replace them with more rules in
60-cdrom_id, which will create symlinks for one at random among the
devices installed. Since the common case is having a single device
then everything will work out just fine most of the times...
[ Michael Stapelberg ]
* Add systemd-dbg package, thanks Daniel Schaal (Closes: #742724).
......
# These rules generate rules for the /dev/{cdrom,dvd,...} symlinks and
# write them to /etc/udev/rules.d/70-persistent-cd.rules.
ACTION=="add", SUBSYSTEM=="block", ENV{GENERATED}!="?*", ENV{ID_CDROM}=="?*", \
SUBSYSTEMS!="usb|ieee1394", \
PROGRAM="write_cd_rules", SYMLINK+="$result"
ACTION=="add", SUBSYSTEM=="block", ENV{GENERATED}!="?*", ENV{ID_CDROM}=="?*", \
SUBSYSTEMS=="usb|ieee1394", \
PROGRAM="write_cd_rules by-id", SYMLINK+="$result"
#!/bin/sh -e
# This script is run if an optical drive lacks a rule for persistent naming.
#
# It adds symlinks for optical drives based on the device class determined
# by cdrom_id and used ID_PATH to identify the device.
# (C) 2006 Marco d'Itri <md@Linux.IT>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# debug, if UDEV_LOG=<debug>
if [ -n "$UDEV_LOG" ]; then
if [ "$UDEV_LOG" -ge 7 ]; then
set -x
fi
fi
RULES_FILE="/etc/udev/rules.d/70-persistent-cd.rules"
. /lib/udev/rule_generator.functions
find_next_available() {
raw_find_next_available "$(find_all_rules 'SYMLINK\+=' "$1")"
}
write_rule() {
local match="$1"
local link="$2"
local comment="$3"
{
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
echo "# program, run by the cd-aliases-generator.rules rules file."
echo "#"
echo "# You can modify it, as long as you keep each rule on a single"
echo "# line, and set the \$GENERATED variable."
echo ""
fi
[ "$comment" ] && echo "# $comment"
echo "$match, SYMLINK+=\"$link\", ENV{GENERATED}=\"1\""
} >> $RULES_FILE
SYMLINKS="$SYMLINKS $link"
}
if [ -z "$DEVPATH" ]; then
echo "Missing \$DEVPATH." >&2
exit 1
fi
if [ -z "$ID_CDROM" ]; then
echo "$DEVPATH is not a CD reader." >&2
exit 1
fi
if [ "$1" ]; then
METHOD="$1"
else
METHOD='by-path'
fi
case "$METHOD" in
by-path)
if [ -z "$ID_PATH" ]; then
echo "$DEVPATH not supported by path_id. by-id may work." >&2
exit 1
fi
RULE="ENV{ID_PATH}==\"$ID_PATH\""
;;
by-id)
if [ "$ID_SERIAL" ]; then
RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
else
echo "$DEVPATH not supported by ata_id. by-path may work." >&2
exit 1
fi
;;
*)
echo "Invalid argument (must be either by-path or by-id)." >&2
exit 1
;;
esac
# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file
# Check if the rules file is writeable.
choose_rules_file
link_num=$(find_next_available 'cdrom[0-9]*')
match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
comment="$ID_MODEL ($ID_PATH)"
write_rule "$match" "cdrom$link_num" "$comment"
[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
write_rule "$match" "cdrw$link_num"
[ "$ID_CDROM_DVD" ] && \
write_rule "$match" "dvd$link_num"
[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
write_rule "$match" "dvdrw$link_num"
echo >> $RULES_FILE
unlock_rules_file
echo $SYMLINKS
exit 0
From: Marco d'Itri <md@linux.it>
Date: Sat, 26 Apr 2014 19:30:41 +0200
Subject: more cd aliases
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
# 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_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"
LABEL="cdrom_end"
......@@ -53,3 +53,4 @@
0053-logind-if-a-user-is-sitting-in-front-of-the-computer.patch
0054-insserv.conf-generator.patch
0055-Add-targets-for-compatibility-with-Debian-insserv-sy.patch
0056-more-cd-aliases.patch
......@@ -97,7 +97,6 @@ override_dh_install:
debian/udev-udeb/usr/lib/base-installer.d/05udev
mkdir -p debian/udev-udeb/lib/udev/rules.d/
install -D --mode=644 \
debian/extra/rules/75-cd-aliases-generator.rules \
debian/extra/rules/75-persistent-net-generator.rules \
debian/udev-udeb/lib/udev/rules.d/
install -D --mode=644 debian/extra/links.conf \
......@@ -108,7 +107,6 @@ override_dh_install:
debian/extra/rule_generator.functions \
debian/udev-udeb/lib/udev/
install -D --mode=755 \
debian/extra/write_cd_rules \
debian/extra/write_net_rules \
debian/udev-udeb/lib/udev/
# udev: initramfs-tools support
......@@ -134,7 +132,6 @@ override_dh_install:
debian/extra/dsl-modem.agent \
debian/extra/logger.agent \
debian/extra/net.agent \
debian/extra/write_cd_rules \
debian/extra/write_net_rules \
debian/udev/lib/udev/
# systemd
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment