
Ich versuche zu verstehen, wie WSL2 mit dem Host-Betriebssystem Win11 interagiert.
Die WSL-Laufwerkliste meldet kurz meinen USB-Stick als \\.\PHYSICALDRIVE2
und meine interne SSD als\\.\PHYSICALDRIVE0
Aber in regedit HKLM\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\ Scsi Bus 0\Target ID 0\Logical Unit Id 0\DeviceName
steht, meine SSD istPhysicalDrive2
Irgendeine Idee, warum diese Diskrepanz besteht?
Antwort1
Ich bin mir nicht sicher, warum die Registrierung für Ihr Laufwerk ein meldet DeviceName
(oder was diese Eigenschaft erzeugt haben könnte). Im Allgemeinen scheint der HARDWARE
Abschnitt der Registrierung ziemlich undokumentiert zu sein. Und wie Sie sehen können, ist dasnichtder eigentliche Name, den Sie sowieso zum Mounten verwenden müssen.
Zur Referenz: Ich habe drei SSDs in meinem System und keine hat ein DeviceName
im SCSI-Bereich. Beispiel:
> Get-ChildItem 'HKLM:\HARDWARE\DEVICEMAP\Scsi\Scsi Port 5\Scsi Bus 0\Target Id 0\'
Hive: HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 5\Scsi Bus 0\Target Id 0
Name Property
---- --------
Logical Unit Id 0 InquiryData : {0, 0, 6, 18...}
SerialNumber : xxxx-xxxxx-xxx
Identifier : NVMe Samsung SSD 950 BXX7
DeviceType : DiskPeripheral
DeviceIdentifierPage : {0, 131, 0, 24...}
Es kann sein, dass eine frühere Windows-Version oder eine andere Software dies irgendwann auf Ihrem System festgelegt hat. Selbst wenn dieser Name in der Registrierung gültig ist, gilt er wahrscheinlich fürDasbestimmter SCSI-Bus/Port und nicht das System als Ganzes.
Aber unabhängig davon ist die SCSI-Bus-Registrierung nicht die Quelle der Namen, die Sie für die WSL-Montage verwenden müssen. Diese werden von WMI (über CIM) zurückgegeben. Wie Sie in sehen könnenDieser Artikel:
Woher stammen diese Daten? Die Antwort lautet: Diese Daten stammen aus vielen Quellen, beispielsweise aus der WinAPI, der Windows-Registrierung, dem SMBIOS oder benutzerdefinierten Funktionen, die in die MOF-Definition eingebettet sind.
Wir können also nicht unbedingt davon ausgehen, dass Sie die Laufwerksinformationen direkt aus der Registrierung abrufen können. Aus diesem Artikel geht auch hervor, dass es anscheinend eine Möglichkeit gibt, herauszufinden, wie WMI diese Werte abruft, aber ich habe mich nicht eingehend mit diesem Delphi-Code befasst, um zu sehen, wie er PowerShell zugeordnet werden könnte. Der entsprechende PowerShell-Artikel scheint von Microsoft offline genommen worden zu sein, wahrscheinlich, weil WMI in PowerShell durch CMI ersetzt wurde.
Als dieMicrosoft Docssagen wir, weiterhin verwenden...
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
... um den richtigen Namen für die Verwendung mit zu erhalten wsl --mount
. Beachten Sie auch, dass dieseTunscheinen auf die gleichen "Datenträgernummern" abgebildet zu sein, die Sie inComputerverwaltung -> Speicher -> Datenträgerverwaltung.
Antwort2
beim Betrachten einiger anderer Systeme stellte sich heraus, dass keines davon einen DeviceName-Wert für eines der HKLM:\HARDWARE\DEVICEMAP\Scsi...-Geräte hatte, das war also reine Zeitverschwendung ...
Ich habe jedoch festgestellt, dass Microsoft-Windows-StorageSpaces-Driver/Operational eventID 207 eine Gerätenummer enthält, die mit der Nummer \.\PHYSICALDRIVE von Get-CimInstance übereinstimmt. Außerdem enthält sie die DriveID {GUID} und die Seriennummer des Laufwerks, nach der ich letztendlich gesucht habe.