Einbinden eines Linux-Datenträgers in WSL 2

Wenn Sie auf ein Linux-Datenträgerformat zugreifen möchten, das von Windows nicht unterstützt wird, können Sie WSL 2 verwenden, um Ihren Datenträger einzubinden und auf dessen Inhalt zuzugreifen. In diesem Tutorial werden die Schritte zum Identifizieren des Datenträgers und der Partition erläutert, die an WSL 2 angefügt werden sollen, und Sie erfahren, wie Sie sie einbinden und darauf zugreifen.

Wenn Sie ein externes Laufwerk anschließen und mit diesen Anweisungen zur Einbindung keinen Erfolg haben, sollten Sie die Anweisungen zum Verbinden mit USB-Geräten ausprobieren. Der wsl --mount-Befehl unterstützt derzeit keine USB-/Flashlaufwerke/SD-Kartenleser (weitere Informationen zu diesem Problem).

Hinweis

Zum Anfügen eines Datenträgers an WSL 2 ist Administratorzugriff erforderlich. Der WSL 2-Befehl mount unterstützt das Einbinden eines derzeit verwendeten Datenträgers (oder von Partitionen, die zu dem Datenträger gehören) nicht. wsl --mount fügt immer den gesamten Datenträger an, auch wenn nur eine einzelne Partition angefordert wird. Der Windows-Installationsdatenträger kann nicht eingebunden werden.

Voraussetzungen

Sie müssen mindestens den Windows 11-Build 22000 verwenden oder die Microsoft Store-Version von WSL ausführen. Um Ihre WSL- und Windows-Version zu überprüfen, verwenden Sie den Befehl: wsl.exe --version

Unterschiede zwischen der Einbindung eines externen Laufwerks mit Windows-Formatierung und eines mit Linux-Formatierung

Externe Laufwerke, die für Windows formatiert sind, verwenden in der Regel die NTFS-Dateisystemformatierung. Externe Laufwerke, die für Linux formatiert sind, verwenden in der Regel die ext4-Dateisystemformatierung.

Wenn Sie ein NTFS-formatiertes Laufwerk in Ihr Windows-Dateisystem eingebunden haben, können Sie mithilfe von WSL von Ihrer Linux-Distribution aus auf dieses Laufwerk zugreifen, indem Sie ein eingebundenes Verzeichnis erstellen (sudo mkdir /mnt/d, wobei Sie „d“ durch den gewünschten Laufwerkbuchstaben ersetzen) und dann das Interoperabilitäts-Plug-In des drvfs-Dateisystems mit folgendem Befehl verwenden:

sudo mount -t drvfs D: /mnt/d

Weitere Informationen zu Einbindungsszenarien.

Wenn Sie über ein Ext4-formatiertes Laufwerk verfügen, können Sie es nicht in Ihrem Windows-Dateisystem bereitstellen. Um ein ext4-formatiertes Laufwerk auf Ihrer Linux-Distribution mit WSL einzubinden, können Sie den Befehl wsl --mount gemäß der nachstehenden Anweisungen verwenden.

Einbinden eines nicht partitionierten Datenträgers

Wenn Sie über einen Datenträger ohne Partitionen verfügen, können Sie ihn direkt mithilfe des Befehls wsl --mount einbinden. Zuerst müssen Sie den Datenträger identifizieren.

  1. Identifizieren des Datenträgers: Führen Sie Folgendes aus, um die verfügbaren Datenträger in Windows aufzulisten:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Die Datenträgerpfade sind unter den Spalten vom Typ „DeviceID“ verfügbar. Sie haben üblicherweise das Format \\.\PHYSICALDRIVE*.

  2. Einbinden des Datenträgers: Mit PowerShell können Sie den Datenträger unter Verwendung des oben ermittelten Datenträgerpfads einbinden. Führen Sie dazu Folgendes aus:

    wsl --mount <DiskPath>
    

    Bereitstellen eines Laufwerks in WSL

Einbinden eines partitionierten Datenträgers

