Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da phobos3576 »

cymon ha scritto:Ottima intuizione, anch'io sono su 11 e se siamo gli unici ad aver rilevato questa anomalia è probabile che il problema sia quello... farò qualche esperimento, ma phobos, se hai notizie racconta eh!
Il package più recente è udev-116-i486-1 per Slackware 12; bisogna vedere se è compatibile con Slackware 11.

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da nuitari »

Si è sicuramente un problema di udev.
Questi sono i miei file *pertinenti*

file: /etc/udev/rules.d/50-udev.rules (solo le parti utili)

Codice: Seleziona tutto

# permissions for SCSI sg/tape devices
SUBSYSTEMS=="scsi", KERNEL=="s[gt][0-9]*", ATTRS{type}=="5", NAME="%k", GROUP="cdrom", MODE="0660"

# import optical drive properties and set CD partitions
KERNEL=="scd[a-z]|sr[0-9]*|hd[a-z]|pcd[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
ENV{ID_CDROM}=="?*", NAME="%k", GROUP="cdrom", MODE="0660", RUN+="cdrom-symlinks.sh %k"

# packet devices
KERNEL=="pktcdvd",              NAME="pktcdvd/control", GROUP="cdrom", MODE="0660"
KERNEL=="pktcdvd[0-9]*",        NAME="pktcdvd/pktcdvd%n", GROUP="cdrom", MODE="0660"

# put all removable devices in group "plugdev"
KERNEL=="hd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
KERNEL=="sd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
KERNEL=="sd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
file /lib/udev/cdrom-symlinks.sh (completo)

Codice: Seleziona tutto

#!/bin/sh
DEVNAME="$1"
TESTNAME="cdrom.$RANDOM"

. /etc/udev/udev.conf

LOCKFILE="${udev_root}cdrom-lockfile"
PERM_RULES="${udev_rules}/75-optical-devices.rules"
TEMP_RULES="${udev_root}75-optical-devices.rules"

getlock() {
        until ( mkdir $LOCKFILE ) 2>/dev/null
        do
           sleep 1
        done
}

givelock() {
        if [ -e $LOCKFILE ]; then
                rm -rf $LOCKFILE
        fi
}

