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/d
sostituendo '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.
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*
.Montare il disco: usando PowerShell, è possibile montare il disco usando il percorso del disco individuato in precedenza, eseguire:
wsl --mount <DiskPath>
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.
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*
.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*
.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.
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) chiamandowsl --mount
.I file system non supportati direttamente dal kernel possono essere montati tramite un collegamento
--bare
e quindi richiamando il driver FUSE pertinente.
Windows Subsystem for Linux