Wenn Sie über einen Datenträger verfügen, bei dem Sie das Dateiformat nicht genau kennen oder nicht genau wissen, über welche Partitionen er verfügt, können Sie die folgenden Schritte zum Einbinden ausführen.

  1. Identifizieren des Datenträgers: Führen Sie Folgendes aus, um die verfügbaren Datenträger in Windows aufzulisten:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Die Datenträgerpfade werden nach „DeviceID“ aufgelistet und haben üblicherweise das Format \\.\PHYSICALDRIVE*.

  2. Auflisten und Auswählen der Partitionen, die in WSL 2 eingebunden werden sollen: Führen Sie nach der Identifizierung des Datenträgers Folgendes aus:

    wsl --mount <DiskPath> --bare
    

    Dadurch wird der Datenträger in WSL 2 verfügbar. (In unserem Beispiel lautet der Laufwerkpfad (<DiskPath>) wie folgt: \\.\PHYSICALDRIVE*.)

  3. Nach dem Anfügen kann die Partition durch Ausführen des folgenden Befehls in WSL 2 aufgelistet werden:

    lsblk
    

    Dadurch werden die verfügbaren Blockgeräte und deren Partitionen angezeigt.

Innerhalb von Linux wird ein Blockgerät als /dev/<Device><Partition> identifiziert. „/dev/sdb3“ ist beispielsweise die Partition Nummer 3 des Datenträgers sdb.

Beispielausgabe:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0    1G  0 disk
├─sdb2   8:18   0   50M  0 part
├─sdb3   8:19   0  873M  0 part
└─sdb1   8:17   0  100M  0 part
sdc      8:32   0  256G  0 disk /
sda      8:0    0  256G  0 disk

Identifizieren des Dateisystemtyps

Wenn Sie den Dateisystemtyp eines Datenträgers oder einer Partition nicht kennen, können Sie den folgenden Befehl verwenden:

blkid <BlockDevice>

Dadurch wird der erkannte Dateisystemtyp ausgegeben (im Format TYPE="<Filesystem>").

Einbinden der ausgewählten Partitionen

Führen Sie den folgenden Befehl für jede Partition aus, die Sie einbinden möchten:

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

Hinweis

Wenn Sie den gesamten Datenträger als einzelnes Volume einbinden möchten (sprich: wenn der Datenträger nicht partitioniert ist), kann --partition weggelassen werden.

Wenn die Angabe weggelassen wird, wird standardmäßig der Dateisystemtyp „ext4“ verwendet.

Zugreifen auf den Datenträgerinhalt

Nach der Bereitstellung kann auf den Datenträger unter dem Pfad zugegriffen werden, auf den der Konfigurationswert verweist: automount.root. Der Standardwert ist /mnt/wsl.

Unter Windows kann vom Explorer aus auf den Datenträger zugegriffen werden, indem Sie zu \\wsl$\\<Distro>\\<Mountpoint> navigieren. (Wählen Sie eine beliebige Linux-Distribution aus.)

Aufheben der Bereitstellung des Datenträgers

Wenn Sie die Bereitstellung aufheben und den Datenträger von WSL 2 trennen möchten, führen Sie Folgendes aus:

wsl --unmount <DiskPath>

Einbinden einer VHD in WSL

Hinweis

WSL aus dem Microsoft Store führt ein neues Argument ein, um eine VHD direkt einzubinden: wsl --mount --vhd <pathToVHD>

Sie können auch virtuelle Festplattendateien (VHD-Dateien) mithilfe von wsl --mount in WSL einbinden. Dazu müssen Sie zunächst den Befehl Mount-VHD unter Windows verwenden, um die VHD in Windows einzubinden. Achten Sie darauf, dass Sie diesen Befehl mit Administratorrechten ausführen. Im Anschluss finden Sie ein Beispiel, in dem dieser Befehl verwendet und auch der Datenträgerpfad ausgegeben wird. <pathToVHD> muss durch den tatsächlichen VHD-Pfad ersetzt werden.

Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path <pathToVHD> -PassThru | Get-Disk).Number)"

Sie können die obige Ausgabe verwenden, um den Datenträgerpfad für diese VHD zu ermitteln und sie gemäß den Anweisungen aus dem vorherigen Abschnitt in WSL einzubinden.

Mit dieser Technik können Sie auch virtuelle Festplatten anderer WSL-Distributionen einbinden und mit ihnen interagieren, da jede WSL 2-Distribution als virtuelle Festplattendatei mit folgendem Namen gespeichert wird: ext4.vhdx. Standardmäßig werden die VHDs für WSL 2-Distributionen am folgenden Pfad gespeichert: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]. Seien Sie vorsichtig, wenn Sie auf diese Systemdateien zugreifen. Hierbei handelt es sich um einen Workflow für Poweruser. Führen Sie wsl --shutdown aus, bevor Sie mit diesem Datenträger interagieren, um sicherzustellen, dass der Datenträger nicht verwendet wird.

