The links /dev/cdrom and /dev/dvd are not created: root@impala:/root(8)# ll /dev/cd* /dev/dvd* /bin/ls: cannot access /dev/cd*: No such file or directory /bin/ls: cannot access /dev/dvd*: No such file or directory Dmesg says: root@impala:/root(9)# dmesg | egrep -C3 "CD|DVD" [ 4.337147] ohci_hcd 0000:00:12.0: irq 16, io mem 0xfe02e000 [ 4.365220] md125: detected capacity change from 0 to 972203294720 [ 4.365232] md127: detected capacity change from 0 to 139722752 [ 4.388533] ata19.00: ATAPI: HL-DT-STDVD-RAM GH22NP20, 2.00, max UDMA/66 [ 4.388541] ata19.00: limited to UDMA/33 due to 40-wire cable [ 4.393047] ohci_hcd 0000:00:12.0: OHCI controller state [ 4.393051] ohci_hcd 0000:00:12.0: OHCI 1.0, NO legacy support registers -- [ 4.397115] ohci_hcd 0000:00:12.1: created debug files [ 4.397118] ohci_hcd 0000:00:12.1: supports USB remote wakeup [ 4.397124] ohci_hcd 0000:00:12.1: irq 16, io mem 0xfe02d000 [ 4.397567] scsi 18:0:0:0: CD-ROM HL-DT-ST DVD-RAM GH22NP20 2.00 PQ: 0 ANSI: 5 [ 4.399578] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 4.399581] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 4.399659] sr 18:0:0:0: Attached scsi CD-ROM sr0 [ 4.399700] sr 18:0:0:0: Attached scsi generic sg4 type 5 [ 4.452043] ohci_hcd 0000:00:12.1: OHCI controller state [ 4.452047] ohci_hcd 0000:00:12.1: OHCI 1.0, NO legacy support registers I removed /etc/udev/rules.d/70-persistent-cd.rules and booted again. But the new generated 70-persistent-cd.rules is the same as the old: root@impala:/root(10)# grep cdrom /etc/udev/rules.d/70-persistent-cd.rules SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-0:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1" root@impala:/root(12)# ll /sys/devices/pci0000\:00/0000:00:14.1/ total 0 drwxr-xr-x 5 root root 0 Jun 2 19:22 ata19/ drwxr-xr-x 5 root root 0 Jun 2 19:22 ata20/ -rw-r--r-- 1 root root 4096 Jun 2 19:37 broken_parity_status -r--r--r-- 1 root root 4096 Jun 2 19:22 class -rw-r--r-- 1 root root 256 Jun 2 19:23 config -r--r--r-- 1 root root 4096 Jun 2 19:37 consistent_dma_mask_bits -r--r--r-- 1 root root 4096 Jun 2 19:22 device -r--r--r-- 1 root root 4096 Jun 2 19:37 dma_mask_bits lrwxrwxrwx 1 root root 0 Jun 2 19:37 driver -> ../../../bus/pci/drivers/pata_atiixp/ -rw------- 1 root root 4096 Jun 2 19:37 enable lrwxrwxrwx 1 root root 0 Jun 2 19:37 firmware_node -> ../../LNXSYSTM:00/device:00/PNP0A03:00/device:12/ drwxr-xr-x 5 root root 0 Jun 2 19:22 host18/ drwxr-xr-x 4 root root 0 Jun 2 19:22 host19/ -r--r--r-- 1 root root 4096 Jun 2 19:23 irq -r--r--r-- 1 root root 4096 Jun 2 19:37 local_cpulist -r--r--r-- 1 root root 4096 Jun 2 19:37 local_cpus -r--r--r-- 1 root root 4096 Jun 2 19:37 modalias -rw-r--r-- 1 root root 4096 Jun 2 19:37 msi_bus drwxr-xr-x 2 root root 0 Jun 2 19:37 power/ --w--w---- 1 root root 4096 Jun 2 19:37 remove --w--w---- 1 root root 4096 Jun 2 19:37 rescan -r--r--r-- 1 root root 4096 Jun 2 19:23 resource -rw------- 1 root root 8 Jun 2 19:37 resource0 -rw------- 1 root root 1 Jun 2 19:37 resource1 -rw------- 1 root root 8 Jun 2 19:37 resource2 -rw------- 1 root root 1 Jun 2 19:37 resource3 -rw------- 1 root root 16 Jun 2 19:37 resource4 lrwxrwxrwx 1 root root 0 Jun 2 19:22 subsystem -> ../../../bus/pci/ -r--r--r-- 1 root root 4096 Jun 2 19:37 subsystem_device -r--r--r-- 1 root root 4096 Jun 2 19:37 subsystem_vendor -rw-r--r-- 1 root root 4096 Jun 2 19:22 uevent -r--r--r-- 1 root root 4096 Jun 2 19:22 vendor I replaced all scsi-0:0:0:0 entries in /etc/udev/rules.d/70-persistent-cd.rules by scsi-18:0:0:024Dez00 After the next reboot a new /etc/udev/rules.d/70-persistent-cd.rules is created: root@impala:/root(5)# cat /etc/udev/rules.d/70-persistent-cd.rules # This file was automatically generated by the /lib/udev/write_cd_rules # program, run by the cd-aliases-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and set the $GENERATED variable. # HL-DT-STDVD-RAM_GH22NP20 (pci-0000:00:14.1-scsi-18:0:0:0) SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-18:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-18:0:0:0", SYMLINK+="cdrw", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-18:0:0:0", SYMLINK+="dvd", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-18:0:0:0", SYMLINK+="dvdrw", ENV{GENERATED}="1" # HL-DT-STDVD-RAM_GH22NP20 (pci-0000:00:14.1-scsi-0:0:0:0) SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-0:0:0:0", SYMLINK+="cdrom1", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-0:0:0:0", SYMLINK+="cdrw1", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-0:0:0:0", SYMLINK+="dvd1", ENV{GENERATED}="1" SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:14.1-scsi-0:0:0:0", SYMLINK+="dvdrw1", ENV{GENERATED}="1" Now exist also links /dev/cd* and /dev/dvd*: root@impala:/root(6)# ll /dev/cd* lrwxrwxrwx 1 root root 3 Jun 3 10:19 /dev/cdrom1 -> sr0 lrwxrwxrwx 1 root root 3 Jun 3 10:19 /dev/cdrw1 -> sr0 root@impala:/root(7)# ll /dev/dvd* lrwxrwxrwx 1 root root 3 Jun 3 10:19 /dev/dvd1 -> sr0 lrwxrwxrwx 1 root root 3 Jun 3 10:19 /dev/dvdrw1 -> sr0, which can be used to mount CDs or DVDs. I.e., now the entry "pci-0000:00:14.1-scsi-0:0:0:0" in 70-persistent-cd.rules works, even if the DVD-Drive is identified by OS and lsscsi as 18:0:0:0: root@impala:/root(8)# lsscsi [0:0:0:0] disk ATA Hitachi HDS72101 JP4O /dev/sda [1:0:0:0] disk ATA Hitachi HDS72101 JP4O /dev/sdb [3:0:0:0] disk ATA SAMSUNG SP2004C VM10 /dev/sdc [13:0:0:0] process Marvell 91xx Config 1.01 - [18:0:0:0] cd/dvd HL-DT-ST DVD-RAM GH22NP20 2.00 /dev/sr0 Any idea what happens here? Reproducible: Always root@impala:/root(9)# emerge --info Portage 2.1.9.50 (default/linux/amd64/10.0, gcc-4.5.2, glibc-2.13-r2, 2.6.39-gentoo x86_64) ================================================================= System uname: Linux-2.6.39-gentoo-x86_64-AMD_Phenom-tm-_II_X4_965_Processor-with-gentoo-2.0.2 Timestamp of tree: Thu, 02 Jun 2011 06:00:01 +0000 app-shells/bash: 4.2_p10 dev-java/java-config: 2.1.11-r3 dev-lang/python: 2.7.1-r1, 3.2 dev-util/cmake: 2.8.4-r1 sys-apps/baselayout: 2.0.2 sys-apps/openrc: 0.8.2-r1 sys-apps/sandbox: 2.5 sys-devel/autoconf: 2.13, 2.68 sys-devel/automake: 1.9.6-r3, 1.10.3, 1.11.1-r1 sys-devel/binutils: 2.21 sys-devel/gcc: 4.5.2 sys-devel/gcc-config: 1.4.1-r1 sys-devel/libtool: 2.4-r1 sys-devel/make: 3.82 sys-kernel/linux-headers: 2.6.38 (virtual/os-headers) sys-libs/glibc: 2.13-r2 ACCEPT_KEYWORDS="amd64 ~amd64" ACCEPT_LICENSE="* -@EULA PUEL dlj-1.1 skype-eula googleearth AdobeFlash-10.1 cadsoft" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=amdfam10 -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.0/conf /usr/share/openvpn/easy-rsa /var/lib/hsqldb" CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.2/ext-active/ /etc/php/apache2-php5.3/ext-active/ /etc/php/cgi-php5.2/ext-active/ /etc/php/cgi-php5.3/ext-active/ /etc/php/cli-php5.2/ext-active/ /etc/php/cli-php5.3/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c" CXXFLAGS="-march=amdfam10 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="assume-digests binpkg-logs distlocks fixlafiles fixpackages news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" FFLAGS="" GENTOO_MIRRORS="http://distfiles.gentoo.org" LANG="en_US.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" LINGUAS="de fr" MAKEOPTS="-j5" PKGDIR="/usr/portage/packages" PORTAGE_CONFIGROOT="/" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/var/lib/layman/x11 /var/lib/layman/sunrise /var/lib/layman/science /var/lib/layman/lordvan /usr/local/portage /var/lib/cpan /var/lib/g-octave" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="3dnow 3dnowext 64bit R X Xaw3d a52 aac abiword accessibility acl acpi admin afs alsa amd64 amrr ao apache2 applet archive arpack asf aspell assistant audacious audiofile automap automount bash-completion berkdb blas blast bluetooth boo boost bzip2 cairo cdda cddb cdf cdio cdparanoia cdr cg cgi chm cli consolekit corba cracklib crypt css cuda cups curl cxx daap db dbase dbi dbm dbus declarative designer devhelp device-mapper dga dia djvu doc dri ds2490 ds9097 ds9097u dv dvb dvd dvdr dvi dynamicplugin eds elf emacs emboss emf encode epiphany evo examples exif expat extensions extra extras fame ffmpeg fftw firefox fits flac fltk fontconfig foomaticdb fortran fortran95 fpx fts3 fuse galago gcj gd gdal gdbm gdu gedit geoip geolocation geos gfortran gif gimp ginac git glade glib gml gmp gmtsuppl gnome gnome-keyring gnome-print gnuplot gnutls gphoto2 gpm grammar graphics graphtft graphviz grass gs gsl gsm gstreamer gtk guile harness hddtemp hdf hdf5 hdri http httpd hvm iconv icq icu id3 imagemagick imap innodb inotify ipod ipv6 ithreads jabber jadetex java java6 jbig john jpeg jpeg2k kdrive kerberos kpathsea kqemu kvm ladspa lame lapack latex latex3 lcms ldap lensfun libffi libgda libnotify libsamplerate lm_sensors lua lzo mad mail maildir mapnik math matroska mkl mmx mmxext mng modules mono moonlight motif mozilla mp3 mp4 mpeg mpi mpi-threads mplayer mtp mudflap multilib musicbrainz mysql mysqli nautilus ncurses netcdf netpbm network networking networkmanager nfs nls nntp nptl nptlonly nsplugin ntfs ntp numpy obex objc ocaml octave odbc ogdi ogg ole openexr opengl openmp overview pam pcre pda pdf perl plotutils plugins png podcast policykit portaudio posix postgres postscript pppd preview-latex proj projectx pstricks pulseaudio python python-bindings q16 q32 qemu qhull qt3support qt4 quicktime readline reiserfs reports rle romio rpc rrdcgi rrdtool samba sasl science sdk sdl secure-delete semantic-desktop server session sip slang slp smbclient smp sms sndfile snmp soup sox speex spell sql sqlite sse sse2 sse4a ssl subtitles subversion suexec svg svm swig sysfs szip t1lib tcl tcpd tex tex4ht texmacs tgif theora threads thunderbird tidy tiff tk tntc tools truetype udev unicode usb userlocales utempter v4l2 video virtualbox vorbis wav webdav webdav-serf webkit wmf wxwidgets xattr xcb xemacs xext xine xml xmlreader xmlrpc xorg xpm xulrunner xv xvid xvmc yaml zlib zvbi" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgid dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_http rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="braindump flow karbon kexi kpresenter krita tables words" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="de fr" NETBEANS_MODULES="apisupport cnd dlight enterprise ergonomics groovy gsf harness ide identity j2ee java mobility nb php profiler ruby websvccommon xml" PHP_TARGETS="php5-3" QEMU_SOFTMMU_TARGETS="i386 ppc ppc64 x86_64" QEMU_USER_TARGETS="arm i386 x86_64" RUBY_TARGETS="ruby18" USERLAND="GNU" VIDEO_CARDS="nv nouveau vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account" Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
The rule generator is part of udev, not udisks.
In order to rule out some corner cases. And this is still same with latest udev (and to be sure, udisks too) ? Have you tried emerging udev with --noconfmem (emerge --noconfmem -1 sys-fs/udev) and running etc-update? Made sure there are no stale files in /etc/udev from time it didn't properly use /lib/udev (I can't reacall how that went again really ...)
Try udev-182.
I hit the same bug with sys-fs/udev-182-r3. It may be related to linux-3.3. The existing persistent rules are ignored, but (as opposed to the original submitter) the rule generator doesn't even write the file if I delete it and retrigger the uevents. I have debugged a bit further by stracing udevd. Result: it runs the write_cd_rules with the following environment (I prepended "env -i" for you to be able to run this easily and censored the actual serial number for privacy reasons): env -i "ACTION=add" "DEVLINKS=/dev/cdrom /dev/disk/by-id/ata-MATSHITA_BD-RE_UJ242_CENSORED" "DEVNAME=/dev/sr0" "DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sr0" "DEVTYPE=disk" "ID_ATA=1" "ID_ATA_SATA=1" "ID_ATA_SATA_SIGNAL_RATE_GEN1=1" "ID_BUS=ata" "ID_CDROM=1" "ID_CDROM_BD=1" "ID_CDROM_BD_R=1" "ID_CDROM_BD_RE=1" "ID_CDROM_CD=1" "ID_CDROM_CD_R=1" "ID_CDROM_CD_RW=1" "ID_CDROM_DVD=1" "ID_CDROM_DVD_PLUS_R=1" "ID_CDROM_DVD_PLUS_RW=1" "ID_CDROM_DVD_PLUS_R_DL=1" "ID_CDROM_DVD_R=1" "ID_CDROM_DVD_RAM=1" "ID_CDROM_DVD_RW=1" "ID_MODEL=MATSHITA_BD-RE_UJ242" "ID_MODEL_ENC=MATSHITA\\x20BD-RE\\x20UJ242\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20\\x20" "ID_REVISION=1.00" "ID_SERIAL=MATSHITA_BD-RE_UJ242_CENSORED" "ID_SERIAL_SHORT=CENSORED" "ID_TYPE=cd" "LVM_SBIN_PATH=/sbin" "MAJOR=11" "MINOR=0" "SEQNUM=2487" "SUBSYSTEM=block" "TAGS=:seat:uaccess:" "USEC_INITIALIZED=17991381937" /lib/udev/write_cd_rules The write_cd_rules prints this to stderr: /devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sr0 not supported by path_id. by-id may work. So I guess this is the problem: the path ID changed between kernels, and the path_id program has not been updated. I edited /lib/udev/rules.d/75-cd-aliases-generator.rules in order to always run write_cd_rules with the by-id parameter: # these rules generate rules for the /dev/{cdrom,dvd,...} symlinks ACTION=="add", SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", PROGRAM="write_cd_rules by-id", SYMLINK+="%c" LABEL="persistent_cd_end" End result: it wrote the rules, but did not use them immediately. They were in effect after one more "udevadm trigger", but this also resulted in an extra copy of the generated rules.
This is no longer a problem with new udev, like 198, because the rule_generator was removed