USB storage devices (日本語)
関連記事
この文章では Linux で一般的な USB メモリーを使用する方法を説明します。また、デジタルカメラなど他のデバイスも USB ストレージデバイスとして使える場合があります。
標準の Arch カーネルと最近のデスクトップ環境を使っている場合、最新の環境なら、デバイスはデスクトップに表示され、コンソールを開く必要はありません。
Contents
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
udev や systemd/udev によってマウントされたデバイスをアンマウント
実行可能ファイルを作成してください (例: /usr/local/bin/unmount.sh):
#!/bin/sh
# Global variables
TITLE="Unmount Utility"
COLUMNS=3 # TARGET,SOURCE,FSTYPE
#IFS=$'\n'
# Populate list of unmountable devices
deviceList=($(findmnt -Do TARGET,SOURCE,FSTYPE | grep -e "sd[b-z]"))
deviceCount=$((${#deviceList[@]} / $COLUMNS))
# Start of program output
echo $TITLE
# 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
printf "%4s) Exit\n" "x"
# Get input from user
read -p "Choose a menu option: " input
# Input validation
if [ "$input" = "X" ] || [ "$input" = "x" ]
then
echo "Exiting"
exit 0
fi
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