Memasang disk Linux di WSL 2

Jika Anda ingin mengakses format disk Linux yang tidak didukung oleh Windows, Anda dapat menggunakan WSL 2 untuk memasang disk Anda dan mengakses kontennya. Tutorial ini akan membahas langkah-langkah untuk mengidentifikasi disk dan partisi untuk dilampirkan ke WSL2, cara memasangnya, dan cara mengaksesnya.

Jika Anda menyambungkan drive eksternal dan tidak berhasil dengan instruksi pemasangan ini, Anda mungkin ingin mencoba instruksi untuk Koneksi perangkat USB. Perintah wsl --mount saat ini tidak mendukung usb/flash drive/pembaca kartu SD, (pelajari lebih lanjut tentang masalah ini).

Catatan

Akses administrator diperlukan untuk melampirkan disk ke WSL 2. Perintah WSL 2 mount tidak mendukung pemasangan disk (atau partisi milik disk) yang saat ini sedang digunakan. wsl --mount selalu melampirkan seluruh disk meskipun hanya partisi yang diminta. Anda tidak dapat memasang disk penginstalan Windows.

Prasyarat

Anda harus menggunakan Windows 11 Build 22000 atau yang lebih baru, atau menjalankan WSL versi Microsoft Store. Untuk memeriksa versi WSL dan Windows Anda, gunakan perintah : wsl.exe --version

Perbedaan antara pemasangan drive eksternal dengan pemformatan Windows versus pemformatan Linux

Drive eksternal yang diformat untuk Windows biasanya menggunakan pemformatan sistem file NTFS. Drive eksternal yang diformat untuk Linux biasanya menggunakan pemformatan sistem file Ext4.

Jika Anda telah memasang drive berformat NTFS pada sistem file Windows, Anda dapat mengakses drive tersebut dari distribusi Linux menggunakan WSL dengan membuat direktori yang dipasang (sudo mkdir /mnt/d, mengganti 'd' dengan huruf drive apa pun yang ingin Anda gunakan) dan kemudian menggunakan drvfs plugin interop sistem file, dengan perintah:

sudo mount -t drvfs D: /mnt/d

Pelajari selengkapnya tentang skenario pemasangan.

Jika Anda memiliki drive berformat Ext4, Anda tidak dapat memasangnya pada sistem file Windows Anda. Untuk memasang drive berformat Ext4 pada distribusi Linux Anda dengan WSL, Anda dapat menggunakan wsl --mount perintah mengikuti instruksi di bawah ini.

Memasang disk yang tidak dipartisi

Jika Anda memiliki disk yang tidak memiliki partisi apa pun, Anda dapat memasangnya secara langsung menggunakan wsl --mount perintah . Pertama, Anda perlu mengidentifikasi disk.

  1. Identifikasi disk - Untuk mencantumkan disk yang tersedia di Windows, jalankan:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Jalur disk tersedia di bawah kolom 'DeviceID'. Biasanya dalam \\.\PHYSICALDRIVE* format .

  2. Pasang disk - Menggunakan PowerShell, Anda dapat memasang disk menggunakan jalur Disk yang ditemukan di atas, jalankan:

    wsl --mount <DiskPath>
    

    Mounting a drive in WSL

Memasang disk yang dipartisi

