Linux 2.6.32,busybox,辨識物理 SD 設備
我有一個帶有兩個 SD 卡介面和兩個 USB 埠(因此它也可以充當 USB 集線器)的 USB 讀卡器,它們都在同一設備上。我正在執行一個嵌入式 Linux 設備,它的使用不受監督,並打算在讀卡器中使用 2 個 SD 卡來儲存在幾個小時的操作中收集的數據。每張卡都用於保存特定的數據,兩種數據類型不能混用。
使用 mdev 在安裝 USB SCSI 設備(SD 卡或 USB 快閃記憶體盤)時觸發腳本的能力,我可以記下 USB 設備的物理位置,以便我可以辨識哪個磁碟是哪個磁碟,但是有一個例外。讀卡器報告讀卡器中的兩個 SD 卡物理上位於讀卡器的埠 1。這意味著我無法(以我目前的知識)在我的自定義編寫程序中辨識正在寫入數據的物理卡。
我不能讓使用者進入循環來告訴系統哪張卡是哪張卡(使用者只需插入 2 張新卡,打開設備,然後走開)。如何使用與 Busybox 兼容的工具來確定哪個文件系統屬於哪個物理磁碟?
謝謝你。
/sys/block
是尋找這個的地方。當讀卡器插入時,它會列出兩個 的塊設備sd*
,其中 * 是一個字母。就好像系統添加了一個物理 scsi 設備,但沒有任何方法可以訪問媒體(當然,除非上面有格式化的分區,熱插拔系統會通過 mdev 自動掛載該分區/etc/mdev.conf
)。
/sys/block/sda
(例如)是一個符號連結到/sys/devices/platform/fsl-ehci.0/usb2/2-1/2-1.1/2-1.1:1.0/host0/target0:0:0/0:0:0:1/block/sda
.前面的部分
/host/target0:0:0
是我的 USB 設備的物理設備樹配置。讀卡器位於匯流排 2、埠 1、埠 1。後面的部分
/host/target0:0:0
是一些我不太清楚的設備映射,但最後一個數字(對於本閱讀器中的設備)始終是 0 或 1,它對應於一個埠或另一個。所以,我有我需要的東西,但如果有人過來填補這些漏洞並為後代提供更好的解釋,那就太好了。