语境

语境

语境

我正在从现有的dd工厂映像自动执行 SD 卡映像。 SD 卡始终通过外部 USB 读卡器连接,因此在系统中显示为 SCSI 块设备/dev/sd*

目前我的命令语法是:SD卡块设备在write-image DEVICE哪里,例如。 。DEVICE/dev/sdd

问题

我已经进行了基本检查DEVICE以验证它的形式/dev/sd*,但这还不够:我担心用户(不习惯 Linux 的生产人员)会犯错误并指定另一个看似有效的设备,例如。/dev/sda。您可以看到迫在眉睫的灾难,特别是因为我的映像脚本需要 root 权限(请注意,不是写入映像本身,而是随后修改 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/,这也可能会派上用场。

相关内容