コンテキスト
既存の工場イメージからdd
SDカードイメージングを自動化しています。 SDカードは常に外部USBカードリーダーを介して接続されているため、システムはSCSIブロックデバイスとして表示されます/dev/sd*
。
現在私のコマンド構文はwrite-image DEVICE
次のとおりです。 SDカードブロックデバイスはどこにありますか? 。DEVICE
/dev/sdd
質問
DEVICE
フォームであることを確認するために基本的なチェックを行いましたが、/dev/sd*
十分ではありません。ユーザー(Linuxに慣れていない本番担当者)が間違えて有効に見える他のデバイスを指定するのか心配です。/dev/sda
。特に、イメージングスクリプトにルートアクセスが必要なので、差し迫った災害を見ることができます(画像自体に書き込むのではなく、SDカードの実際のサイズに応じてパーティションのサイズを変更するなど、SDカードを変更することに注意してください)...
質問
偶発的な損傷からシステムディスクを保護するために、指定されたデバイスが実際に一種のUSB大容量ストレージ(または少なくともリムーバブルデバイス)であることを確認したいと思います。どうすればいいですか?
私は/proc
オンラインでそれについて何も見つけることができず、今は迷っています。
答え1
ディレクトリを見てください/sys/
。特に、/sys/block/
ブロックデバイスへのシンボリックリンクが含まれています/sys/devices/
。
/sys/block/sdX/removable
リムーバブルデバイスの場合は1、そうでない場合は0と表示されているようです。これにより、除去可能性の基本的なチェックを実行できます。
USBデバイスであることを確認するより良い方法があるかどうかはわかりませんが、
readlink /sys/block/sde
出力は次のとおりです。フォルダが../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1.2/6-1.2:1.0/host7/target7:0:0/7:0:0:0/block/sde
含まれていることを確認するのは簡単なチェックです。usb*
ベンダーやモデルなどの他のデバイスの詳細も入手でき、/sys/block/sdX/device/
便利です。