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 einzuhängen und auf den Inhalt zuzugreifen. In diesem Tutorial werden die Schritte zum Identifizieren des Datenträgers und der Partition erläutert, die an WSL2 angefügt werden sollen, die Einbindung und der Zugriff darauf.

Informationen zum Anschließen eines USB-Geräts (Flash-Laufwerk, SD-Kartenleser usw.) finden Sie unter Verbinden von USB-Geräten.

Hinweis

Administratorzugriff ist erforderlich, um einen Datenträger an WSL 2 anzufügen. Der WSL 2-Befehl mount unterstützt das Einbinden eines Datenträgers (oder von Partitionen, die zum Datenträger gehören), der derzeit verwendet wird, nicht. wsl --mount fügt immer den gesamten Datenträger an, auch wenn nur eine Partition angefordert wird. Sie können den Windows-Installationsdatenträger nicht einbinden.

Voraussetzungen

Sie müssen Windows 11 Build 22000 oder höher verwenden oder die Microsoft Store-Version von WSL ausführen. Sie können dem Windows Insiders-Programm beitreten, um die neuesten Vorschaubuilds zu erhalten.

Einbinden eines nicht partitionierten Datenträgers

Wenn Sie in diesem einfachsten Fall über einen Datenträger ohne Partitionen verfügen, können Sie ihn mithilfe des wsl --mount Befehls direkt einbinden. Zunächst 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 "DeviceID" verfügbar. Normalerweise unter dem \\.\PHYSICALDRIVE* Format.

  2. Einbinden des Datenträgers : Mithilfe von PowerShell können Sie den Datenträger mithilfe des oben ermittelten Datenträgerpfads einbinden. Führen Sie Folgendes aus:

    wsl --mount <DiskPath>
    

    Einbinden eines Laufwerks in WSL

Einbinden eines partitionierten Datenträgers

Wenn Sie über einen Datenträger verfügen, in dem Sie nicht sicher sind, in welchem Dateiformat er sich befindet oder welche Partitionen er aufweist, 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" aufgeführt, in der Regel im \\.\PHYSICALDRIVE* Format.

  2. Auflisten und Auswählen der Partitionen, die in WSL 2 eingebunden werden sollen : Führen Sie folgendes aus, nachdem der Datenträger identifiziert wurde:

    wsl --mount <DiskPath> --bare
    

    Dadurch wird der Datenträger in WSL 2 verfügbar. (Im Fall unseres Beispiels ist \\.\PHYSICALDRIVE*der <DiskPath> .

  3. Nach dem Anfügen kann die Partition aufgelistet werden, indem Sie den folgenden Befehl in WSL 2 ausführen:

    lsblk
    

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

Innerhalb von Linux wird ein Blockgerät als /dev/<Device><Partition>identifiziert. Beispielsweise ist /dev/sdb3 die Partitionsnummer 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 Typ des Dateisystems eines Datenträgers oder einer Partition nicht kennen, können Sie den folgenden Befehl verwenden:

blkid <BlockDevice>

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

Einbinden der ausgewählten Partitionen

Nachdem Sie die Partitionen identifiziert haben, die Sie einbinden möchten, führen Sie den folgenden Befehl auf jeder Partition aus:

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

Hinweis

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

Wenn nicht angegeben, lautet der Standarddateityp "ext4".

Zugreifen auf den Datenträgerinhalt

Nach dem Einbinden 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 von Explorer aus auf den Datenträger zugegriffen werden, indem Sie zu navigieren: \\wsl$\\<Distro>\\<Mountpoint> (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) in WSL einbinden, indem Sie verwenden wsl --mount. Hierzu müssen Sie zunächst die VHD mithilfe des Mount-VHD Befehls in Windows einbinden. Führen Sie diesen Befehl unbedingt mit Administratorrechten aus. Im Folgenden finden Sie ein Beispiel, in dem wir diesen Befehl verwenden und auch den Datenträgerpfad ausgeben. Ersetzen Sie unbedingt <pathToVHD> durch Ihren tatsächlichen VHD-Pfad.

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 abzurufen und diesen gemäß den Anweisungen im vorherigen Abschnitt in WSL einzubinden.

Sie können diese Technik auch zum Einbinden und Interagieren mit den virtuellen Festplatten anderer WSL-Distributionen verwenden, da jede WSL 2-Distribution über eine virtuelle Festplattendatei mit dem Namen gespeichert wird: ext4.vhdx. Standardmäßig werden die VHDs für WSL 2-Distributionen in diesem Pfad gespeichert: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]. Achten Sie darauf, auf diese Systemdateien zuzugreifen. Hierbei handelt es sich um einen Power User-Workflow. Stellen Sie sicher, dass Sie vor der Interaktion mit diesem Datenträger ausführen wsl --shutdown , um sicherzustellen, dass der Datenträger nicht verwendet wird.

Einbinden einer WSL-VHD

Befehlszeilenreferenz

Einbinden eines bestimmten Dateisystems

Standardmäßig versucht WSL 2, das Gerät als ext4 zu einbinden. Führen Sie Folgendes aus, um ein anderes Dateisystem anzugeben:

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

Führen Sie beispielsweise Folgendes aus, um einen Datenträger als fat einzuhängen:

wsl --mount <Diskpath> -t vfat

Hinweis

Um die verfügbaren Dateisysteme in WSL2 aufzulisten, führen Sie Folgendes aus: cat /proc/filesystems
Wenn ein Datenträger über WSL2 (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 einzuhängen. Führen Sie zum Einbinden einer bestimmten Partition Folgendes aus:

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

Dies funktioniert nur, wenn der Datenträger entweder MBR (Master Boot Record) oder GPT (GUID Partition Table) ist. Erfahren Sie mehr über Partitionsstile – MBR und GPT.

Angeben von Bereitstellungsoptionen

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 Einbindung

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 einbinden, indem Sie folgendes ausführen:

wsl --mount <DiskPath> --bare

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

Angeben des Bereitstellungsnamens

Hinweis

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

Standardmäßig wird der Mountpointname basierend auf dem physischen Datenträger oder VHD-Namen generiert. Dies kann mit --nameüberschrieben werden. Beispiel:

wsl --mount <DiskPath> --name myDisk

Trennen eines Datenträgers

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

wsl --unmount [DiskPath]

Wenn Diskpath nicht angegeben wird, werden alle angefügten Datenträger nicht eingebunden und getrennt.

Hinweis

Wenn die Bereitstellung eines Datenträgers nicht aufgehoben werden kann, kann WSL 2 zum Beenden gezwungen werden, indem ausgeführt wsl --shutdownwird, wodurch der Datenträger getrennt wird.

Einschränkungen

  • Derzeit können nur ganze Datenträger an WSL 2 angefügt werden, was bedeutet, dass es nicht möglich ist, nur eine Partition anzufügen. Konkret bedeutet dies, dass es nicht möglich wsl --mount ist, 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 von wsl --mounteingebunden werden. Dies bedeutet, dass es nicht möglich ist, installierte Dateisystemtreiber (z. B. ntfs-3g) durch Aufrufen wsl --mountvon zu verwenden.

  • Dateisysteme, die nicht direkt vom Kernel unterstützt werden, können über eine --bare Anfügung eingebunden und dann den entsprechenden FUSE-Treiber aufgerufen werden.