「USB ストレージデバイス」の版間の差分
(同期) |
Kusanaginoturugi (トーク | 投稿記録) (テンプレート: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 を見て下さい。
手動マウント
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)
デバイスの確認
ストレージデバイスにアクセスするのにまず必要なのはカーネルによって割り振られたデバイスの識別子です。詳しくは fstab#ファイルシステムの識別 を参照。
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
fstab の user やその他のオプションの説明を見て下さい。
これで、どのユーザーでも次のコマンドでマウントできます:
$ mount /mnt/usbstick
アンマウントするには:
$ umount /mnt/usbstick
マウントツール
複数の マウントツール により、通常のユーザーとしてのマウントが容易になります。
トラブルシューティング
USB ストレージデバイスがシステムから認識されない
コンピュータに USB ストレージデバイスを接続しても lsblk
や dmesg
で表示されない場合、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