Montar um disco do Linux no WSL 2

Se quiser acessar um formato de disco do Linux que não tenha suporte para o Windows, você poderá utilizar o WSL 2 para montar o disco e acessar seu conteúdo. Este tutorial abordará as etapas para identificar o disco e a partição aos quais você deve anexar o WSL2, como montá-los e como acessá-los.

Se você estiver conectando uma unidade externa e não obtiver êxito com essas instruções de montagem, talvez deseje tentar as instruções para Conectar dispositivos USB. No momento, o comando wsl --mount não dá suporte a unidades USB/flash ou leitores de cartão SD (Saiba mais sobre esse problema).

Observação

Você precisa ter acesso de administrador para anexar um disco no WSL 2. O comando mount no WSL 2 não tem suporte para a montagem de um disco (ou partições que pertençam ao disco) que esteja sendo utilizado no momento. wsl --mount sempre anexa o disco inteiro, mesmo que apenas uma partição seja solicitada. Você não pode montar o disco de instalação do Windows.

Pré-requisitos

Você precisará estar no Windows 11 Build 22000 ou posterior, ou estar executando a versão do WSL da Microsoft Store. Para verificar sua versão do WSL e do Windows, utilize o comando: wsl.exe --version

Diferenças entre montar uma unidade externa com a formatação do Windows e a formatação do Linux

As unidades externas formatadas para Windows normalmente utilizam a formatação do sistema de arquivos NTFS. As unidades externas formatadas para Linux normalmente utilizam a formatação do sistema de arquivos Ext4.

Se você tiver montado uma unidade formatada em NTFS no sistema de arquivos do Windows, poderá acessar essa unidade a partir de sua distribuição do Linux usando o WSL, criando um diretório montado (sudo mkdir /mnt/d, substituindo 'd' pela letra da unidade que gostaria de utilizar) e, em seguida, usando o plug-in de interoperabilidade do sistema de arquivos drvfs, com o comando:

sudo mount -t drvfs D: /mnt/d

Para obter mais informações sobre os cenários de montagem.

Se você tiver uma unidade formatada em Ext-4, não poderá montá-la no sistema de arquivos do Windows. Para montar uma unidade formatada em Ext4 na sua distribuição Linux com WSL, você pode utilizar o comando wsl --mount seguindo as instruções abaixo.

Montagem de um disco não particionado

Se você tiver um disco que não tenha nenhuma partição, poderá montá-lo diretamente utilizando o comando wsl --mount. Primeiro, é necessário identificar o disco.

  1. Identificar o disco: para listar os discos disponíveis no Windows, execute:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Os caminhos dos discos estão disponíveis nas colunas "DeviceID". Geralmente no formato \\.\PHYSICALDRIVE*.

  2. Montar o disco: utilizando o PowerShell, você pode montar o disco usando o caminho do disco descoberto acima, execute:

    wsl --mount <DiskPath>
    

    Montar uma unidade no WSL

Montando um disco particionado

Se você tiver um disco que não sabe ao certo em que formato de arquivo está ou quais partições ele tem, siga as etapas abaixo para montá-lo.

  1. Identificar o disco: para listar os discos disponíveis no Windows, execute:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Os caminhos dos discos são listados após a 'DeviceID', geralmente no formato \\.\PHYSICALDRIVE*.

  2. Liste e selecione as partições a serem montadas no WSL 2: depois que o disco for identificado, execute:

    wsl --mount <DiskPath> --bare
    

    Isso fará com que o disco fique disponível no WSL 2. (No caso do nosso exemplo, o <DiskPath> é \\.\PHYSICALDRIVE*.

  3. Uma vez anexada, a partição poderá ser listada se você executar o seguinte comando no WSL 2:

    lsblk
    

    Isso exibirá os dispositivos de bloco disponíveis e suas partições.

No Linux, um dispositivo de bloco é identificado como /dev/<Device><Partition>. Por exemplo, /dev/sdb3 é a partição número 3 do disco sdb.

Saída de exemplo:

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

Identificando o tipo de sistema de arquivos

Se você não souber o tipo de sistema de arquivos de um disco ou partição, poderá utilizar este comando:

blkid <BlockDevice>

Você verá o tipo de sistema de arquivos detectado (no formato TYPE="<Filesystem>").

Monte as partições selecionadas

Depois de identificar as partições que você deseja montar, execute este comando em cada partição:

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

Observação

Se você desejar montar o disco inteiro como um único volume (ou seja, se o disco não estiver particionado), --partition poderá ser omitido.

Se for omitido, o tipo de sistema de arquivos padrão será "ext4".

Acessar o conteúdo do disco

Uma vez montado, o disco pode ser acessado no caminho apontado pelo valor da configuração: automount.root. O valor padrão é /mnt/wsl.

No Windows, o disco pode ser acessado no Explorador de Arquivos, navegando até: \\wsl$\\<Distro>\\<Mountpoint> (escolha qualquer distribuição Linux).

Desmonte o disco

Se você quiser desmontar e desconectar o disco no WSL 2, execute:

wsl --unmount <DiskPath>

Montar um VHD no WSL

Observação

O WSL da Microsoft Store introduz um novo argumento para você montar diretamente um VHD: wsl --mount --vhd <pathToVHD>

Você também pode montar arquivos de disco rígido virtual (VHD) no WSL utilizando wsl --mount. Para fazer isso, primeiro você precisa montar o VHD no Windows utilizando o comando Mount-VHD no Windows. Certifique-se de executar esse comando com privilégios de administrador. A seguir, você verá um exemplo em que utilizamos esse comando e também exibimos o caminho do disco. Não se esqueça de substituir <pathToVHD> pelo caminho real do VHD.

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

Você pode utilizar a saída acima para obter o caminho do disco para esse VHD e montá-lo no WSL seguindo as instruções da seção anterior.

Você também pode utilizar essa técnica para montar e interagir com os discos rígidos virtuais de outras distribuições do WSL, pois cada distribuição do WSL 2 é armazenada por meio de um arquivo no disco rígido virtual chamado ext4.vhdx. Por padrão, os VHDs das distribuições do WSL 2 são armazenados neste caminho: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName], tenha cuidado ao acessar esses arquivos de sistema, pois esse é um fluxo de trabalho de usuário avançado. Verifique se você executou wsl --shutdown antes de interagir com esse disco para certificar-se de que o disco não está sendo utilizado.

Montagem do VHD do WSL

Referência de linha de comando

Montagem de um sistema de arquivos específico

Por padrão, o WSL 2 tentará montar o dispositivo como ext4. Para especificar outro sistema de arquivos, execute:

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

Por exemplo, para montar um disco como FAT, execute:

wsl --mount <Diskpath> -t vfat

Observação

Para listar os sistemas de arquivos disponíveis no WSL2, execute: cat /proc/filesystems
Quando um disco é montado por meio do WSL2 (sistema de arquivos do Linux), ele não fica mais disponível para montagem por meio de um driver ext4 no sistema de arquivos do Windows.

Montar uma partição específica

Por padrão, o WSL 2 tenta montar o disco inteiro. Para montar uma partição específica, execute:

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

Isso só funciona se o disco for MBR (Registro Mestre de Inicialização) ou GPT (Tabela de Partição GUID). Leia sobre estilos de partição - MBR e GPT.

Especificação das opções de montagem

Para especificar as opções de montagem, execute:

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

Exemplo:

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

Observação

No momento, apenas as opções específicas do sistema de arquivos têm suporte para você. Opções genéricas, como ro, rw, noatime, ..., não têm suporte para você.

Como anexar o disco sem montá-lo

Se o esquema de disco não tiver suporte para nenhuma das opções acima, você poderá anexar o disco no WSL 2 sem montá-lo, executando:

wsl --mount <DiskPath> --bare

Isso tornará o dispositivo de bloco disponível no WSL 2 para que você possa montá-lo manualmente a partir dele. Utilize lsblk para listar os dispositivos de bloco disponíveis no WSL 2.

Especificando o nome da montagem

Observação

Essa opção só está disponível com o WSL da Microsoft Store

Por padrão, o nome do ponto de montagem é gerado com base no nome do disco físico ou do VHD. Isso pode ser substituído por --name. Exemplo:

wsl --mount <DiskPath> --name myDisk

Desanexando um disco

Para desanexar um disco do WSL 2, execute:

wsl --unmount [DiskPath]

Se Diskpath for omitido, todos os discos anexados serão desmontados e desanexados.

Observação

Se um disco não conseguir ser desmontado, o WSL 2 poderá ser forçado a sair executando wsl --shutdown, que desconectará o disco.

Limitações

  • No momento, apenas discos inteiros podem ser anexados ao WSL 2, o que significa que não é possível anexar apenas uma partição. Em termos concretos, isso significa que não é possível utilizar wsl --mount para ler uma partição no dispositivo de inicialização, porque esse dispositivo não pode ser desconectado do Windows.

  • Somente os sistemas de arquivos que têm suporte nativo para o kernel podem ser montados por wsl --mount. Isso significa que não é possível utilizar os drivers do sistema de arquivos instalados (como o ntfs-3g, por exemplo) chamando wsl --mount.

  • Os sistemas de arquivos que não têm suporte direto para o kernel podem ser montados por meio de um anexo --bare e, em seguida, invocando o driver FUSE relevante.