これは、私の Ubuntu Lucid システムでの動作です:
2 つのパーティションを持つ USB フラッシュ/サムドライブを接続すると、システムは次のように報告します:
$ ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2
$ udisks --show-info /dev/sdb | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Mon 29 Apr 2013 02:16:50 PM CEST
--
partition table:
scheme: mbr
count: 2
$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part1
by-id: /dev/disk/by-uuid/581E-EE0B
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
detected at: Mon 29 Apr 2013 04:24:25 PM CEST
$ udisks --show-info /dev/sdb2 | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part2
by-id: /dev/disk/by-uuid/4A0E-A166
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part2
detected at: Mon 29 Apr 2013 04:24:25 PM CEST
$ udevadm info --query=all --name=/dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb
$ udevadm info --query=all --name=/dev/sdb1 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb/sdb1
$ udevadm info --query=all --name=/dev/sdb2 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb/sdb2
$ sudo partprobe /dev/sdb
$
したがって、パーティションのみが /dev/disk/by-uuid
を持っています;ディスクとパーティションの両方に (異なる) /dev/disk/by-id
がありますが、 .
ここで、Lucid の Gnome2 デスクトップの Disk Mounter アプレットのいずれかのパーティション エントリを左クリックすると、「開く」または「取り出し」の 2 つのエントリしか表示されません ([解決済み] How do you remount で述べたように) 16_hide_unmount.patch を参照して、@ Thomas の回答から lynx に nautilus を搭載した USB ドライブ)。また、palimpsest
ここでは、ディスクの 2 つのパーティションを示しています。
パーティションのいずれかで [取り出し] をクリックすると、両方とも消えます。この時点で、palimpsest
ディスクは表示されますが、パーティションは表示されず、代わりに「メディアが見つかりません」というメッセージが表示されます。また:
$ ls /dev/sdb*
/dev/sdb
$ udisks --show-info /dev/sdb | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Mon 29 Apr 2013 02:16:50 PM CEST
$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
$
$ udevadm info --query=all --name=/dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb
$ udevadm info --query=all --name=/dev/sdb1 | grep DEVPATH
device node not found
$ sudo partprobe /dev/sdb
Error: Error opening /dev/sdb: No medium found
したがって、@ultrasawblade のコメントで述べたように、実際にはディスクは存在しますが、パーティションは存在しません - ただし、デバイスとして パーティションが必要だと思います 、 mount
にするために .
また、デスクトップ GUI の左クリック + 「イジェクト」と同じ動作で、sudo eject /dev/sdb
でターミナルに入ることができます . palimpsest
を開くこともできることに注意してください 、そこから 2 つのパーティションのそれぞれをクリックし、[ボリュームのアンマウント] をクリックします。その時点で、パーティションのアイコンは まだ Disk Mounter アプレットに表示されますが、マウントされていないと表示されます。そして sudo udisks --detach /dev/sdb
を実行できます :これにより、Disk Mounter アプレットからアイコンが消えますが、/dev/sdb
も消えます。 デバイスはシステム上に存在しなくなります (ただし、lsusb
デバイスは引き続き表示されます)。
答えをかなり検索した後(udevadm monitor --environment
からのものを試しました udevadm trigger
を介してすべてのアクションを複製して、プラグを差し込んだり抜いたりする 、 BLKRRPART
が何であるかを調べます ioctl はそうします)、何の成功もありませんでした - 私は最終的に答えを持っている Ubuntu/Debian を削除して再挿入せずに USB スティックを再マウントする方法に出くわしました:
sudo eject -t /dev/sdb
このコマンドを実行すると、USB キーを抜き差ししなくても、Disk Mounter アプレットに 2 つのパーティションが再び表示されます!! man eject
を読んだ場合、これはまったく見知らぬ人です。 :
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... USB フラッシュ/サムドライブに適用できるとは思いません! (さらに、sys-utils/eject.c を調べてみましたが、明確な :)
は何も表示されません )
もちろん、sudo udisks --detach /dev/sdb
の場合 以前に実行された後、/dev/sdb
存在しないので、eject -t /dev/sdb
eject: unable to find or open device for: '/dev/sdb'
で失敗します .その場合、#7457 How to reconnect a logically disconnected USB device? に記載されているように、USB の電源を入れ直します。回復に役立ちました:
$ sudo sh -c 'echo suspend > /sys/bus/usb/devices/1-2/power/level'
$ sudo sh -c 'echo auto > /sys/bus/usb/devices/1-2/power/level'
これにより、ディスク マウンタ アプレットでパーティションのアイコンがマウント済みとして直接表示されるようになりました。正しいアドレスを見つけるには、ディスクがマウントされているときに試してください:
$ udevadm info --attribute-walk --name=/dev/sdb | grep "looking\|busnum\|devnum" | grep -B1 'busnum\|devnum'
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2':
ATTRS{busnum}=="1"
ATTRS{devnum}=="13"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
# the first (.../usb1/1-2) should be the right one, check bus/devnum:
$ lsusb -s 1:13
Bus 001 Device 013: ID 090c:1000 Feiya Technology Corp. Flash Drive
# looks good; check for symlinks in `sys/bus/usb/devices` as per "parent device" .../usb1/1-2
$ ls -la /sys/bus/usb/devices/ | grep "usb1/1-2"
lrwxrwxrwx 1 root root 0 2013-04-29 17:17 1-2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2
lrwxrwxrwx 1 root root 0 2013-04-29 17:21 1-2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0
# so it should be /sys/bus/usb/devices/1-2; check if it has power/level:
$ ls /sys/bus/usb/devices/1-2/power/level
/sys/bus/usb/devices/1-2/power/level
Ubuntu での私の経験から、Nautilus 内から USB スティックを「取り出す」と、デバイスは実際にはシステムから消えます。これがなぜなのかはわかりませんが、Nautilus もコマンドラインもそれを元に戻すことはできません。 USB スティックを取り出したら、元に戻したくなく、切断しようとするのが論理だと思います。
これを回避する方法 (必要な場合) は、 umount
を使用することです。 ノーチラスの代わりに。 sync
を呼び出すこともできます ファイルシステム バッファをディスクにフラッシュします。
詳細情報があるスレッドを見つけました:http://ubuntuforums.org/showthread.php?t=1477247
したがって、基本的には、a) そのパッチを適用せずにソースから nautilus を再ビルドする (そして、システムを更新するときに最新の状態に保つ...) か、b) 別のファイル マネージャーを使用する (少なくともアンマウントするときは ^^) のいずれかです。
Debian ベースのシステムでは、少なくとも、これを行うことができるはずです:
<オール>これが機能する理由は...魔法です。
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb