web-dev-qa-db-ja.com

/ devの下に永続ノードを作成するために2つのパーティションを持つUSBフラッシュ用のudevルールを作成する方法は?

USBフラッシュメモリがあり、その上に2つのパーティションを作成しました。接続すると、sdb、sdb1、sdb4の代わりにsda、sda1およびsda4が必要になることがあります。その混乱を防ぐために、/ devの下に永続的にシンボリックリンクするudevルールを作成することにしました。

以下のルールを作成しました

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb"

再起動すると、/dev/myusbの下にシンボリックリンクが作成されますが、マウントできません。

 Sudo mount /dev/myusb /media/myusb

 mount: /dev/bus/usb/002/003 is not a block device

2つのパーティションが含まれているため、このエラーが発生すると思います。だから私は何をすべきか?

3
kenn

問題は、複数のパーティションを持つドライブ全体を一度にマウントできないことだと思います。各パーティションを自分用にマウントする必要があります。マウントとは、ファイルシステムへのアクセスを取得することです。これは、2つの異なるパーティションで大きく異なる場合があります。そして、2つのファイルシステムを1つのディレクトリにどのように配置しますか? /media/myusb/part1のような少なくとも2つのサブディレクトリが必要です。

つまり、UUIDとラベルに戻りました。

次のようなuuidで2つのパーティションをマウントするスクリプトをトリガーするudevルールを作成できます。

#!/bin/bash

mount /dev/disk/by-uuid/xxxxx-xxxx-xxxxx-xxxxxx /media/myusb/part1
mount /dev/disk/by-uuid/yyyyy-yyyy-yyyyyy-yyyyy /media/myusb/part2

または、パーティションを/ etc/fstabに配置し、udevにmount -aを実行させることもできます。

「blkid」を使用して、デバイスの普遍的に一意の識別子を印刷します。これは、ディスクが追加および削除された場合でも機能するデバイスを命名するためのより堅牢な方法として、UUID =で使用できます。

たぶんあなたはそれを試すことができます:

パーティション1の場合:

KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb1"

パーティション2

KERNEL=="sd?4", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb2"

動作するかどうかはわかりませんが、試してみてください。

https://Oracle-base.com/articles/linux/udev-scsi-rules-configuration-in-Oracle-linuxhttps://wiki.ubuntuusers.de/udev/

3
JosefScript

まず第一に、応答したすべての人に感謝したい、彼らは正しい道に私を導いた。

最初にUSBスティックを見つけるためにデバイスをチェックアウトしました

 fdisk -l 

Disk /dev/sda: 15.5 GB, 15512174592 bytes
234 heads, 12 sectors/track, 10789 cylinders, total 30297216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00055ec3

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *       16128    30297215    15140544    c  W95 FAT32 (LBA)
/dev/sda4         2142880     5194399     1525760    0  Empty

Disk /dev/sdb: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000517fa

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb2   *        2048    40959079    20478516   83  Linux
/dev/sdb3        40959998   234436544    96738273+   5  Extended
/dev/sdb5        40960000    52956093     5998047   83  Linux
/dev/sdb6        52957184   221904895    84473856   83  Linux
/dev/sdb7       221906944   234436544     6264800+  83  Linux

USBスティックがsdasda1およびsda4をつかみました(まだsdaをプライマリディスクに割り当てる方法を見つけていません)

次に、attribute-walkを実行して、関連するパラメーターを取得しました

udevadm info -a -p $(udevadm info -q path -n /dev/sda)
udevadm info -a -p $(udevadm info -q path -n /dev/sda1)
udevadm info -a -p $(udevadm info -q path -n /dev/sda4)

識別IDとしてATTRS{serial}ATTR{partition}==1ATTR{partition}==2を使用しました。

KERNEL=="sd*", ATTRS{serial}=="0019E06B5883CCA187BC2C59", ATTR{partition}=="1", SYMLINK+="usbdevices"

パーティション1で動作します

1
kenn