Jika Anda memiliki disk yang tidak yakin format filenya, atau partisi apa yang dimilikinya, Anda dapat mengikuti langkah-langkah di bawah ini untuk memasangnya.

  1. Identifikasi disk - Untuk mencantumkan disk yang tersedia di Windows, jalankan:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Jalur disk dicantumkan setelah 'DeviceID', biasanya dalam \\.\PHYSICALDRIVE* format .

  2. Daftar dan pilih partisi yang akan dipasang di WSL 2 - Setelah disk diidentifikasi, jalankan:

    wsl --mount <DiskPath> --bare
    

    Ini akan membuat disk tersedia di WSL 2. (Dalam kasus contoh kami, <DiskPath> adalah \\.\PHYSICALDRIVE*.

  3. Setelah dilampirkan, partisi dapat dicantumkan dengan menjalankan perintah berikut di dalam WSL 2:

    lsblk
    

    Ini akan menampilkan perangkat blok yang tersedia dan partisinya.

Di dalam Linux, perangkat blok diidentifikasi sebagai /dev/<Device><Partition>. Misalnya, /dev/sdb3, adalah nomor partisi 3 disk sdb.

Contoh output:

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

Mengidentifikasi jenis sistem file

Jika Anda tidak mengetahui jenis sistem file disk atau partisi, Anda dapat menggunakan perintah ini:

blkid <BlockDevice>

Ini akan menghasilkan jenis sistem file yang terdeteksi (dalam TYPE="<Filesystem>" format ).

Memasang partisi yang dipilih

Setelah Anda mengidentifikasi partisi yang ingin Anda pasang, jalankan perintah ini pada setiap partisi:

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

Catatan

Jika Anda ingin memasang seluruh disk sebagai volume tunggal (yaitu jika disk tidak dipartisi), --partition dapat dihilangkan.

Jika dihilangkan, jenis sistem file default adalah "ext4".

Mengakses konten disk

Setelah dipasang, disk dapat diakses di bawah jalur yang ditujukkan oleh nilai konfigurasi: automount.root. Nilai defaultnya adalah /mnt/wsl.

Dari Windows, disk dapat diakses dari File Explorer dengan menavigasi ke: \\wsl$\\<Distro>\\<Mountpoint> (pilih distribusi Linux apa pun).

Lepaskan disk

Jika Anda ingin melepas dan melepaskan disk dari WSL 2, jalankan:

wsl --unmount <DiskPath>

Memasang VHD di WSL

Catatan

WSL dari Microsoft Store memperkenalkan argumen baru untuk memasang VHD secara langsung: wsl --mount --vhd <pathToVHD>

Anda juga dapat memasang file hard disk virtual (VHD) ke WSL menggunakan wsl --mount. Untuk melakukan ini, Pertama-tama Anda perlu memasang VHD ke Windows menggunakan Mount-VHD perintah di Windows. Pastikan untuk menjalankan perintah ini dengan hak istimewa administrator. Di bawah ini adalah contoh di mana kita menggunakan perintah ini, dan juga menghasilkan jalur disk. Pastikan untuk mengganti <pathToVHD> dengan jalur VHD Anda yang sebenarnya.

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

Anda dapat menggunakan output di atas untuk mendapatkan jalur disk untuk VHD ini dan memasangnya ke WSL mengikuti instruksi di bagian sebelumnya.

Anda juga dapat menggunakan teknik ini untuk memasang dan berinteraksi dengan hard disk virtual distro WSL lainnya, karena setiap distro WSL 2 disimpan melalui file hard disk virtual yang disebut: ext4.vhdx. Secara default VHD untuk distro WSL 2 disimpan di jalur ini: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName], harap berhati-hati mengakses file sistem ini, ini adalah alur kerja pengguna daya. Pastikan untuk berjalan wsl --shutdown sebelum berinteraksi dengan disk ini untuk memastikan disk tidak digunakan.

Mounting WSL VHD

Referensi baris perintah

Memasang sistem file tertentu

Secara default, WSL 2 akan mencoba memasang perangkat sebagai ext4. Untuk menentukan sistem file lain, jalankan:

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

Misalnya, untuk memasang disk sebagai lemak, jalankan:

wsl --mount <Diskpath> -t vfat

Catatan

Untuk mencantumkan sistem file yang tersedia di WSL2, jalankan: cat /proc/filesystems
Ketika disk telah dipasang melalui WSL2 (sistem file Linux), disk tidak lagi tersedia untuk dipasang melalui driver ext4 pada sistem file Windows.

Memasang partisi tertentu

Secara default, WSL 2 mencoba memasang seluruh disk. Untuk memasang partisi tertentu, jalankan:

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

Ini hanya berfungsi jika disk adalah MBR (Master Boot Record) atau GPT (GUID Partition Table). Baca tentang gaya partisi - MBR dan GPT.

Menentukan opsi pemasangan

Untuk menentukan opsi pemasangan, jalankan:

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

Contoh:

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

Catatan

Hanya opsi spesifik sistem file yang didukung saat ini. Opsi generik seperti ro, rw, noatime, ... tidak didukung.

Memasang disk tanpa memasangnya

Jika skema disk tidak didukung oleh salah satu opsi di atas, Anda dapat melampirkan disk ke WSL 2 tanpa memasangnya dengan menjalankan:

wsl --mount <DiskPath> --bare

Ini akan membuat perangkat blok tersedia di dalam WSL 2 sehingga dapat dipasang secara manual dari sana. Gunakan lsblk untuk mencantumkan perangkat blok yang tersedia di dalam WSL 2.

Menentukan nama pemasangan

Catatan

Opsi ini hanya tersedia dengan WSL dari Microsoft Store

Secara default nama mountpoint dihasilkan berdasarkan disk fisik atau nama VHD. Ini dapat ditimpa dengan --name. Contoh:

wsl --mount <DiskPath> --name myDisk

Melepas disk

Untuk melepaskan disk dari WSL 2, jalankan:

wsl --unmount [DiskPath]

Jika Diskpath dihilangkan, semua disk yang terpasang dilepas dan dilepas.

Catatan

Jika satu disk gagal dilepas, WSL 2 dapat dipaksa keluar dengan menjalankan wsl --shutdown, yang akan melepaskan disk.

Pembatasan

  • Saat ini, hanya seluruh disk yang dapat dilampirkan ke WSL 2, yang berarti bahwa tidak mungkin untuk melampirkan hanya partisi. Secara konkret, ini berarti bahwa tidak mungkin untuk menggunakan wsl --mount untuk membaca partisi pada perangkat boot, karena perangkat tersebut tidak dapat dilepas dari Windows.

  • Hanya sistem file yang didukung secara asli di kernel yang dapat dipasang oleh wsl --mount. Ini berarti bahwa tidak mungkin untuk menggunakan driver sistem file yang diinstal (seperti ntfs-3g misalnya) dengan memanggil wsl --mount.

  • Sistem file yang tidak didukung langsung oleh kernel dapat dipasang melalui --bare lampiran dan kemudian memanggil driver FUSE yang relevan.