Anzeige:
Ergebnis 1 bis 4 von 4

Thema: HD unter USB nur ro mounten? suse 10.1

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jun 2005
    Beiträge
    413

    HD unter USB nur ro mounten? suse 10.1

    Hi,

    ich habe Opensuse 10.1. Dazu noch einen HDD-USB-Adapter. Defaultmäßig wird die HD im rw-mode eingehängt.
    Wo finde ich docs über das Verhalten, bzw. wie kann ich den Mechanismus veränderen, dass eine HD nur ro gemounted wird?

    Danke,
    Chris

  2. #2
    Bastard User From Hell Avatar von kreol
    Registriert seit
    Oct 2004
    Beiträge
    7.971
    Das sollte über die udev-rules zu bewerkstelligen sein. In anderem Zusammenhang wird es hier beschrieben, das sollte aber übertragbar sein. Eine ausfühliche Beschreibung mit weiterführenden Links findet sich hier.


    Kreol
    Beim posten von Dateien oder Ausgaben bitte [code]Text[/code] verwenden. Nähere Info über vB-Tags gibt es hier

    I just want to know God's thoughts. The rest are details. (A. Einstein)

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jun 2005
    Beiträge
    413

    Suche wo HD gemountet wird in udev, opensuse 10.1

    Also, ich komme nicht weiter. Habe irgendwo ein Verständnisproblem.

    Ziel: Suche Stelle in udev Regeln (/dev/udev/rules.d) wo disk eingebunden wird, damit ich mit MODE="0444" die Disks nur lesend einbinde.

    Um udev zu verstehen, hänge ich die HD einmal rein und extrahiere infos:
    Code:
    udevinfo -a -p /sys/block/sde
    
    udevinfo starts with the device the node belongs to and then walks up the
    device chain, to print for every device found, all possibly useful attributes
    in the udev key format.
    Only attributes within one device section may be used together in one rule,
    to match the device for which the node will be created.
    
      looking at device '/block/sde':
        KERNEL=="sde"
        SUBSYSTEM=="block"
        SYSFS{stat}=="      46       88     1066      152        6        2       64       32        0      160      184"
        SYSFS{size}=="312581808"
        SYSFS{removable}=="0"
        SYSFS{range}=="16"
        SYSFS{dev}=="8:64"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12/target12:0:0/12:0:0:0':
        ID=="12:0:0:0"
        BUS=="scsi"
        DRIVER=="sd"
        SYSFS{ioerr_cnt}=="0x0"
        SYSFS{iodone_cnt}=="0x3b"
        SYSFS{iorequest_cnt}=="0x3b"
        SYSFS{iocounterbits}=="32"
        SYSFS{timeout}=="60"
        SYSFS{state}=="running"
        SYSFS{rev}=="0-31"
        SYSFS{model}=="J10WA10668      "
        SYSFS{vendor}=="SAMSUNG "
        SYSFS{scsi_level}=="3"
        SYSFS{type}=="0"
        SYSFS{queue_type}=="none"
        SYSFS{queue_depth}=="1"
        SYSFS{device_blocked}=="0"
        SYSFS{max_sectors}=="240"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12/target12:0:0':
        ID=="target12:0:0"
        BUS==""
        DRIVER==""
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12':
        ID=="host12"
        BUS==""
        DRIVER==""
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0':
        ID=="5-5:1.0"
        BUS=="usb"
        DRIVER=="usb-storage"
        SYSFS{interface}=="MSC Bulk-Only Transfer"
        SYSFS{modalias}=="usb:v152Dp2338d0100dc00dsc00dp00ic08isc06ip50"
        SYSFS{bInterfaceProtocol}=="50"
        SYSFS{bInterfaceSubClass}=="06"
        SYSFS{bInterfaceClass}=="08"
        SYSFS{bNumEndpoints}=="02"
        SYSFS{bAlternateSetting}==" 0"
        SYSFS{bInterfaceNumber}=="00"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5':
        ID=="5-5"
        BUS=="usb"
        DRIVER=="usb"
        SYSFS{configuration}=="USB Mass Storage"
        SYSFS{serial}=="A10668222222"
        SYSFS{product}=="USB to ATA/ATAPI Bridge"
        SYSFS{manufacturer}=="JMicron"
        SYSFS{maxchild}=="0"
        SYSFS{version}==" 2.00"
        SYSFS{devnum}=="15"
        SYSFS{speed}=="480"
        SYSFS{bMaxPacketSize0}=="64"
        SYSFS{bNumConfigurations}=="1"
        SYSFS{bDeviceProtocol}=="00"
        SYSFS{bDeviceSubClass}=="00"
        SYSFS{bDeviceClass}=="00"
        SYSFS{bcdDevice}=="0100"
        SYSFS{idProduct}=="2338"
        SYSFS{idVendor}=="152d"
        SYSFS{bMaxPower}=="  2mA"
        SYSFS{bmAttributes}=="c0"
        SYSFS{bConfigurationValue}=="1"
        SYSFS{bNumInterfaces}==" 1"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5':
        ID=="usb5"
        BUS=="usb"
        DRIVER=="usb"
        SYSFS{configuration}==""
        SYSFS{serial}=="0000:00:10.4"
        SYSFS{product}=="EHCI Host Controller"
        SYSFS{manufacturer}=="Linux 2.6.16.27-0.9-default ehci_hcd"
        SYSFS{maxchild}=="8"
        SYSFS{version}==" 2.00"
        SYSFS{devnum}=="1"
        SYSFS{speed}=="480"
        SYSFS{bMaxPacketSize0}=="64"
        SYSFS{bNumConfigurations}=="1"
        SYSFS{bDeviceProtocol}=="01"
        SYSFS{bDeviceSubClass}=="00"
        SYSFS{bDeviceClass}=="09"
        SYSFS{bcdDevice}=="0206"
        SYSFS{idProduct}=="0000"
        SYSFS{idVendor}=="0000"
        SYSFS{bMaxPower}=="  0mA"
        SYSFS{bmAttributes}=="c0"
        SYSFS{bConfigurationValue}=="1"
        SYSFS{bNumInterfaces}==" 1"
    
      looking at device '/devices/pci0000:00/0000:00:10.4':
        ID=="0000:00:10.4"
        BUS=="pci"
        DRIVER=="ehci_hcd"
        SYSFS{modalias}=="pci:v00001106d00003104sv00001462sd00007020bc0Csc03i20"
        SYSFS{local_cpus}=="1"
        SYSFS{irq}=="145"
        SYSFS{class}=="0x0c0320"
        SYSFS{subsystem_device}=="0x7020"
        SYSFS{subsystem_vendor}=="0x1462"
        SYSFS{device}=="0x3104"
        SYSFS{vendor}=="0x1106"
    
      looking at device '/devices/pci0000:00':
        ID=="pci0000:00"
        BUS==""
        DRIVER==""
    bzw.
    Code:
    udevinfo -a -p /sys/block/sde/sde1
    
    udevinfo starts with the device the node belongs to and then walks up the
    device chain, to print for every device found, all possibly useful attributes
    in the udev key format.
    Only attributes within one device section may be used together in one rule,
    to match the device for which the node will be created.
    
      looking at device '/block/sde/sde1':
        KERNEL=="sde1"
        SUBSYSTEM=="block"
        SYSFS{stat}=="      85      674        8       64"
        SYSFS{size}=="66043152"
        SYSFS{start}=="63"
        SYSFS{dev}=="8:65"
    
      looking at device '/block/sde':
        ID=="sde"
        BUS=="block"
        DRIVER==""
        SYSFS{stat}=="      46       88     1066      152        6        2       64       32        0      160      184"
        SYSFS{size}=="312581808"
        SYSFS{removable}=="0"
        SYSFS{range}=="16"
        SYSFS{dev}=="8:64"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12/target12:0:0/12:0:0:0':
        ID=="12:0:0:0"
        BUS=="scsi"
        DRIVER=="sd"
        SYSFS{ioerr_cnt}=="0x0"
        SYSFS{iodone_cnt}=="0x3b"
        SYSFS{iorequest_cnt}=="0x3b"
        SYSFS{iocounterbits}=="32"
        SYSFS{timeout}=="60"
        SYSFS{state}=="running"
        SYSFS{rev}=="0-31"
        SYSFS{model}=="J10WA10668      "
        SYSFS{vendor}=="SAMSUNG "
        SYSFS{scsi_level}=="3"
        SYSFS{type}=="0"
        SYSFS{queue_type}=="none"
        SYSFS{queue_depth}=="1"
        SYSFS{device_blocked}=="0"
        SYSFS{max_sectors}=="240"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12/target12:0:0':
        ID=="target12:0:0"
        BUS==""
        DRIVER==""
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0/host12':
        ID=="host12"
        BUS==""
        DRIVER==""
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5/5-5:1.0':
        ID=="5-5:1.0"
        BUS=="usb"
        DRIVER=="usb-storage"
        SYSFS{interface}=="MSC Bulk-Only Transfer"
        SYSFS{modalias}=="usb:v152Dp2338d0100dc00dsc00dp00ic08isc06ip50"
        SYSFS{bInterfaceProtocol}=="50"
        SYSFS{bInterfaceSubClass}=="06"
        SYSFS{bInterfaceClass}=="08"
        SYSFS{bNumEndpoints}=="02"
        SYSFS{bAlternateSetting}==" 0"
        SYSFS{bInterfaceNumber}=="00"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5/5-5':
        ID=="5-5"
        BUS=="usb"
        DRIVER=="usb"
        SYSFS{configuration}=="USB Mass Storage"
        SYSFS{serial}=="A10668222222"
        SYSFS{product}=="USB to ATA/ATAPI Bridge"
        SYSFS{manufacturer}=="JMicron"
        SYSFS{maxchild}=="0"
        SYSFS{version}==" 2.00"
        SYSFS{devnum}=="15"
        SYSFS{speed}=="480"
        SYSFS{bMaxPacketSize0}=="64"
        SYSFS{bNumConfigurations}=="1"
        SYSFS{bDeviceProtocol}=="00"
        SYSFS{bDeviceSubClass}=="00"
        SYSFS{bDeviceClass}=="00"
        SYSFS{bcdDevice}=="0100"
        SYSFS{idProduct}=="2338"
        SYSFS{idVendor}=="152d"
        SYSFS{bMaxPower}=="  2mA"
        SYSFS{bmAttributes}=="c0"
        SYSFS{bConfigurationValue}=="1"
        SYSFS{bNumInterfaces}==" 1"
    
      looking at device '/devices/pci0000:00/0000:00:10.4/usb5':
        ID=="usb5"
        BUS=="usb"
        DRIVER=="usb"
        SYSFS{configuration}==""
        SYSFS{serial}=="0000:00:10.4"
        SYSFS{product}=="EHCI Host Controller"
        SYSFS{manufacturer}=="Linux 2.6.16.27-0.9-default ehci_hcd"
        SYSFS{maxchild}=="8"
        SYSFS{version}==" 2.00"
        SYSFS{devnum}=="1"
        SYSFS{speed}=="480"
        SYSFS{bMaxPacketSize0}=="64"
        SYSFS{bNumConfigurations}=="1"
        SYSFS{bDeviceProtocol}=="01"
        SYSFS{bDeviceSubClass}=="00"
        SYSFS{bDeviceClass}=="09"
        SYSFS{bcdDevice}=="0206"
        SYSFS{idProduct}=="0000"
        SYSFS{idVendor}=="0000"
        SYSFS{bMaxPower}=="  0mA"
        SYSFS{bmAttributes}=="c0"
        SYSFS{bConfigurationValue}=="1"
        SYSFS{bNumInterfaces}==" 1"
    
      looking at device '/devices/pci0000:00/0000:00:10.4':
        ID=="0000:00:10.4"
        BUS=="pci"
        DRIVER=="ehci_hcd"
        SYSFS{modalias}=="pci:v00001106d00003104sv00001462sd00007020bc0Csc03i20"
        SYSFS{local_cpus}=="1"
        SYSFS{irq}=="145"
        SYSFS{class}=="0x0c0320"
        SYSFS{subsystem_device}=="0x7020"
        SYSFS{subsystem_vendor}=="0x1462"
        SYSFS{device}=="0x3104"
        SYSFS{vendor}=="0x1106"
    
      looking at device '/devices/pci0000:00':
        ID=="pci0000:00"
        BUS==""
        DRIVER==""
    In den Regeln wird nach verschiedenen Werten gesucht, meistens KERNEL und SUBSYSTEM. Für die Übersichtlichkeit hier noch die Werte der HD:
    Code:
    grep SUBSYSTEM udev-myhdd
        SUBSYSTEM=="block"
        SUBSYSTEM=="block"
    Code:
    grep KERNEL udev-myhdd
        KERNEL=="sde1"
        KERNEL=="sde"
    Es kommen nur zwei Regel-Dateien aus /etc/udev/rules.d in Frage:
    Code:
    05-udev-early.rules
    29-net_trigger_firmware.rules
    30-net_persistent_names.rules
    31-network.rules
    40-alsa.rules
    40-bluetooth.rules
    45-isdn.rules
    50-udev-default.rules
    51-lirc.rules
    56-idedma.rules
    60-persistent-input.rules
    60-persistent-storage.rules
    64-device-mapper.rules
    65-cdrom.rules
    80-sysconfig.rules
    85-mount-fstab.rules
    90-hal.rules
    95-udev-late.rules
    und das sind 50-udev-default.rules und 60-persistent-storage.rules.

    Im Berich für die Block-Devices (50-udev-default.rules)
    Code:
    # console
    KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty", MODE="666", OPTIONS="last_rule"
    KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty", MODE="666", OPTIONS="last_rule"
    KERNEL=="vcs*",                 NAME="%k", GROUP="tty", MODE="620", OPTIONS="last_rule"
    KERNEL=="vcsa*",                NAME="%k", GROUP="tty", MODE="620", OPTIONS="last_rule"
    KERNEL=="tty",                  NAME="%k", GROUP="tty", MODE="666", OPTIONS="last_rule"
    KERNEL=="tty[0-9]*",            NAME="%k", GROUP="tty", MODE="620", OPTIONS="last_rule"
    KERNEL=="console",              NAME="%k", MODE="600", OPTIONS="last_rule"
    KERNEL=="ptmx",                 NAME="%k", GROUP="tty", MODE="666", OPTIONS="last_rule"
    
    # serial devices
    KERNEL=="tty[A-Z]*",            NAME="%k", GROUP="uucp"
    KERNEL=="pppox*",               NAME="%k", GROUP="uucp"
    KERNEL=="ircomm*",              NAME="%k", GROUP="uucp"
    KERNEL=="modems/mwave*",        NAME="%k", GROUP="uucp"
    KERNEL=="hvc*",                 NAME="%k", GROUP="uucp"
    KERNEL=="hvsi*",                NAME="%k", GROUP="uucp"
    KERNEL=="iseries/vtty*",        NAME="%k", GROUP="uucp"
    KERNEL=="ttyUSB*", SYSFS{product}=="[Pp]alm*Handheld*", SYMLINK+="pilot"
    KERNEL=="ttyUSB*", SYSFS{product}=="[Hh]andspring*Treo*|[Hh]andspring*Visor*", SYMLINK+="pilot"
    
    # video/graphics
    SUBSYSTEM=="video4linux",       GROUP="video"
    SUBSYSTEM=="graphics"           GROUP="video"
    KERNEL=="vtx*",                 NAME="%k", GROUP="video"
    KERNEL=="vbi*",                 NAME="%k", GROUP="video"
    KERNEL=="winradio*",            NAME="%k", GROUP="video"
    KERNEL=="vttuner*",             NAME="%k", GROUP="video"
    KERNEL=="nvidia*",              NAME="%k", GROUP="video"
    KERNEL=="nvidiactl*",           NAME="%k", GROUP="video"
    KERNEL=="video0",               SYMLINK+="video"
    KERNEL=="radio0",               SYMLINK+="radio"
    KERNEL=="vbi0",                 SYMLINK+="vbi"
    KERNEL=="pmu",                  GROUP="video"
    
    # dvb
    SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"
    
    # input devices
    KERNEL=="mice",                 NAME="input/%k", MODE="0640"
    KERNEL=="mouse*",               NAME="input/%k", MODE="0640"
    KERNEL=="event*",               NAME="input/%k", MODE="0640"
    KERNEL=="js*",                  NAME="input/%k", MODE="0644"
    KERNEL=="ts*",                  NAME="input/%k", MODE="0600"
    KERNEL=="uinput",               NAME="input/%k", MODE="0600"
    KERNEL=="lirc0",                NAME="%k", SYMLINK+="lirc"
    
    # printer
    SUBSYSTEM=="usb",               KERNEL=="lp*", NAME="usb/%k", SYMLINK+="usb%k", GROUP="lp"
    SUBSYSTEM=="printer",           KERNEL=="lp*", NAME="%k", GROUP="lp"
    KERNEL=="irlpt*",               NAME="%k", GROUP="lp"
    
    # cpu devices
    KERNEL=="cpu[0-9]*",            NAME="cpu/%n/cpuid"
    KERNEL=="msr[0-9]*",            NAME="cpu/%n/msr"
    KERNEL=="microcode",            NAME="cpu/microcode", MODE="0600"
    
    # IEEE1394 devices
    KERNEL=="raw1394*",             NAME="%k", GROUP="video"
    KERNEL=="dv1394*",              NAME="%k", SYMLINK+="dv1394/%n", GROUP="video"
    KERNEL=="video1394*",           NAME="%k", SYMLINK+="video1394/%n", GROUP="video"
    
    # 183 = /dev/hwrng        Generic random number generator
    KERNEL=="hw_random",            NAME="hwrng", SYMLINK+="%k"
    # 219 /dev/modems/mwave MWave modem firmware upload
    KERNEL=="mwave",                NAME="modems/%k"
    # 169 /dev/specialix_rioctl Specialix RIO serial control
    KERNEL=="rioctl",               NAME="specialix_rioctl", SYMLINK+="%k"
    # 167 /dev/specialix_sxctl Specialix serial control
    KERNEL=="sxctl",                NAME="specialix_sxctl", SYMLINK+="%k"
    
    # network
    KERNEL=="tun", NAME="net/%k", MODE="0600"
    
    # misc devices
    KERNEL=="mem",                  NAME="%k", GROUP="kmem", MODE="640"
    KERNEL=="kmem",                 NAME="%k", GROUP="kmem", MODE="640"
    KERNEL=="port",                 NAME="%k", GROUP="kmem", MODE="640"
    KERNEL=="nvram",                NAME="%k", GROUP="kmem", MODE="600"
    KERNEL=="null",                 NAME="%k", MODE="666"
    KERNEL=="zero",                 NAME="%k", MODE="666"
    KERNEL=="full",                 NAME="%k", MODE="622"
    KERNEL=="random",               NAME="%k", MODE="666"
    KERNEL=="urandom",              NAME="%k", MODE="644"
    KERNEL=="rtc",                  MODE="600"
    KERNEL=="sonypi",               MODE="0666"
    KERNEL=="agpgart",              MODE="0600", GROUP="video"
    KERNEL=="djs*",                 NAME="%k", MODE="644"
    KERNEL=="sgi_*",                NAME="%k", MODE="666"
    KERNEL=="rrom*",                NAME="%k", MODE="400"
    KERNEL=="rflash*",              NAME="%k", MODE="400"
    KERNEL=="usbscanner*",          NAME="%k", MODE="644"
    KERNEL=="3270/ttycons*",        NAME="%k", MODE="600"
    KERNEL=="3270/tub*",            NAME="%k", MODE="666"
    KERNEL=="3270/tubcons*",        NAME="%k", MODE="600"
    KERNEL=="ica",                  NAME="%k", MODE="666"
    KERNEL=="z90crypt",             NAME="%k", MODE="666"
    KERNEL=="mmtimer",              NAME="%k", MODE="644"
    KERNEL=="auer[0-9]*"            NAME="usb/%k"
    
    # packet writing interface
    KERNEL=="pktcdvd",              NAME="pktcdvd/control"
    KERNEL=="pktcdvd[0-9]*",        NAME="pktcdvd/%k"
    
    # fix floppy devices
    KERNEL=="nvram", ACTION=="add", RUN+="load_floppy_module.sh"
    KERNEL=="fd[0-9]*", ACTION=="add", SYSFS{cmos}=="*", RUN+="create_floppy_devices -c -t $sysfs{cmos} -m %M /dev/%k"
    KERNEL=="fd[0-9]*", ACTION=="remove", RUN+="/bin/rm -f $root/%k*"
    
    # block devices
    SUBSYSTEM=="block", GROUP="disk", MODE="0640"
    
    # sd:           0 TYPE_DISK, 7 TYPE_MOD, 14 TYPE_RBC
    # sr:           4 TYPE_WORM, 5 TYPE_ROM
    # st/osst:      1 TYPE_TAPE
    ACTION=="add", SUBSYSTEM=="scsi" , SYSFS{type}=="0|7|14", RUN+="/bin/sh -c 'echo 60 > /sys$$DEVPATH/timeout'"
    ACTION=="add", SUBSYSTEM=="scsi" , SYSFS{type}=="1", RUN+="/bin/sh -c 'echo 900 > /sys$$DEVPATH/timeout'"
    SUBSYSTEM=="scsi_device", ACTION=="add", SYSFS{type}=="0|7|14", RUN+="/sbin/modprobe sd_mod"
    SUBSYSTEM=="scsi_device", ACTION=="add", SYSFS{type}=="1", SYSFS{vendor}=="On[sS]tream", RUN+="/sbin/modprobe osst"
    SUBSYSTEM=="scsi_device", ACTION=="add", SYSFS{type}=="1", RUN+="/sbin/modprobe st"
    SUBSYSTEM=="scsi_device", ACTION=="add", SYSFS{type}=="[45]", RUN+="/sbin/modprobe sr_mod"
    SUBSYSTEM=="scsi_device", ACTION=="add", RUN+="/sbin/modprobe sg"
    
    # device mapper
    KERNEL=="device-mapper", NAME="%k", SYMLINK+="mapper/control"
    
    # misc storage devices (non-block)
    KERNEL=="sg*",                  NAME="%k", GROUP="disk", MODE="640"
    KERNEL=="st*",                  NAME="%k", GROUP="disk"
    KERNEL=="nst*",                 NAME="%k", GROUP="disk"
    KERNEL=="initrd",               NAME="%k", GROUP="disk"
    KERNEL=="qft*",                 NAME="%k", GROUP="disk"
    KERNEL=="nqft*",                NAME="%k", GROUP="disk"
    KERNEL=="zqft*",                NAME="%k", GROUP="disk"
    KERNEL=="nzqft*",               NAME="%k", GROUP="disk"
    KERNEL=="rawqft*",              NAME="%k", GROUP="disk"
    KERNEL=="nrawqft*",             NAME="%k", GROUP="disk"
    KERNEL=="pf*",                  NAME="%k", GROUP="disk"
    KERNEL=="sch*",                 NAME="%k", GROUP="disk"
    KERNEL=="pt*",                  NAME="%k", GROUP="disk"
    KERNEL=="npt*",                 NAME="%k", GROUP="disk"
    KERNEL=="pg*",                  NAME="%k", GROUP="disk"
    KERNEL=="evms/block_device*",   NAME="%k", GROUP="disk"
    KERNEL=="rawctl*",              NAME="raw/%k", GROUP="disk"
    KERNEL=="raw[0-9]*",            NAME="raw/%k", GROUP="disk"
    KERNEL=="osst*",                NAME="%k", GROUP="disk"
    KERNEL=="nosst*",               NAME="%k", GROUP="disk"
    KERNEL=="iseries/vt*",          NAME="%k", GROUP="disk"
    KERNEL=="iseries/nvt*",         NAME="%k", GROUP="disk"
    KERNEL=="iseries/ibmsis*",      NAME="%k", GROUP="disk"
    
    # libusb device access
    SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", MODE="0644"
    
    # kernel firmware loader
    SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh"
    wird modeprobe sd_mod gestartet (SYSFS{type}=="0"), sonst sehe ich keine Aktion.
    In der 60-persistent-storage.rules finde ich auch keinen Hinweis:
    Code:
    # persistent storage links: /dev/{disk,tape}/{by-id,by-uuid,by-label,by-path,by-name}
    # scheme based on "Linux persistent device names", 2004, Hannes Reinecke <hare@suse.de>
    
    ACTION!="add", GOTO="persistent_storage_end"
    SUBSYSTEM!="block", GOTO="persistent_storage_end"
    
    # skip rules for inappropriate block devices
    KERNEL=="ram*|loop*|fd*|nbd*|dm-*", GOTO="persistent_storage_end"
    
    # never access removable ide devices, the drivers are causing event loops on open()
    KERNEL=="hd*[!0-9]", SYSFS{removable}=="1", DRIVER=="ide-cs|ide-floppy", GOTO="persistent_storage_end"
    KERNEL=="hd*[0-9]", SYSFS{../removable}=="1", GOTO="persistent_storage_end"
    
    # for partitions import parent information
    KERNEL=="*[0-9]", IMPORT{parent}=="ID_*"
    
    # by-id (hardware serial number)
    KERNEL=="hd*[!0-9]", IMPORT{program}="/sbin/ata_id --export $tempnode"
    KERNEL=="hd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}"
    KERNEL=="hd*[0-9]", IMPORT{parent}=="ID_*", SYMLINK+="disk/by-id/ata-$env{ID_MODEL}_$env{ID_SERIAL}-part%n"
    
    KERNEL=="sd*[!0-9]|sr*|st*", SYSFS{ieee1394_id}=="*", ENV{ID_SERIAL}="$sysfs{ieee1394_id}", ENV{ID_BUS}="ieee1394"
    KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="/sbin/usb_id -x"
    KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="/sbin/scsi_id -g -x -s %p -d $tempnode"
    KERNEL=="sd*[!0-9]|sr*|st*", ENV{ID_SERIAL}=="", IMPORT{program}="/sbin/scsi_id -g -x -a -s %p -d $tempnode"
    KERNEL=="dasd*[!0-9]", IMPORT{program}="/sbin/dasd_id --export $tempnode"
    KERNEL=="sd*[!0-9]|sr*|dasd*[!0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
    KERNEL=="sd*[0-9]|dasd*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
    KERNEL=="st*", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
    
    # by-path (shortest physical path)
    KERNEL=="*[!0-9]|sr*", IMPORT{program}="/sbin/path_id %p", SYMLINK+="disk/by-path/$env{ID_PATH}"
    KERNEL=="st*", IMPORT{program}="/sbin/path_id %p", SYMLINK+="tape/by-path/$env{ID_PATH}"
    KERNEL=="sr*|st*", GOTO="persistent_storage_end"
    KERNEL=="*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
    
    # by-label/by-uuid (filesystem properties)
    KERNEL=="*[!0-9]", SYSFS{removable}=="1", GOTO="persistent_storage_end"
    IMPORT{program}="/sbin/vol_id --export $tempnode"
    ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_UUID}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID}"
    ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_SAFE}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_SAFE}"
    
    # BIOS Enhanced Disk Device
    KERNEL=="*[!0-9]", IMPORT{program}="/sbin/edd_id --export $tempnode"
    KERNEL=="*[!0-9]", ENV{ID_EDD}=="?*", SYMLINK+="disk/by-id/edd-$env{ID_EDD}"
    KERNEL=="*[0-9]", ENV{ID_EDD}=="?*", SYMLINK+="disk/by-id/edd-$env{ID_EDD}-part%n"
    
    LABEL="persistent_storage_end"
    85-mount-fstab.rules kommt nicht zum Einsatz, da kein Eintrag in der fstab erfolgt.

    Hat jemand eine Idee?

    Danke,
    Chris

  4. #4
    Registrierter Benutzer
    Registriert seit
    Jun 2005
    Beiträge
    413

    usb cdrom dvd nicht automatisch mounten

    Problem: ich möchte, dass externe Geräte (CD, USB, usw.) nicht automatisch gemountet werden.

    Lösung:
    1) ist etwas heftig, aber trotzdem möglich:
    killall udevd
    mknod /dev/<geraet> major minor
    mount

    Nach getaner Arbeit
    rm /dev/<geraet>
    /sbin/udevd --daemon

    Die Major-, Minor-Nummern finden sich in /usr/src/linux-<kernelvers>/Documentation/devices.txt


    2) Angenehmer: udev darf schon die device-Dateien erstellen, aber kein mount soll abgesetzt werden. udev ist nur für die Erzeugung und Benennung der Devicenodes zuständig, daher findet sich für unsere Zwecke hier nichts brauchbares. HAL verwaltet u.a. Details über Geräte, die in einem XML-Format abgelegt werden. Er ist dafür zuständig, dass gestimmte Aktionen gesetzt werden. Hier ist der Punkt, um anzusetzen.

    Erstelle in /usr/share/hal/fdi/policy/20thirdparty eine Datei 99-ignore-usb-drives.fdi
    Code:
    <?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
    
    <deviceinfo version="0.2">
    <device>
      <!-- keine USB-Devices mehr mounten -->
      <match key="@block.storage_device:storage.bus" string="usb">
          <merge key="volume.ignore" type="bool">true</merge>
      </match>
    </device>
    </deviceinfo>
    Hal muss noch neu gestartet werden, bei Suse: rchal restart. Nun werden USB-Speicher nicht mehr automatisch gemountet, jedoch ein Verzeichnis in /dev wird angelegt.

    Wichtig: die Dateien in /usr/share/hal/fdi/policy/* werden in alphabetischer Reihenfolge durchlaufen. Eine Datei muss die Endung fdi haben damit sie abgearbeitet wird. Das hat den angenehmen Effekt, dass ich eine datei.fdi nach datei.fdi.out_of_service umbenennen kann und schon werden die Regeln nach einen restart von hal nicht mehr verarbeitet.

    Soll nur auch CDs und DVDs einbezogen werden sieht die Datei 99-ignore_all.fdi folgendermaßen aus:
    Code:
    <?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
    
    <deviceinfo version="0.2">
    <device>
      <!-- gar keine ext. Devices mehr mounten -->
      <match key="volume.policy.should_mount" bool="true">
          <merge key="volume.policy.should_mount" type="bool">false</merge>
      </match>
    </device>
    </deviceinfo>
    Jedes Gerät, dass ein Attribut volume.policy.should_mount hat wird nicht mehr gemounted. Wer sich die Attribute aus lshal ansieht, merkt dass die Festplatten auch ein volume.policy.should_mount Attribut besitzen. Jedoch werden alle Geräte, die in der fstab eingetragen sind, defaultmäßig nicht behandelt. Damit ist sichergestellt, dass beim Booten die notwendigen Disks gemounted werden.
    Nun ist es auch möglich, gerätespezifisch oder Bus-spezifisch die mount-Bedingungen festzulegen. Dafür ist es notwendig, sich über die sog. namespaces von hal eine Übersicht zu verschaffen.

    Nützliche Befehle:
    lshal .. listet alle Geräte mit Attribute auf.
    udevmonitor .. Anzeige der Kernel- und udev-Aktionen
    udevmonitor --env .. das Ganze mit Environmentvariablen
    udevinfo -a -p /sys/block/hdc .. Informationen über ein Gerät (hier hdc)
    Die Daten von Block-Devices liegen unter /sys/block.

    Mit ein wenig Lesen und Experimentieren sind eigene Anpassungen gut zu schaffen.

    Hinweis:
    a) Alle Tests wurden auf Suse 10.1 erfolgreich ausgeführt.
    b) Im Linux-Magazin 09/2006 ist eine 95userpolicy, die auf meinem System nicht funktionierte. volume.policy.should_mount aus meinem Beispiel ist dort durch ein storage.policy.should_mount ersetzt. Das hatte zur Folge, dass die Geräte gemounted wurden, jedoch sich nicht mehr mounten ließen.

    Weitere Literatur:
    Wie Udev funktioniert, Linux-Magazin
    http://www.linux-magazin.de/heft_abo...raeteverwalter
    Udev
    http://www.kernel.org/pub/linux/util...plug/udev.html
    HAL Specification
    file:///usr/share/doc/packages/hal/spec/hal-spec.html

Ähnliche Themen

  1. usbsticks werden nicht mehr erkannt?
    Von Elixus im Forum stationäre Hardware
    Antworten: 11
    Letzter Beitrag: 09.11.06, 22:58
  2. Smart HowTo
    Von omasenkel im Forum Hier Suchen und Finden, Links, Tutorials
    Antworten: 0
    Letzter Beitrag: 07.08.06, 02:24
  3. Pinnacle PCTV Sat
    Von compufreak im Forum Fernsehen
    Antworten: 6
    Letzter Beitrag: 13.04.06, 10:39
  4. Wie wird mein MP3-Player von Linux erkannt?
    Von 123Linux im Forum Mobiles Linux, Notebook, PDA
    Antworten: 30
    Letzter Beitrag: 25.06.05, 16:55
  5. Der (nicht willige) USB-Hub
    Von netswipe im Forum stationäre Hardware
    Antworten: 2
    Letzter Beitrag: 06.04.05, 10:20

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •