我是自动化SD卡成像从现有的dd工厂映像。SD卡总是通过外部USB卡读取器连接,因此在系统中以SCSI块设备/dev/sd*的形式出现。
目前,我命令的语法是:write-image DEVICE,其中DEVICE是SD卡块设备,例如。/dev/sdd。
我已经在DEVICE上做了一个基本的检查,以验证它是/dev/sd*的形式,但这还不够:我担心用户(生产人员不习惯Linux)犯了一个错误,指定了另一个看似有效的设备,例如。/dev/sda。您可以看到即将到来的灾难,特别是因为我的成像脚本需要根特权(不是写入映像本身,而是修改SD卡,包括根据SD卡的实际大小调整分区的大小).
我想验证指定的设备实际上是某种USB大容量存储器(或者至少是一个可移动的设备),这样我就可以保护系统磁盘不被意外破坏。我怎么能这么做?
我在/proc或网络上没有发现任何相关的东西,我现在很茫然。
发布于 2013-06-27 12:06:36
查看/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/获得其他设备细节,如供应商和型号,这也可能会派上用场。
https://unix.stackexchange.com/questions/80875
复制相似问题