Montare un disco Linux in WSL 2 (anteprima)

Se si vuole accedere a un formato di disco Linux non supportato da Windows, è possibile usare WSL 2 per montare il disco e accedere al relativo contenuto. Questa esercitazione illustra i passaggi per identificare il disco e la partizione da collegare a WSL2, come montarli e come accedervi.

Nota

L'accesso amministratore è necessario per collegare un disco a WSL 2. Il comando WSL 2 non supporta il montaggio di un disco (o partizioni che appartengono al mount disco) attualmente in uso. wsl --mount collega sempre l'intero disco anche se è richiesta solo una partizione. Non è possibile montare il disco Windows di installazione.

Prerequisiti

Per accedere a questa funzionalità, Windows 11 Build 22000 o versione successiva. È possibile partecipare al Windows Insiders Program per ottenere le build di anteprima più recenti.

Montaggio di un disco non partitionato

In questo caso più semplice, se si dispone di un disco che non dispone di partizioni, è possibile montarlo direttamente usando il wsl --mount comando . Prima di tutto è necessario identificare il disco.

  1. Identificare il disco: per elencare i dischi disponibili in Windows, eseguire:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    I percorsi dei dischi sono disponibili nelle colonne "DeviceID". In genere nel \\.\PHYSICALDRIVE* formato .

  2. Montare il disco: usando PowerShell, è possibile montare il disco usando il percorso del disco individuato in precedenza, eseguire:

    wsl --mount <DiskPath>
    

    Montaggio di un'unità in WSL

Montaggio di un disco partizionato

Se si dispone di un disco in cui non si è certi del formato di file o delle partizioni disponibili, è possibile seguire la procedura seguente per montarlo.

  1. Identificare il disco: per elencare i dischi disponibili in Windows, eseguire:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    I percorsi dei dischi sono elencati dopo "DeviceID", in genere nel \\.\PHYSICALDRIVE* formato .

  2. Elencare e selezionare le partizioni da montare in WSL 2: dopo aver identificato il disco, eseguire:

    wsl --mount <DiskPath> --bare
    

    In questo modo il disco sarà disponibile in WSL 2. Nel caso dell'esempio, <DiskPath> è \\.\PHYSICALDRIVE* .

  3. Una volta collegata, la partizione può essere elencata eseguendo il comando seguente all'interno di WSL 2:

    lsblk
    

    Verranno visualizzati i dispositivi a blocchi disponibili e le relative partizioni.

All'interno di Linux, un dispositivo a blocchi viene identificato come /dev/<Device><Partition> . Ad esempio, /dev/sdb3 è il numero di partizione 3 del disco sdb .

Output di esempio:

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

Identificazione del tipo di file system

Se non si conosce il tipo di file system di un disco o di una partizione, è possibile usare questo comando:

blkid <BlockDevice>

Verrà restituito il tipo di file system rilevato (nel TYPE="<Filesystem>" formato ).

Montare le partizioni selezionate

Dopo aver identificato le partizioni da montare, eseguire questo comando in ogni partizione:

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

Nota

Se si vuole montare l'intero disco come volume singolo,ad esempio se il disco non è partizionato, --partition è possibile omettere.

Se omesso, il tipo di file system predefinito è "ext4".

Accedere al contenuto del disco

Dopo il montaggio, è possibile accedere al disco nel percorso a cui punta il valore di configurazione: automount.root . Il valore predefinito è /mnt/wsl.

Da Windows, è possibile accedere al disco da Esplora file passando a: \\wsl$\\<Distro>\\<Mountpoint> (selezionare qualsiasi distribuzione Linux).

Smontare il disco

Per smontare e scollegare il disco da WSL 2, eseguire:

wsl --unmount <DiskPath>

Montare un disco rigido virtuale in WSL

È anche possibile montare i file del disco rigido virtuale (VHD) in WSL usando wsl --mount . A tale scopo, è prima necessario montare il disco rigido virtuale Windows Mount-VHD usando il comando in Windows. Assicurarsi di eseguire questo comando con privilegi di amministratore. Di seguito è riportato un esempio in cui si usa questo comando e viene restituito anche il percorso del disco. Assicurarsi di sostituire con <pathToVHD> il percorso VHD effettivo.

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

È possibile usare l'output precedente per ottenere il percorso del disco rigido virtuale e montarlo in WSL seguendo le istruzioni della sezione precedente.

È anche possibile usare questa tecnica per montare e interagire con i dischi rigidi virtuali di altre distribuzione WSL, poiché ogni distribuzione WSL 2 viene archiviata tramite un file del disco rigido virtuale denominato ext4.vhdx : . Per impostazione predefinita, i dischi rigidi virtuali per le distribuzione WSL 2 sono archiviati in questo percorso: , prestare attenzione ad accedere a questi file di sistema, si tratta di un flusso di lavoro C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName] power user. Assicurarsi di eseguire prima wsl --shutdown di interagire con questo disco per assicurarsi che il disco non sia in uso.

Montaggio del disco rigido virtuale WSL

Informazioni di riferimento per la riga di comando

Montaggio di un file system specifico

Per impostazione predefinita, WSL 2 tenterà di montare il dispositivo come ext4. Per specificare un altro file system, eseguire:

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

Ad esempio, per montare un disco come fat, eseguire:

wsl --mount <Diskpath> -t vfat

Nota

Per elencare i file system disponibili in WSL2, eseguire: cat /proc/filesystems
Quando un disco è stato montato tramite WSL2 (Linux file system), non è più disponibile per il montaggio tramite un driver ext4 nel Windows file system.

Montaggio di una partizione specifica

Per impostazione predefinita, WSL 2 tenta di montare l'intero disco. Per montare una partizione specifica, eseguire:

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

Questa operazione funziona solo se il disco è MBR (Record di avvio master) o GPT (tabella di partizione GUID). Per informazioni sugli stili di partizione, vedere MBR e GPT.

Specifica delle opzioni di montaggio

Per specificare le opzioni di montaggio, eseguire:

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

Esempio:

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

Nota

Al momento sono supportate solo opzioni specifiche del file system. Le opzioni generiche, ro, rw, noatime, ... ad esempio , non sono supportate.

Collegamento del disco senza montarlo

Se lo schema del disco non è supportato da nessuna delle opzioni precedenti, è possibile collegare il disco a WSL 2 senza montarlo eseguendo:

wsl --mount <DiskPath> --bare

In questo modo il dispositivo a blocchi sarà disponibile all'interno di WSL 2 in modo che possa essere montato manualmente da tale dispositivo. Usare lsblk per elencare i dispositivi a blocchi disponibili all'interno di WSL 2.

Scollegamento di un disco

Per scollegare un disco da WSL 2, eseguire:

wsl --unmount [DiskPath]

Se Diskpath viene omesso, tutti i dischi collegati vengono smontati e scollegati.

Nota

Se non è possibile smontare un disco, È possibile forzare la chiusura di WSL 2 eseguendo wsl --shutdown , che scollega il disco.

Limitazioni

  • Al momento è possibile collegare solo interi dischi a WSL 2, ovvero non è possibile collegare solo una partizione. In concreto, ciò significa che non è possibile usare per leggere una partizione nel dispositivo di avvio, perché tale dispositivo non può essere wsl --mount scollegato da Windows.

  • Le unità flash USB e le schede SD non sono attualmente supportate e non riusciranno a connettersi a WSL 2. I dischi USB sono tuttavia supportati.

  • Solo i file system supportati in modo nativo nel kernel possono essere montati da wsl --mount . Ciò significa che non è possibile usare i driver del file system installati (ad esempio ntfs-3g) chiamando wsl --mount .