Montar um disco linux no WSL 2

Se você quiser acessar um formato de disco linux que não tem suporte por Windows, você pode usar o WSL 2 para montar seu disco e acessar seu conteúdo. Este tutorial abordará as etapas para identificar o disco e a partição a serem anexados ao WSL2, como montá-los e como acessá-los.

Se você estiver procurando orientação sobre como conectar um dispositivo USB (unidade flash, leitor de cartão SD etc.), consulte Conexão dispositivos USB.

Observação

O acesso do administrador é necessário para anexar um disco ao WSL 2. O comando WSL 2 mount não dá suporte à montagem de um disco (ou partições que pertencem ao disco) que está em uso no momento. wsl --mount sempre anexa todo o disco, mesmo que apenas uma partição seja solicitada. Não é possível montar o disco de instalação Windows.

Pré-requisitos

Você precisará estar no Windows 11 Build 22000 ou superior para acessar esse recurso. Você pode ingressar no programa Windows Insiders para obter as versões prévias mais recentes.

Montar um disco não particionado

Nesse caso mais simples, se você tiver um disco que não tenha partições, poderá montá-lo diretamente usando o wsl --mount comando. Primeiro, você precisa 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'. Normalmente, sob o \\.\PHYSICALDRIVE* formato.

  2. Montar o disco – Usando o PowerShell, você pode montar o disco usando o caminho do disco descoberto acima, executar:

    wsl --mount <DiskPath>
    

    Mounting a drive in WSL

Montar um disco particionado

Se você tiver um disco no qual não tem certeza em qual formato de arquivo ele está ou em 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 de discos são listados após 'DeviceID', geralmente no \\.\PHYSICALDRIVE* formato.

  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 disponibilizará o disco no WSL 2. (No caso do nosso exemplo, o <DiskPath> é \\.\PHYSICALDRIVE*.

  3. Depois de anexada, a partição pode ser listada executando o seguinte comando dentro do WSL 2:

    lsblk
    

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

Dentro do Linux, um dispositivo de bloco é identificado como /dev/<Device><Partition>. Por exemplo, /dev/sdb3, é o número de partição 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á usar este comando:

blkid <BlockDevice>

Isso gerará o tipo de sistema de arquivos detectado (sob o TYPE="<Filesystem>" formato).

Montar as partições selecionadas

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

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

Observação

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

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

Acessar o conteúdo do disco

Depois de montado, o disco pode ser acessado sob o caminho apontado pelo valor de configuração: automount.root. O valor padrão é /mnt/wsl.

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

Desmonte o disco

Se você quiser desmontar e desanexar o disco do WSL 2, execute:

wsl --unmount <DiskPath>

Montar um VHD no WSL

Observação

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

Você também pode montar arquivos de disco rígido virtual (VHD) no WSL usando wsl --mount. Para fazer isso, primeiro você precisa montar o VHD em Windows usando o Mount-VHD comando em Windows. Certifique-se de executar esse comando com privilégios de administrador. Veja abaixo um exemplo em que usamos esse comando e também geramos o caminho do disco. Certifique-se de substituir <pathToVHD> pelo caminho VHD real.

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

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

Você também pode usar essa técnica para montar e interagir com os discos rígidos virtuais de outras distribuições WSL, pois cada distribuição do WSL 2 é armazenada por meio de um arquivo de disco rígido virtual chamado: ext4.vhdx. Por padrão, as VHDs para distribuições do WSL 2 são armazenadas neste caminho: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName], tenha cuidado ao acessar esses arquivos do sistema, esse é um fluxo de trabalho do usuário de energia. Certifique-se de executar wsl --shutdown antes de interagir com esse disco para garantir que o disco não esteja em uso.

Mounting WSL VHD

Referência de linha de comando

Montar 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 gordura, 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 linux), ele não está mais disponível para montagem por meio de um driver ext4 no sistema de arquivos 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ó funcionará se o disco for MBR (Registro de Inicialização Mestre) ou GPT (Tabela de Partição GUID). Leia sobre estilos de partição – MBR e GPT.

Especificando opções de montagem

Para especificar opções de montagem, execute:

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

Exemplo:

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

Observação

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

Anexando o disco sem montá-lo

Se o esquema de disco não for compatível com nenhuma das opções acima, você poderá anexar o disco ao WSL 2 sem montá-lo executando:

wsl --mount <DiskPath> --bare

Isso disponibilizará o dispositivo de bloco dentro do WSL 2 para que ele possa ser montado manualmente a partir daí. Use lsblk para listar os dispositivos de bloco disponíveis dentro do WSL 2.

Especificando o nome da montagem

Observação

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

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

wsl --mount <DiskPath> --name myDisk

Desanexar 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 for desmontado, o WSL 2 poderá ser forçado a sair executando wsl --shutdown, o que desanexará o disco.

Limitações

  • Neste momento, somente discos inteiros podem ser anexados ao WSL 2, o que significa que não é possível anexar apenas uma partição. Concretamente, isso significa que não é possível usar wsl --mount para ler uma partição no dispositivo de inicialização, porque esse dispositivo não pode ser desanexado de Windows.

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

  • Os sistemas de arquivos não compatíveis diretamente com o kernel podem ser montados por meio de uma --bare anexação e, em seguida, invocar o driver FUSE relevante.