20 jun 2012

bad /dev/cdrom symlink | /dev/cdrom2 | /dev/sr0 | 70-persistent-cd.rules | bad /dev/cdrom2 -> /dev/sr0

En SL6.2, supongo que en CentOS.62 pasará lo mismo, noté que al usar el comando "eject", que expulsa la lectora de CD o DVD, no funcionaba, me decia que no se habia encontrado /dev/cdrom.
Claro, mi dispositivo era /dev/sr0, y dentro de /dev/ habia un symlink llamado cdrom2 que apuntaba a /dev/sr0.

Es decir, cdrom, se llamaba cdrom2. Por mas que recrearamos el symlink con el valor cdrom, borrando el otro, al reiniciar, el mismo problema.

Porque?, porque esto lo controla udev, el cual lee /etc/udev/rules.d/70-persistent-cd.rules y en base a ello, añade el symlink.

El error o bug, es que el contenido del archivo original es este:


# 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.


# DVDRAM_GU10N (pci-0000:00:1f.2-scsi-1:0:0:0)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-1:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-1:0:0:0", SYMLINK+="cdrw", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-1:0:0:0", SYMLINK+="dvd", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-1:0:0:0", SYMLINK+="dvdrw", ENV{GENERATED}="1"


# DVDRAM_GSA-U10N (pci-0000:00:1f.1-scsi-0:0:0:0)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-0:0:0:0", SYMLINK+="cdrom1", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-0:0:0:0", SYMLINK+="cdrw1", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-0:0:0:0", SYMLINK+="dvd1", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.1-scsi-0:0:0:0", SYMLINK+="dvdrw1", ENV{GENERATED}="1"


# DVDRAM_GU10N (pci-0000:00:1f.2-scsi-0:0:0:0)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-0:0:0:0", SYMLINK+="cdrom2", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-0:0:0:0", SYMLINK+="cdrw2", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-0:0:0:0", SYMLINK+="dvd2", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:1f.2-scsi-0:0:0:0", SYMLINK+="dvdrw2", ENV{GENERATED}="1"



Que sucede con esto, al leer udev, observa que el ultimo existente es cdrom2 y lo crea nuevamente con cada reinicio, por eso se llaman reglas persistentes.

Como es arregla?, facil, solo debemos comentar todas las lineas, es decir, añadir un # delante de cada linea, asi quedaria como "vacio", y crea cdrom como unica y primera unidad al detectarla en el inicio.
Seguro fue un bug de empaquetado, dado que al hacer esto, no sucede nunca mas, bueno, ahora tenemos un bug menos.

No hay comentarios:

Publicar un comentario

Dejá tu comentario