
Ubuntu日本語フォーラム

ログインしていません。
linux初心者にとって、「USB storage devices」 のデバイスファイルを確実に見出すのはなかなか大変です。
「dmesgコマンドを使えば分かるべさ」 と言われても非常に長いmessageのどこを見れば良いのか分からず往生してしまいます。
Ubuntu 8.04.1 on USB Memory : 自動的インストール では、USBメモリのパーティション分割を自動化しましたが、
まだそのデバイスファイルを見出す方法の自動化ができませんでした。
これができれば、ただUSBメモリをPCに接続しシェルスクリプト install_usb.sh を実行するだけで、全ての作業を完遂することが
できます。
USBメモリのフォーマットの状態によっては、それが自動的にマウントされないこともあるので、ファイル mtab などは使わず、
dmesgコマンド だけを使うことにします。
答えは簡単。 PC起動後にUSBメモリを接続して、次の1行コマンドを実行すればOK。
$ dmesg | grep '\[sd[a-z]\]' | tail -n 1 | sed 's/.*\[\(.*\)\].*/\1/'
もっとスマートな記述ができればお教え下さい。 多くの御投稿をお待ちしています。
.
最後の編集者: moz (2008-10-26 17:06:39)
オフライン
現実には起こりにくいのですが、dmesg の該当する行の後方に例えば [....] のような文字列が加わった場合には、上のsedコマンド
の正規表現の部分は、誤った結果を齎します。
[ 1503.068422] sd 2:0:0:0: [sdb] Attached SCSI removable disk ..... [....] .....
ですから正確には次のようにするのが良いでしょう。
$ dmesg | grep '\[sd[a-z]\]' | tail -n 1 | sed 's/.*\[sd\([a-z]\)\].*/sd\1/'
シェルスクリプト install_usb.sh に付け加える場合は、USBメモリのデバイスファイルである第1引数 $1 の代わりの変数 sdx を次の
様にします。
sdx=sd`dmesg | grep '\[sd[a-z]\]' | tail -n 1 | sed 's/.*\[sd\([a-z]\)\].*/\1/'`
.
最後の編集者: moz (2008-10-26 17:57:25)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-10-26 07:53:22)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2008-10-26 07:49:09)
オフライン
kiyoshiさん、いつも御投稿ありがとうございます。
USBメモリにパーティションのない場合でも可能な簡単なコマンドが見つかりました。
$ sudo sfdisk -s | grep /dev | tail -n 1 | cut -d: -f1
が分かり易いようです。 誠に不勉強でした。
.
最後の編集者: moz (2008-10-26 08:26:12)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
オフライン
https://wiki.ubuntu.com/MobileTeam/Mobile/HowTo/ImageWriting
にあるUSB Image Writerをインストールして、/usr/lib/imagewriter/find_devices.shを見てください。
オフライン
hitoさん、貴重な御指摘をありがとうございます。
シェルスクリプト install_usb.sh に次の様に書き込めば良いようですね。
for device in $(hal-find-by-capability --capability storage); do
VENDOR=$(hal-get-property --udi $device --key storage.vendor)
NAME=$(hal-get-property --udi $device --key storage.model)
PLUGGABLE=$(hal-get-property --udi $device --key storage.removable)
TYPE=$(hal-get-property --udi $device --key storage.drive_type)
DEVICE_FILE=$(hal-get-property --udi $device --key block.device)
if [ "${PLUGGABLE}" = true ] && [ "${TYPE}" = "disk" ]; then
break
fi
done
echo "!!!注意!!!"
echo "間違ったデバイスを指定した場合、ハードディスクの内容を壊してしまう\n可能性があります。"
echo "内容を消去して良いUSBメモリが指定されていることを確認してください。\n"
echo "[使用するUSBメモリの情報]"
echo "\tデバイスファイル: $DEVICE_FILE\n\t\tベンダ: $VENDOR\n\t\tモデル: $NAME\n"
これが一番正確なようですので、少し実験して 「 Ubuntu 8.10 」 からこれに切り替えます。
.
最後の編集者: moz (2008-10-29 07:45:44)
オフライン