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
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
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)
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:
bzw.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==""
In den Regeln wird nach verschiedenen Werten gesucht, meistens KERNEL und SUBSYSTEM. Für die Übersichtlichkeit hier noch die Werte der HD: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==""
Code:grep SUBSYSTEM udev-myhdd SUBSYSTEM=="block" SUBSYSTEM=="block"Es kommen nur zwei Regel-Dateien aus /etc/udev/rules.d in Frage:Code:grep KERNEL udev-myhdd KERNEL=="sde1" KERNEL=="sde"
und das sind 50-udev-default.rules und 60-persistent-storage.rules.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
Im Berich für die Block-Devices (50-udev-default.rules)
wird modeprobe sd_mod gestartet (SYSFS{type}=="0"), sonst sehe ich keine Aktion.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"
In der 60-persistent-storage.rules finde ich auch keinen Hinweis:
85-mount-fstab.rules kommt nicht zum Einsatz, da kein Eintrag in der fstab erfolgt.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"
Hat jemand eine Idee?
Danke,
Chris
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
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.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>
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:
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.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>
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
Lesezeichen