「USB ストレージデバイス」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(テンプレート:Expansion を削除)
 
(他の1人の利用者による、間の4版が非表示)
74行目: 74行目:
 
$ umount /mnt/usbstick
 
$ umount /mnt/usbstick
   
  +
==== マウントツール ====
== udev や systemd/udev によってマウントされたデバイスをアンマウント ==
 
   
  +
複数の [[アプリケーション一覧/ユーティリティ#マウントツール|マウントツール]] により、通常のユーザーとしてのマウントが容易になります。
実行可能ファイルを作成してください (例: {{ic|/usr/local/bin/unmount.sh}}):
 
{{bc|<nowiki>
 
#!/bin/sh
 
   
  +
== トラブルシューティング ==
# Global variables
 
TITLE="Unmount Utility"
 
COLUMNS=3 # TARGET,SOURCE,FSTYPE
 
#IFS=$'\n'
 
   
  +
=== USB ストレージデバイスがシステムから認識されない ===
# Populate list of unmountable devices
 
deviceList=($(findmnt -Do TARGET,SOURCE,FSTYPE | grep -e "sd[b-z]"))
 
deviceCount=$((${#deviceList[@]} / $COLUMNS))
 
   
  +
コンピュータに USB ストレージデバイスを接続しても {{ic|lsblk}} や {{ic|dmesg}} で表示されない場合、BIOS で XCHI Handoff と EHCI Handoff が有効になっているか確認してください。
# Start of program output
 
echo $TITLE
 
   
  +
=== USB デバイスは検出されましたが、マウントできません ===
# Display list of devices that can be unmounted
 
for ((device=0; device<${#deviceList[@]}; device+=COLUMNS))
 
do
 
printf "%4s) %-25s%-13s%-10s\n"\
 
"$(($device / $COLUMNS))"\
 
"${deviceList[$device]}"\
 
"${deviceList[$(($device + 1))]}"\
 
"${deviceList[$(($device + 2))]}"
 
done
 
   
  +
最近カーネルをアップグレードした場合、現在動作中のカーネルのUSBストレージのモジュールが削除され、新しくインストールされたカーネル用のモジュールに置き換えられました。これらのモジュールは、新しいカーネルを再起動して実行するか、現在実行しているカーネルのバージョンに対応するカーネルパッケージを [[パッケージのダウングレード|ダウングレード]] するまでロードされません。
printf "%4s) Exit\n" "x"
 
   
  +
=== すべてのパーティションをアンマウントした後、デバイスがシャットダウンされない ===
# Get input from user
 
read -p "Choose a menu option: " input
 
   
  +
デバイスの電源を切らないと、次のようなことが起こる可能性があります。
# Input validation
 
  +
* ハードディスクドライブがヘッドを退避せず、回転しながらかすかなスクラッチ音を出し、デバイスを劣化させます [http://linuxfocus.org/~guido/scripts/spin-down-usb-hard-drive-linux.html]
if [ "$input" = "X" ] || [ "$input" = "x" ]
 
  +
* ソリッドステートドライブ(特に古いもの)がキャッシュバッファをフラッシュせず、マッピングテーブルを更新せず、データを失う [https://www.kingston.com/us/solutions/servers-data-centers/ssd-power-loss-protection]
then
 
echo "Exiting"
 
exit 0
 
fi
 
   
  +
パーティションをアンマウントしても、デバイスの電源は入ったままです。安全に取り外すには、まずシステムの電源を切る必要があります。[https://unix.stackexchange.com/a/43450]
if (( $input>=0 )) && (( $input<$deviceCount ))
 
then
 
echo "Unmounting: ${deviceList[$(($input * $deviceCount))]}"
 
sudo umount "${deviceList[$(($input * $deviceCount))]}"
 
exit 0
 
else
 
echo "Invalid menu choice"
 
exit 1
 
fi
 
</nowiki>}}
 
   
  +
# echo 1 > /sys/block/''disk_name''/device/delete
{{Note|このスクリプトを使うには sudo をインストールする必要があり、sudo 権限が必要です。}}
 
   
  +
[[udisks]] を使用する場合は、次のコマンドを使用できます:[https://unix.stackexchange.com/a/178648]
== トラブルシューティング ==
 
   
  +
$ udisksctl unmount -b /dev/sd''XY''
=== USB ストレージデバイスがシステムから認識されない ===
 
  +
$ udisksctl power-off -b /dev/sd''X''
 
コンピュータに USB ストレージデバイスを接続しても {{ic|lsblk}} や {{ic|dmesg}} で表示されない場合、BIOS で XCHI Handoff と EHCI Handoff が有効になっているか確認してください。
 

2023年4月5日 (水) 16:56時点における最新版

関連記事

この文章では Linux で一般的な USB メモリーを使用する方法を説明します。また、デジタルカメラなど他のデバイスも USB ストレージデバイスとして使える場合があります。

標準の Arch カーネルと最近のデスクトップ環境を使っている場合、最新の環境なら、デバイスはデスクトップに表示され、コンソールを開く必要はありません。

udisks による自動マウント

これは一番簡単でよく使われている方法です。多数のデスクトップ環境によって用いられいますが、単独で使用することも可能です。詳しくは Udisks を見て下さい。

手動マウント

ノート: Arch Linux が USB デバイスをマウントしてないと決めつける前に、全てのポートを確認しましょう。ポートによってはコントローラを共有してないことがあり、それによってデバイスがマウントできなくなっている可能性があります。

usb_storage をサポートするカーネルを取得

カスタムカーネルを使っていない場合、問題はありません。全ての Arch Linux 標準カーネルはちゃんと設定されています。カスタムカーネルを使っている場合 SCSI-Support, SCSI-Disk-Support, usb_storage を有効にしてカーネルをコンパイルするようにしてください。最新の udev を使っていれば、デバイスを接続するだけでシステムは自動的に必要なカーネルモジュールを全てロードします。古いリリースの udev では hotplug もインストールする必要があります。もしくは、手動で同じことを行うこともできます:

# modprobe usb_storage
# modprobe sd_mod      (only for non SCSI kernels)
ヒント: 手動でモジュールをロードする場合、sg モジュール (SCSI generic driver) もロードする必要があるかもしれません。

デバイスの確認

ストレージデバイスにアクセスするのにまず必要なのはカーネルによって割り振られたデバイスの識別子です。詳しくは fstab#ファイルシステムの識別 を参照。

ヒント: どれが USB デバイスか確認するには、USB デバイスを接続したときに接続してないときの lsblk -f の出力を比較してください。

USB メモリーのマウント

デバイスをマウントするディレクトリを作成する必要があります:

# mkdir /mnt/usbstick

root を使用

次のコマンドで root でデバイスをマウント (device_node は確認したパスに置き換えてください):

# mount device_node /mnt/usbstick

または:

# mount -U UUID /mnt/usbstick

mount がデバイスのフォーマットを認識できないときは -t 引数を使うことができます。詳しくは man mount を参照。

ノート: メモリーのマウントが出来ない場合、パーティションしなおすこともできます。ファイルシステム#デバイスのフォーマットを参照。

通常ユーザーで mount を使用

root 以外のユーザーで USB メモリーに書き込みを行えるようにするには、次のコマンドを実行:

# mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick

通常ユーザーで fstab を使用

root 以外のユーザーで fstab を使って USB メモリーをマウントできるようにするには、次の行を /etc/fstab ファイルに追加:

/dev/sdXY /mnt/usbstick vfat user,noauto,noatime,flush 0 0

または:

UUID=E8F1-5438 /mnt/usbstick vfat user,noauto,noatime,flush 0 0

fstabuser やその他のオプションの説明を見て下さい。

ノート: /dev/sdXY は USB メモリーのパスに置き換えてください。USB メモリーのマウントを参照。

これで、どのユーザーでも次のコマンドでマウントできます:

$ mount /mnt/usbstick

アンマウントするには:

$ umount /mnt/usbstick

マウントツール

複数の マウントツール により、通常のユーザーとしてのマウントが容易になります。

トラブルシューティング

USB ストレージデバイスがシステムから認識されない

コンピュータに USB ストレージデバイスを接続しても lsblkdmesg で表示されない場合、BIOS で XCHI Handoff と EHCI Handoff が有効になっているか確認してください。

USB デバイスは検出されましたが、マウントできません

最近カーネルをアップグレードした場合、現在動作中のカーネルのUSBストレージのモジュールが削除され、新しくインストールされたカーネル用のモジュールに置き換えられました。これらのモジュールは、新しいカーネルを再起動して実行するか、現在実行しているカーネルのバージョンに対応するカーネルパッケージを ダウングレード するまでロードされません。

すべてのパーティションをアンマウントした後、デバイスがシャットダウンされない

デバイスの電源を切らないと、次のようなことが起こる可能性があります。

  • ハードディスクドライブがヘッドを退避せず、回転しながらかすかなスクラッチ音を出し、デバイスを劣化させます [1]
  • ソリッドステートドライブ(特に古いもの)がキャッシュバッファをフラッシュせず、マッピングテーブルを更新せず、データを失う [2]

パーティションをアンマウントしても、デバイスの電源は入ったままです。安全に取り外すには、まずシステムの電源を切る必要があります。[3]

# echo 1 > /sys/block/disk_name/device/delete

udisks を使用する場合は、次のコマンドを使用できます:[4]

$ udisksctl unmount -b /dev/sdXY
$ udisksctl power-off -b /dev/sdX