จะเข้าใจการไหลของการตรวจจับ USB ได้อย่างไร?


14

ฉันต้องการที่จะเข้าใจการไหลของกิจกรรม USB ในรูปแบบพื้นที่เคอร์เนลไปยังพื้นที่ผู้ใช้

เพื่อให้ชัดเจนยิ่งขึ้นฉันต้องการทราบว่าป๊อปอัปนั้นมาบนเดสก์ท็อปของฉันอย่างไรเมื่อฉันเสียบไดรฟ์ USB เข้ากับระบบของฉันและวิธีการติดตั้งไดรฟ์

ฉันต้องการทราบด้วยว่ามันพบว่ามีภาพบางภาพใน USB ของฉันและถ้า "ใช่" มันจะถามฉันว่าฉันต้องเปิดมันใน GIMP หรือซอฟต์แวร์อื่น ๆ บ้างไหม?

ฉันรู้ว่ามันเป็นคำถามที่กว้างมาก แต่โปรดแนะนำฉันด้วยตัวชี้บางอย่างเกี่ยวกับวิธีการทำความเข้าใจแนวคิดทั้งหมดที่อยู่เบื้องหลัง

ฉันไม่ได้ทำการเบราส์โค้ดขนาดใหญ่ แต่ฉันรับรองกับคุณว่าฉันไม่มีปัญหาในการทำเช่นนั้นหากฉันสามารถรับคำแนะนำได้อย่างถูกต้อง

คำตอบ:


16
  1. เสียบปลั๊กอุปกรณ์และซอฟต์แวร์ที่จัดการบัสฮาร์ดแวร์สำหรับอุปกรณ์นั้นได้รับสัญญาณขัดจังหวะ (หรือการแจ้งเตือนอื่น ๆ ที่ระดับฮาร์ดแวร์) และไดรเวอร์บัสระบุอุปกรณ์ที่เชื่อมต่อหรือทำการกระทำฮาร์ดแวร์เฉพาะบัสอื่น ๆ เพื่อระบุอุปกรณ์
  2. เคอร์เนลร้องขอให้โหลดไดรเวอร์สำหรับฮาร์ดแวร์ใหม่โดยการเรียก/ sbin / modprobeพร้อมตัวระบุบัส / อุปกรณ์ / ฯลฯ ของฮาร์ดแวร์
  3. ในพื้นที่ผู้ใช้modprobeพยายามค้นหานามแฝงที่ระบุโดยไดรเวอร์ (ดู/lib/modules/$(uname -r)/modules.aliasรายการทั้งหมด) สิ่งเหล่านี้จะดูแตกต่างกันไปตามส่วนต่อประสานฮาร์ดแวร์ ตัวอย่างเช่นpci:v0000102Bd00002527sv*sd*bc*sc*i*สำหรับอุปกรณ์ PCI ผู้ขาย 102B, อุปกรณ์ 2527 และอะไรสำหรับ subvendor ฯลฯ หรือ usb:v2040p4982d*dc*dsc*dp*ic*isc*ip*USB:
  4. เมื่อโหลดไดรเวอร์อุปกรณ์แล้ว (หรืออุปกรณ์ใหม่ที่มีไดรเวอร์เริ่มต้นแล้ว) ไดรเวอร์ในเคอร์เนลจะส่งการแจ้งเตือนของอุปกรณ์ที่โหลดไปยังudevใน userspace
  5. udevตรงกับการแจ้งเตือนกับรายการของกฎและ/lib/udev/rules.d/ /etc/udev/rules.dจากที่นี่พฤติกรรมมีความพิเศษอย่างยิ่งโดยยึดตามกฎ
  6. ในกรณีของดิสก์ USB 80-udisks.rulesไฟล์น่าจะเป็นที่ที่ดีที่สุดในการทำงาน กฎเหล่านี้จะใช้สิ่งต่าง ๆ เช่นblkidและตัวช่วยอื่น ๆ เพื่อตรวจสอบชนิดและเนื้อหาของดิสก์เติมค่าการกำหนดค่าทั้งหมดรวมถึงสิ่งที่ต้องการENV{UDISKS_PRESENTATION_HIDE}="1"ละเว้นดิสก์ด้วยเหตุผลบางประการ ดูรายละเอียดได้ที่ "man 7 udisks"
  7. udisks-ภูตนาฬิกาสำหรับอุปกรณ์ที่จะปรากฏในudevฐานข้อมูลและนำเสนอพวกเขาพวกเขาเป็นรายการที่ค้นพบของอุปกรณ์มากกว่า DBus (ดู "udisks --enenate")
  8. การดำเนินการต่างๆมีการกำหนดค่าในudisks/usr/share/polkit-1/actions/org.freedesktop.udisks.policyและนโยบายเพื่อให้การกระทำเหล่านั้นสามารถเห็นได้ในแฟ้มนโยบาย (ใครสามารถเมานต์เมานท์ ฯลฯ )
  9. บริการที่สนใจในอุปกรณ์จะรับฟังเหตุการณ์DBusจากudisksและดำเนินการเมื่อพวกเขาเห็นเงื่อนไขบางอย่าง ตัวอย่างเช่น Nautilus ของ GNOME (ผ่าน gvfs volume-monitor) จะร้องขอการเมานท์อัตโนมัติสำหรับอุปกรณ์ (ผ่านudisksซึ่งจะตรวจสอบนโยบายดังกล่าวข้างต้น)
  10. เมื่อติดตั้งระบบไฟล์แล้วบริการฟังเดียวกันเหล่านั้นจะดำเนินการเพิ่มเติม ตัวอย่างเช่น Nautilus จะถามว่าคุณต้องการเปิดF-Spot หรือไม่เมื่อพบไดเรคทอรี่เก็บข้อมูลDCIMทั่วไปในระบบไฟล์

1
บางทีคุณอาจรู้ว่าสิ่งนี้แตกต่างระหว่างการบูตอย่างไร (ฉันถือว่าขั้นตอนที่ 1 แตกต่างกัน) เหตุใดจึงไม่สามารถตรวจพบอุปกรณ์ในระหว่างการบู๊ต แต่โหลดได้อย่างถูกต้องหลังจากการเสียบด้วยตนเอง
naktinis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.