Bereitstellen einer WSL-VHD

Befehlszeilenreferenz

Einbinden eines bestimmten Dateisystems

Standardmäßig versucht WSL 2, das Gerät als „ext4“ einzubinden. Wenn Sie ein anderes Dateisystem angeben möchten, können Sie Folgendes ausführen:

wsl --mount <DiskPath> -t <FileSystem>

Führen Sie beispielsweise Folgendes aus, um einen Datenträger als FAT einzubinden:

wsl --mount <Diskpath> -t vfat

Hinweis

Führen Sie Folgendes aus, um die verfügbaren Dateisysteme in WSL 2 aufzulisten: cat /proc/filesystems
Wenn ein Datenträger über WSL 2 (Linux-Dateisystem) eingebunden wurde, kann er nicht mehr über einen ext4-Treiber im Windows-Dateisystem eingebunden werden.

Bereitstellen einer bestimmten Partition

Standardmäßig versucht WSL 2, den gesamten Datenträger einzubinden. Führen Sie zum Einbinden einer bestimmten Partition Folgendes aus:

wsl --mount <Diskpath> -p <PartitionIndex>

Das funktioniert bei MBR-Datenträgern (Master Boot Record) und bei GPT-Datenträgern (GUID-Partitionstabelle). Informationen zu den Partitionsstilen MBR und GPT finden Sie hier.

Angeben von Einbindungsoptionen

Führen Sie Folgendes aus, um Bereitstellungsoptionen anzugeben:

wsl --mount <DiskPath> -o <MountOptions>

Beispiel:

wsl --mount <DiskPath> -o "data=ordered"

Hinweis

Derzeit werden nur dateisystemspezifische Optionen unterstützt. Generische Optionen wie ro, rw, noatime, ... werden nicht unterstützt.

Anfügen des Datenträgers, ohne ihn einzubinden

Wenn das Datenträgerschema von keiner der oben genannten Optionen unterstützt wird, können Sie den Datenträger an WSL 2 anfügen, ohne ihn zu einzubinden. Führen Sie hierzu Folgendes aus:

wsl --mount <DiskPath> --bare

Dadurch wird das Blockgerät in WSL 2 verfügbar und kann von dort aus manuell eingebunden werden. Verwenden Sie lsblk, um die verfügbaren Blockgeräte in WSL 2 aufzulisten.

Angeben des Einbindungsnamens

Hinweis

Diese Option ist nur mit WSL aus dem Microsoft Store verfügbar.

Standardmäßig wird der Bereitstellungspunktname basierend auf dem Namen des physischen Datenträgers oder der VHD generiert. Dies kann mit --name außer Kraft gesetzt werden. Beispiel:

wsl --mount <DiskPath> --name myDisk

Trennen eines Datenträgers

Führen Sie Folgendes aus, um einen Datenträger von WSL 2 zu trennen:

wsl --unmount [DiskPath]

Ohne Angabe von Diskpath wird die Einbindung aller angefügten Datenträger aufgehoben, und die Datenträger werden getrennt.

Hinweis

Wenn die Bereitstellung eines Datenträgers nicht aufgehoben werden kann, kann durch Ausführen von wsl --shutdown die Beendigung von WSL 2 erzwungen werden. Dadurch wird der Datenträger getrennt.

Begrenzungen

  • Derzeit können nur vollständige Datenträger an WSL 2 angefügt werden. Es ist also nicht möglich, nur eine Partition anzufügen. Konkret bedeutet das, dass es nicht möglich ist, mithilfe von wsl --mount eine Partition auf dem Startgerät zu lesen, da dieses Gerät nicht von Windows getrennt werden kann.

  • Nur Dateisysteme, die nativ im Kernel unterstützt werden, können mithilfe von wsl --mount eingebunden werden. Das bedeutet, dass es nicht möglich ist, installierte Dateisystemtreiber (z. B. „ntfs-3g“) durch Aufrufen von wsl --mount zu verwenden.

  • Dateisysteme, die nicht direkt vom Kernel unterstützt werden, können über eine Anfügung vom Typ --bare und anschließendes Aufrufen des entsprechenden FUSE-Treibers eingebunden werden.