checkrules() {
        if grep "$1" ${udev_rules}/*.rules &>/dev/null ; then
                return 0
        fi
        if grep "$1" ${udev_root}/*.rules &>/dev/null ; then
                return 0
        fi
        return 1
}

testwrite() {
        if ln -s /dev/null ${udev_rules}/$TESTNAME 2>/dev/null ; then
                rm -rf ${udev_rules}/$TESTNAME
                RW=1
                if [ -e $TEMP_RULES ]; then
                        mv $TEMP_RULES $PERM_RULES
                fi
                UDEV_RULES="$PERM_RULES"
        else
                if [ -e $PERM_RULES ] && [ ! -e $TEMP_RULES ]; then
                        cp $PERM_RULES $TEMP_RULES
                fi
                UDEV_RULES="$TEMP_RULES"
        fi
}

write_cd_rule() {
        if [ -n "$2" ]; then
                LINK=${1}${2}
                echo "${MATCH_RULE}, SYMLINK+=\"${LINK}\"" >> $UDEV_RULES
                if ! [ -e ${udev_root}${LINK} ]; then
                        ln -s ${udev_root}${DEVNAME} ${udev_root}${LINK} 2>/dev/null
                fi
                if ! checkrules "SYMLINK+=\"$1\"" ; then
                        write_cd_rule $1
                fi
        else
                LINK=${1}
                echo "${MATCH_RULE}, SYMLINK+=\"${LINK}\"" >> $UDEV_RULES
                if ! [ -e ${udev_root}${LINK} ]; then
                        ln -s ${udev_root}${DEVNAME} ${udev_root}/${LINK} 2>/dev/null
                fi
        fi
}

if [ -z "$DEVPATH" ]; then
        echo "Missing \$DEVPATH." >&2
        exit 1
fi

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

case "$ID_BUS" in
        usb|ieee1394)
                if [ "$ID_SERIAL" ]; then
                        MATCH_RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
                elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
                        MATCH_RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
                else
                        exit 1
                fi
        ;;
        *)
                MATCH_RULE="ENV{ID_PATH}==\"$ID_PATH\""
        ;;
esac

getlock

if ! checkrules "$MATCH_RULE" ; then
        MATCH_RULE="ENV{ID_CDROM}==\"?*\", $MATCH_RULE"
        # Test if the root filesystem is mounted RW
        testwrite

        if ! [ -e $UDEV_RULES ]; then
                echo "# Local optical devices rules to make links to your
# optical devices
#
# These rules were generated by cdrom-symlinks.sh, but you
# can customize them.
#
# You may edit them as needed.
# (If, for example, your machine has more than one CD or
# DVD drive and you need to be sure they will always be
# given the same symlinks.)
#
# If you delete this file, /lib/udev/cdrom-symlinks.sh will
# try to generate it again the next time udev is started.
" > $UDEV_RULES
        fi

        if checkrules "\"cdrom0\"" ; then
                NUMBER=`grep -c "SYMLINK+=\"cdrom.\"" $UDEV_RULES`
                while [ `grep -c "\"cdrom${NUMBER}\"" \
                         $UDEV_RULES` -ne 0 ]; do
                        NUMBER=$(($NUMBER+1))
                done
        else
                NUMBER="0"
        fi


        write_cd_rule cdrom $NUMBER

        if [ "$ID_CDROM_DVD" ]; then
                write_cd_rule dvd $NUMBER
                if [ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ]; then
                        write_cd_rule dvdrw $NUMBER
                        write_cd_rule dvdwriter $NUMBER
                fi
        fi

        if [ "$ID_CDROM_CD_R" ]; then
                write_cd_rule cdr $NUMBER
                if [ "$ID_CDROM_CD_RW" ]; then
                        write_cd_rule cdrw $NUMBER
                        write_cd_rule cdwriter $NUMBER
                        if ! checkrules "\"writer\"" ; then
                                write_cd_rule writer
                        fi
                fi
        fi
fi

givelock

exit 0
file: /etc/udev/rules.d/75-optical-devices.rules (completo, viene generato)

Codice: Seleziona tutto

# Local optical devices rules to make links to your
# optical devices
#
# These rules were generated by cdrom-symlinks.sh, but you
# can customize them.
#
# You may edit them as needed.
# (If, for example, your machine has more than one CD or
# DVD drive and you need to be sure they will always be
# given the same symlinks.)
#
# If you delete this file, /lib/udev/cdrom-symlinks.sh will
# try to generate it again the next time udev is started.

ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdrom0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdrom"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvd0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvd"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvdrw0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvdrw"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvdwriter0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="dvdwriter"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdr0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdr"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdrw0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdrw"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdwriter0"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="cdwriter"
ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:08.0-ide-1:0", SYMLINK+="writer"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="cdrom1"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="dvd1"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="dvdrw1"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="dvdwriter1"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="cdr1"
ENV{ID_CDROM}=="?*", ENV{ID_SERIAL}=="TSSTcorp_USB_Mass_Storage_Device_SATAHH00000000004e6", SYMLINK+="cdrw1"
Il file /etc/udev/rules.d/75-optical-devices.rules viene generato automaticamente dal file /lib/udev/cdrom-symlinks.sh.
Ipotizzo che voi abbiate questa struttura (od una struttura analoga) anche sull'11, ma magari cambiando kernel drasticamente cambia molto anche il modo in cui viene rilevato l'hardware al punto da invalidare il *vecchio* file (sempre nel reame delle ipotesi). Proverei, se fossi in voi, a eliminarlo (o a spostarlo altrove per backup), a riavviare udev (/etc/rc.d/rc.udev restart) e a vedere che succede.

Spero vi sia utile.

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da phobos3576 »

Confrontando i file di nuitari con quelli che ho io posso notare che esistono notevoli differenze; inoltre, nel mio caso non è presente nemmeno il file /etc/udev/rules.d/75-optical-devices.rules (che non viene neanche generato).

Sicuramente il problema è legato alla mia vecchia versione di udev, ma non mi azzardo nemmeno ad installare la nuova versione perché già in passato ho avuto seri problemi; in effetti, come molti sanno, le versioni di udev compilate da Pat sono associate ad una specifica distribuzione Slackware ed è vivamente sconsigliato passare a delle nuove versioni non compilate (e configurate) espressamente per quella distribuzione stessa!

Avatar utente
cymon
Linux 2.x
Linux 2.x
Messaggi: 430
Iscritto il: ven 5 gen 2007, 1:40
Slackware: 13.1
Kernel: 2.6.33.4-smp
Desktop: Fluxbox
Località: Milano
Contatta:

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da cymon »

Ma quindi per aggirare il problema il link simbolico si può creare a mano o questa soluzione può fare un qualche tipo di danno? Qual è il punto migliore per inserire il comando, nel caso si possa? rc.local?

Sarei comunque curioso di capire cosa ha effettivamente portato a quest'anomalia. Sfortunatamente non conosco quasi niente di udev (ho solo una moderata conoscenza di cosa fa), ma secondo voi è possibile che configurando una regola opportuna, al momento non presente nelle nostre configurazioni, si possa rimettere la cosa a posto in maniera pulita?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da conraid »

cymon ha scritto:Ma quindi per aggirare il problema il link simbolico si può creare a mano o questa soluzione può fare un qualche tipo di danno? Qual è il punto migliore per inserire il comando, nel caso si possa? rc.local?

Sarei comunque curioso di capire cosa ha effettivamente portato a quest'anomalia. Sfortunatamente non conosco quasi niente di udev (ho solo una moderata conoscenza di cosa fa), ma secondo voi è possibile che configurando una regola opportuna, al momento non presente nelle nostre configurazioni, si possa rimettere la cosa a posto in maniera pulita?
Probabilmente nella 11 ci sono regole di udev che scozzano con qualche opzione del kernel.
dovresti fare delle prove con le nuove regole per cd, etc...

anche in current i file sono diversi da quelli indicati da nuitari, ma a volte per esempio vanno modificate.
Io per lo scanner mi faccio delle regole mia, non bisogna aver paura di provare. Certo, nei limiti del sapere che questo può far danno e questo al limite non far andare qualcosa.
Ma modificare delle regole per caricare i CD-ROM, dopo aver fatto un backup delle vecchie danni non ne fa.

Sul punto migliore del tuo metodo, direi che rc.local va bene, ma togli ogni rifimento a /dev/cdrom e simili negli altri file di init e in fstab

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da phobos3576 »

conraid ha scritto:Sul punto migliore del tuo metodo, direi che rc.local va bene, ma togli ogni rifimento a /dev/cdrom e simili negli altri file di init e in fstab
Ho usato pure io /etc/rc.d/rc.local, mentre in fstab ho solo riferimenti a /dev/hdc e /dev/hdd.

I vari link simbolici come /dev/cdrom, /dev/dvd, etc, servono solo ai vari player come xine, kaffeine & C.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da robbybby »

Io sto usando il kernel 2.6.24 su Slack 11 e non ho nessun problema.
Uso i driver SATA/PATA, con due hard disk sata, e due masterizzatori IDE, e un hard disk IDE. I device ci ssono tutti correttamente:
sda, sdb i due hd sata
sdc l'hd ide
sr0, sr1 i due masterizzatori

Il .config e' quello del 2.6.23.x, riciclato non make oldconfig.
E' un po' (circa un anno, da quando, cioe', ho cambiato mother board, e quella nuova ha i dischi sata) che sono passato dal vecchio layer IDE, al nuovo pata, anche per i dischi ide.

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Kernel 2.6.24: niente /dev/cdrom, /dev/dvd, etc

Messaggio da nuitari »

Domanda: avete compilato il supporto a sysfs e montato sysfs correttamente?

Secondo me o non avete sysfs, o è solo cambiato il modo in cui il kernel rileva i devices, per cui i *nomi* o le *proprietà* di sysfs non matchano più le regole di UDEV che avete.

IMHO, previo backup dei file, potreste provare a modificare le regole di udev ispirandovi ai file che vi ho postato.
comunque, sotto /usr/doc/udev-VERSIONE/docs c'è tutto l'help di cui avete bisogno.

Rispondi