Montare un disco Linux in WSL 2

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

Se si connette un'unità esterna e non si ha esito positivo con queste istruzioni di montaggio, è possibile provare le istruzioni per Connessione dispositivi USB. Il comando wsl --mount attualmente non supporta le unità USB/flash/lettori di schede SD (altre informazioni su questo problema).

Nota

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

Prerequisiti

Occorre trovarsi in Windows 11 Build 22000 o versione successiva oppure eseguire la versione di Microsoft Store di WSL. Per controllare la versione di WSL e Windows, usare il comando: wsl.exe --version

Differenze tra il montaggio di un'unità esterna con la formattazione di Windows e la formattazione di Linux

Le unità esterne formattate per Windows usano in genere la formattazione del file system NTFS. Le unità esterne formattate per Linux usano in genere la formattazione del file system Ext4.

Se è stata montata un'unità in formato NTFS nel file system Windows, è possibile accedere a tale unità dalla distribuzione Linux usando WSL creando una directory montata (sudo mkdir /mnt/dsostituendo 'd' con qualsiasi lettera di unità che si vuole usare) e quindi usando il plug-in di interoperabilità del drvfs file system, con il comando :

sudo mount -t drvfs D: /mnt/d

Altre informazioni sugli scenari di montaggio.

Se si dispone di un'unità in formato Ext4, non è possibile montarla nel file system Windows. Per montare un'unità in formato Ext4 nella distribuzione Linux con WSL, è possibile usare il comando wsl --mount seguendo le istruzioni riportate di seguito.

Montaggio di un disco non partizionato

Se si dispone di un disco che non include partizioni, è possibile montarlo direttamente usando il comando wsl --mount. 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 sotto il formato \\.\PHYSICALDRIVE*.

  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 in cui si trova o delle partizioni in esso contenute, è possibile seguire la procedura seguente per montarla.

  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 formato \\.\PHYSICALDRIVE*.

  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 formato TYPE="<Filesystem>" ).

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 desidera montare l'intero disco come un singolo volume (ad esempio, se il disco non è partizionato), --partition può essere omesso.

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

Se si vuole smontare e scollegare il disco da WSL 2, eseguire:

wsl --unmount <DiskPath>

Montare un disco rigido virtuale in WSL

Nota

WSL da Microsoft Store introduce un nuovo argomento per montare direttamente un disco rigido virtuale: wsl --mount --vhd <pathToVHD>

È anche possibile montare file VHD (Virtual Hard Disk Files) in WSL usando wsl --mount. A tale scopo, è prima necessario montare il disco rigido virtuale in Windows usando il comando Mount-VHD in Windows. Assicurarsi di eseguire questo comando con privilegi di amministratore. Di seguito è riportato un esempio in cui viene usato questo comando e viene restituito anche il percorso del disco. Assicurarsi di sostituire <pathToVHD> con 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 per questo disco rigido virtuale e montarlo in WSL seguendo le istruzioni riportate nella sezione precedente.

È anche possibile usare questa tecnica per montare e interagire con i dischi rigidi virtuali di altre distribuzioni 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 distribuzioni WSL 2 vengono archiviati in questo percorso: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName], prestare attenzione ad accedere a questi file di sistema. Si tratta di un flusso di lavoro di power user. Assicurarsi di eseguire wsl --shutdown prima 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 (file system Linux), non è più disponibile per il montaggio tramite un driver ext4 nel file system Windows.

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 principale) o GPT (tabella delle partizioni GUID). Informazioni sugli stili di partizione - 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

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

Collegamento del disco senza montaggio

Se lo schema del disco non è supportato da una 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 lì. Usare lsblk per elencare i dispositivi a blocchi disponibili all'interno di WSL 2.

Specifica del nome del montaggio

Nota

Questa opzione è disponibile solo con WSL da Microsoft Store

Per impostazione predefinita, il nome del punto di montaggio viene generato in base al disco fisico o al nome del disco rigido virtuale. È possibile eseguire l'override di con --name. Esempio:

wsl --mount <DiskPath> --name myDisk

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 un disco non riesce a smontare, WSL 2 può essere costretto a uscire eseguendo wsl --shutdown, che scollega il disco.

Limiti

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

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

  • I file system non supportati direttamente dal kernel possono essere montati tramite un collegamento --bare e quindi richiamando il driver FUSE pertinente.