จะเกิดอะไรขึ้นเมื่อมีการเปิดอุปกรณ์ USB บน Mac?


1

เมื่ออุปกรณ์ USB ถูกดีดออกโดยใช้ GUI ใน Finder จะเกิดอะไรขึ้นในระดับต่ำอย่างแน่นอน มีสัญญาณบางอย่างที่ส่งไปยังอุปกรณ์หรือไม่?

เหตุผลที่ฉันถามคือเพราะฉันพยายามเลียนแบบการดีดออกด้วยตนเองของอุปกรณ์โดยการเพิ่มและลบโมดูลการจัดเก็บไฟล์ผ่านคอนโซลของอุปกรณ์ที่ใช้ลีนุกซ์แบบฝัง เพิ่งลบโมดูลทำงานได้ดีบนพีซี แต่ Mac ให้ฉันข้อผิดพลาด "ไม่ถูกขับออกมาอย่างถูกต้อง" และ Linux kernel "panics" และได้รับข้อผิดพลาดเคอร์เนล null ตัวชี้

นี่คือข้อมูลเพิ่มเติมบางส่วน:

ฉันใช้อุปกรณ์ USB Gumstix COM ที่ใช้งาน Linux ในตัว อุปกรณ์ถูกเสียบเข้ากับโฮสต์ (Windows หรือ Mac) และฉันเลียนแบบการเอาออกทางกายภาพโดยการถอดโมดูลหน่วยเก็บข้อมูลขนาดใหญ่ในเคอร์เนล Linux ของอุปกรณ์จึงทำให้โฮสต์ไม่เห็นว่าเป็นอุปกรณ์เก็บข้อมูลอีกต่อไป modprobe -r g_file_storageที่ผมทำสำเร็จนี้กับ

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

สิ่งนี้ทำให้ฉันเชื่อว่ามีบางสิ่งที่ Mac ทำเฉพาะเมื่อนำอุปกรณ์ USB ออกอย่างถูกต้องซึ่งฉันต้องทำการลอกเลียนแบบในสคริปต์ของฉันบนอุปกรณ์

โดยทั่วไปฉันต้องการทราบว่าฉันต้องทำการจัดการสัญญาณบางอย่างหรือบางอย่างบนอุปกรณ์เพื่อเลียนแบบการดีดออกบนโฮสต์ Mac


1
ในหน้าต่างคุณบอกผู้จัดการ PnP ให้ดีดอุปกรณ์จัดเก็บข้อมูลจำนวนมาก ตัวอย่างเช่นใน C # คุณจะมีข้อมูลโค้ดต่อไปนี้เพื่อจัดการกับ usb ของคุณ if ((device.LogicalDrive == null) || (device.LogicalDrive.Length == 0)) continue; device.Eject(true);ดังนั้นฉันคิดว่าคุณแค่ต้องหา PnP manager สำหรับโฮสต์ของคุณ
นิวแมติกส์

คำตอบ:


2

แนวคิด 'eject' ระดับผู้ใช้อาจมีความหมายที่แตกต่างกันหลายอย่าง

สำหรับสื่อบันทึกแบบออปติคัลการดีดออกเป็นสาเหตุให้แผ่นดิสก์ออกทางกายภาพหลังจากเลิกเมานท์

สำหรับสื่อบางประเภทเช่นสื่อแฟลชแบบถอดได้ (หน่วยความจำ USB สิ่งใดก็ตามที่ปรากฏเป็นช่องใส่ไดรฟ์สีขาวใน Finder) การนำออกจะยกเลิกการต่อเชื่อมอุปกรณ์ทั้งหมดของอุปกรณ์และจากนั้นป้องกันการมีปฏิสัมพันธ์กับอุปกรณ์นั้น อุปกรณ์ที่ยังคงอยู่ในอุปกรณ์ USB ต้นไม้ แต่บล็อกอุปกรณ์/devจะถูกลบออกและมันก็ไม่ได้ระบุไว้ใน Disk Utility diskutil listหรือ

สำหรับสื่อประเภทอื่นเช่นฮาร์ดไดรฟ์แบบถอดได้ (สิ่งใดก็ตามที่ปรากฏเป็นกล่องพลาสติกสีเหลืองใน Finder) การดีดออกจะเป็นการยกเลิกการต่อเชื่อมระดับเสียงและปล่อยให้สามารถเข้าถึงได้สำหรับการติดตั้งใหม่หรือเขียนไปยังอุปกรณ์บล็อก

ฉันไม่แน่ใจว่าสิ่งที่เป็นเกณฑ์สำหรับพฤติกรรมที่นำไปใช้กับอุปกรณ์ประเภทใด ฉันทดสอบกับฮาร์ดไดรฟ์ที่เข้ารหัสด้วย CoreStorage / FileVault 2 กลุ่มและแฟลชไดรฟ์ USB จำนวนหนึ่ง จำนวนวอลุ่มบนอุปกรณ์ที่สงสัยดูเหมือนจะสร้างความแตกต่างได้เล็กน้อย แต่ CoreStorage อาจถูกตัดสินใจโดยบล็อกการโต้ตอบหรือโดยความแตกต่างของชนิดสื่อ

OS X จะไม่บ่นหากคุณถอดอุปกรณ์ที่ไม่ได้กดออก แต่ได้ยกเลิกการต่อเชื่อมวอลุ่มทั้งหมดแล้ว


0

เมื่อคุณใช้เครื่องมือ GUI บน Mac และ Linux เพื่อ 'นำออก' อุปกรณ์ USB GUI จะตรวจสอบว่าอุปกรณ์ไม่ว่างหรือไม่และหากไม่ได้ยุ่งอยู่ให้ยกเลิกการต่อเชื่อมอุปกรณ์ USB จากระบบไฟล์

ระบบ Unix / Linux ส่วนใหญ่มีคำสั่ง unmount ซึ่งเป็นสิ่งที่เครื่องมือ GUI ทำเมื่อคุณ 'นำ' อุปกรณ์ USB ออก คำสั่งนี้ควรจะรันก่อนที่อุปกรณ์จะถูกลบออกทางกายภาพ (อย่างไรก็ตามมีตัวเลือกที่จะบังคับให้ลบการอ้างอิงไปยังอุปกรณ์ แต่พวกมันไม่ทำงานเสมอไป)

umountตรวจสอบออกมาจากหน้าเว็บที่ใช้สำหรับ สำเนาสามารถพบได้ที่นี่

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