![即使驱动器断开连接,Udev 节点 /dev/sda 也会在启动时创建](https://linux22.com/image/1419292/%E5%8D%B3%E4%BD%BF%E9%A9%B1%E5%8A%A8%E5%99%A8%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5%EF%BC%8CUdev%20%E8%8A%82%E7%82%B9%20%2Fdev%2Fsda%20%E4%B9%9F%E4%BC%9A%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E5%88%9B%E5%BB%BA.png)
编辑:我想稍微简化一下这个问题:
主要问题是:无论是否插入 USB 驱动器,启动时都会创建 /dev/sda。如果我手动 rm /dev/sda,udev 会正常工作,直到我重新启动,此时 /dev/sda 会神奇地再次出现!
原始问题如下:
我在嵌入式主板上运行 Yocto Linux 版本,但遇到了一个问题。
使用全新构建,当我将 USB 驱动器插入主板时,它会显示为 /dev/sda 和 /dev/sda1(太棒了!)。当我拔下驱动器时,这些条目就会消失(同样很棒!)。
问题发生在我通过 USB 驱动器将重复的根文件系统复制到主板上之后(这样我就可以对主板进行完整的系统更新)。一切正常,直到我重新启动,突然间 /dev/sda 和 /dev/sda1 存在,无论是否插入 USB 驱动器。
我检查了权限,发现这两种情况下的权限都一样。我尝试删除这些文件,但它们在下次重新启动时又出现了。这两个文件没有随新的根文件系统一起复制。我的应用程序使用这些文件的存在来确定是否插入了驱动器,因此确保它们正常工作非常重要。
有任何想法吗?
谢谢
马龙
答案1
改变检查 USB 驱动器的方式,因为这种方式不可靠。
使用lsusb
或检查/proc/scsi/usb-storage
目录。这两种方式都可以从内核获得大量信息,因此你还可以尝试一些其他操作,例如根据供应商或序列号切换到不同的逻辑 :)