私はプラグコンピュータでDebian Squeezeを実行しています(SSHのみで、GUIはありません)。USBスティックを差し込むと自動的にマウントされるようにするためです。
私がやっautofs
たことは、デバイスがどこにあるかを知っている限り、私が集めたものから自動マウントを処理するインストール/dev
です。
問題は、USBスティックが常に同じデバイス名にあるとは限らないことです。時々それは/dev/sdc1
、時々/dev/sdd1
、などです
これを修正udev
するには、USBスティックに常に同じ名前が付けられていることを確認するために使用する必要があることを収集します。
私は次の情報を手に入れましたudevadm
:
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/block/sdd/sdd1':
KERNEL=="sdd1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{partition}=="1"
ATTR{start}=="63"
ATTR{size}=="129339"
ATTR{ro}=="0"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{stat}==" 31 244 275 190 0 0 0 0 0 190 190"
ATTR{inflight}==" 0 0"
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0/block/sdd':
KERNELS=="sdd"
SUBSYSTEMS=="block"
DRIVERS==""
ATTRS{range}=="16"
ATTRS{ext_range}=="256"
ATTRS{removable}=="1"
ATTRS{ro}=="0"
ATTRS{size}=="129439"
ATTRS{alignment_offset}=="0"
ATTRS{discard_alignment}=="0"
ATTRS{capability}=="51"
ATTRS{stat}==" 56 727 783 520 0 0 0 0 0 520 520"
ATTRS{inflight}==" 0 0"
ATTRS{events}=="media_change"
ATTRS{events_async}==""
ATTRS{events_poll_msecs}=="-1"
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0':
KERNELS=="8:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="3"
ATTRS{vendor}==" "
ATTRS{model}=="Flash Disk "
ATTRS{rev}=="2.00"
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x90"
ATTRS{iodone_cnt}=="0x90"
ATTRS{ioerr_cnt}=="0x0"
ATTRS{modalias}=="scsi:t-0x00"
ATTRS{evt_media_change}=="0"
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"
ATTRS{max_sectors}=="240"
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0':
KERNELS=="target8:0:0"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8':
KERNELS=="host8"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0':
KERNELS=="1-1.2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usb-storage"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="08"
ATTRS{bInterfaceSubClass}=="06"
ATTRS{bInterfaceProtocol}=="50"
ATTRS{modalias}=="usb:v1976p6025d0100dc00dsc00dp00ic08isc06ip50"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2':
KERNELS=="1-1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="383"
ATTRS{idVendor}=="1976"
ATTRS{idProduct}=="6025"
ATTRS{bcdDevice}=="0100"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="12"
ATTRS{busnum}=="1"
ATTRS{devnum}=="11"
ATTRS{devpath}=="1.2"
ATTRS{version}==" 1.10"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="197"
ATTRS{idVendor}=="1a40"
ATTRS{idProduct}=="0101"
ATTRS{bcdDevice}=="0111"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="4"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{product}=="USB 2.0 Hub"
looking at parent device '/devices/platform/orion-ehci.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="24"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="1"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.38.8 ehci_hcd"
ATTRS{product}=="Marvell Orion EHCI"
ATTRS{serial}=="orion-ehci.0"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/platform/orion-ehci.0':
KERNELS=="orion-ehci.0"
SUBSYSTEMS=="platform"
DRIVERS=="orion-ehci"
ATTRS{modalias}=="platform:orion-ehci"
looking at parent device '/devices/platform':
KERNELS=="platform"
SUBSYSTEMS==""
DRIVERS==""
私はudev
USBスティックに名前を付けるようにルールを書こうとしてきました/dev/usbstick
が、今のところ成功していません。
このUSBスティックに常に同じ名前を付けるために、ルールファイルで指定する必要があるルールを誰かが手伝ってくれる?
-または、まったくないUSBスティックを自動マウントする簡単な方法はありますか?
更新
わかりましたので、少し進歩しました。次のルールを追加しました。
SUBSYSTEMS=="scsi", ATTRS{model}=="Flash Disk ", DRIVERS=="sd", NAME="usbstick-%k" RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"
これには、追加/削除の処理に関してまだいくつかの作業が必要であることはわかっていますが、これは今のところ基本的なテストにすぎません。
この効果は、私は今では3つの新しいデバイスノードを取得するために管理することである/dev
、すなわち、/dev/usbstick-sdc
、/dev/usbstick-sdc1
とusbstick-sg2
。
しかし、私が見つけたのは、RUN
セクションのコードは一度だけ実行され、ディレクトリを作成するだけmnt/usbstick-sdc
です。また、ディレクトリは常に空であるため、何かが明らかに問題を起こしていることもわかりました。(私は進歩していますが)。
udev
ルールを使用して各パーティションのデバイスノードを作成する必要があると確信していますが、ルールを作成するudevadm
出力のレベルがわかりません!
ACTION==
、1 KERNEL==
と1 ATTRS{something}==
( -これは私が使用するものです、それは完全になんとかです)。また、のコマンドチェーンに含まれる単一のスクリプトを実行することを検討してくださいRUN+=
。
KERNEL=="sd??", NAME="%k", RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"
-しかし、もちろん、これも機能しません。自分自身をマウントするために差し込まれているUSBスティックを入手する方法を単に考えようとしているだけの一日を過ごした後、私はますます苛立ちを感じています。本当にこれが難しいのでしょうか?からの出力udevadm test /sys/block/sdd
は-もちろん-実質的に読めないので、どこが間違っているのかを知る手段はありません。誰かが私をこれについて正しい方向に向けることができますか?
/dev/sdc1
はずだったのsdd1
ですか?また、を使用blkid
してドライブを一意に識別できます(実際、パーティションです。再フォーマットすると変更されます)。