Was genau passiert, wenn ein USB-Gerät an einem Mac ausgeworfen wird?

1

Was passiert genau auf niedriger Ebene, wenn ein USB-Gerät über die GUI im Finder ausgeworfen wird? Werden bestimmte Signale an das Gerät gesendet?

Der Grund, den ich frage, ist, dass ich versuche, das manuelle Auswerfen eines Geräts zu emulieren, indem ich das Dateispeichermodul über die Konsole eines Geräts mit eingebettetem Linux hinzufüge und entferne. Nur das Entfernen des Moduls funktioniert auf einem PC einwandfrei, aber ein Mac gibt mir den Fehler "nicht richtig ausgeworfen" und der Linux-Kernel "gerät in Panik" und bekommt einen Kernel-Nullzeiger-Fehler.

Hier sind einige zusätzliche Informationen:

Ich verwende ein USB-Gumstix-COM-Gerät, auf dem Embedded Linux ausgeführt wird. Das Gerät ist an einen Host (Windows oder Mac) angeschlossen, und ich emuliere das physische Entfernen, indem ich das Massenspeichermodul im Linux-Kernel des Geräts entferne, sodass der Host es nicht mehr als Speichergerät ansieht. Das schaffe ich mit modprobe -r g_file_storage.

Dies funktioniert problemlos unter Windows. Es funktioniert nicht auf einem Mac, da ich auf dem Mac-Host eine Fehlermeldung erhalte, dass das Gerät nicht richtig ausgeworfen wurde. Dies verursacht einen Nullzeigerfehler im Linux-Kernel des Geräts und es kommt zu einer Panik.

Dies lässt mich glauben, dass es etwas gibt, das NUR der Mac tut, wenn er ein USB-Gerät ordnungsgemäß auswirft, das ich in meinem Skript auf dem Gerät emulieren muss.

Grundsätzlich möchte ich wissen, ob ich eine Signalverarbeitung oder etwas auf dem Gerät ausführen muss, um den Auswurf auf Mac-Hosts ordnungsgemäß zu emulieren.

NC
quelle
1
Nun, in Windows weisen Sie den PnP-Manager an, ein Massenspeichergerät auszuwerfen. Zum Beispiel in C # hätten Sie das folgende Code-Snippet, um mit Ihrem USB umzugehen, if ((device.LogicalDrive == null) || (device.LogicalDrive.Length == 0)) continue; device.Eject(true);daher denke ich, dass Sie nur den PnP-Manager für Ihren jeweiligen Host herausfinden müssen.
Pneumatik

Antworten:

2

Das Konzept des Auswerfens auf Benutzerebene kann verschiedene Bedeutungen haben, während das Abmelden immer nur das Abmelden bedeutet.

Bei optischen Medien bewirkt das Auswerfen ein physisches Auswerfen der Disc nach dem Abnehmen.

Bei einigen Datenträgern, z. B. austauschbaren Flash-Datenträgern (USB-Speichersticks; alles, was im Finder als weißes Laufwerk zum Laden von Slots angezeigt wird), wird beim Auswerfen die Bereitstellung aller Datenträger des Geräts aufgehoben und jede weitere Interaktion mit dem Gerät verhindert, bis es physisch entfernt wird. Das Gerät verbleibt in der USB-Gerätestruktur, blockierte Geräte /devwerden jedoch entfernt und nicht mehr im Festplatten-Dienstprogramm oder aufgeführt diskutil list.

Bei anderen Medientypen, wie z. B. austauschbaren Festplatten (alles, was im Finder als gelbes Kunststoffgehäuse angezeigt wird), wird beim Auswerfen einfach die Bereitstellung des Volumes aufgehoben und es kann erneut bereitgestellt oder auf das Blockgerät geschrieben werden.

Ich bin mir nicht ganz sicher, nach welchen Kriterien welches Verhalten auf welche Art von Gerät angewendet wird. Ich habe mit einer Reihe von CoreStorage / FileVault 2-verschlüsselten Festplatten und einer Reihe von USB-Flash-Laufwerken getestet. Die Anzahl der Volumes auf dem betreffenden Gerät scheint nur einen geringen Unterschied zu machen, der Interaktionsblock kann jedoch von CoreStorage oder von dem Unterschied im Medientyp bestimmt werden.

OS X beklagt sich nicht, wenn Sie ein Gerät vom Computer trennen, das nicht ausgeworfen wurde, dessen Datenträger jedoch nicht bereitgestellt wurden.

Doppelpunkte
quelle
0

Wenn Sie GUI-Tools auf Mac und Linux verwenden, um das USB-Gerät "auszuwerfen", prüft die GUI normalerweise, ob das Gerät ausgelastet ist oder nicht. Wenn es nicht ausgelastet ist, wird das USB-Gerät vom Dateisystem abgemeldet.

Die meisten Unix / Linux-Systeme haben einen Unmount-Befehl, den die GUI-Tools ausführen, wenn Sie das USB-Gerät auswerfen. Dieser Befehl sollte ausgeführt werden, bevor das Gerät physisch entfernt wird (es gibt jedoch Optionen, die es zwingen, die Verweise auf das Gerät zu entfernen, aber sie funktionieren nicht immer).

Schauen Sie sich die Handbuchseiten für an umount. Eine Kopie finden Sie hier .

Justin Pearce
quelle