6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSLAdvent Calendar 2020

Day 8

Insider PreviewのWSL2で仮想ディスクイメージ(VHD/VHDX)をマウントする

Last updated at Posted at 2020-12-07

ソース:

順番としては

  1. (仮想ディスクイメージがなければ)VHD/VHDXを新規作成する
  2. VHD/VHDXをWindowsにアタッチする
  3. WSLにブロックデバイスとして認識させる
  4. (未フォーマットの場合は)WSLでフォーマットする
  5. WSLでマウントする

となります。

Windows 10 ビルド20211以降では、3. 単体、または3.と5.を合わせて、wsl.exe --mount コマンドが使えます。

VHD/VHDXを新規作成する

GUI

「ディスクの管理」から「VHDの作成」
image.png
image.png

コマンドライン

> diskpart.exe
Microsoft DiskPart version 10.0.20270.1

Copyright (C) Microsoft Corporation.
On computer: xxxxxxxx

# 容量固定
DISKPART> create vdisk file="<VHDまたはVHDXファイルのパス>" maximum=<サイズ> type=fixed

# 容量可変
DISKPART> create vdisk file="<VHDまたはVHDXファイルのパス>" maximum=<サイズ> type=expandable

VHD/VHDXをWindowsにアタッチする

GUI

以下のどちらか好きなほうで。

  • VHD/VHDXファイルをダブルクリックする
  • 「ディスクの管理」から「VHDの接続」

コマンドライン

> diskpart.exe
Microsoft DiskPart version 10.0.20270.1

Copyright (C) Microsoft Corporation.
On computer: xxxxxxxx

DISKPART> select vdisk file="<VHDまたはVHDXファイルのパス>"
DISKPART> attach vdisk

WSLにブロックデバイスとして認識させる

まずは、仮想ディスクのDeviceIDを知るため、wmic.exe を実行します。

> wmic.exe diskdrive list brief
Caption                 DeviceID            Model                   Partitions  Size
Crucial_CT525MX300SSD4  \\.\PHYSICALDRIVE0  Crucial_CT525MX300SSD4  4           525110100480
Microsoft Virtual Disk  \\.\PHYSICALDRIVE1  Microsoft Virtual Disk  0           98703360

仮想ディスクのDeviceID(上の例では \\.\PHYSICALDRIVE1)がわかったら、それを引数に指定して、
管理者権限で wsl.exe --mountを実行します。
Windows 10 ビルド20211以降が必要です。

管理者権限
> wsl.exe --mount \\.\PHYSICALDRIVE1 --bare

WSLでフォーマットする

$ lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0  256G  0 disk
sdb    8:16   0  100M  0 disk
sdc    8:32   0  256G  0 disk /

この例ではsdbが仮想ディスクです。(最初に作成したサイズで、マウントもされていないので)

$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
Using /dev/sdb
(parted) mklabel gpt
(parted) mkpart <任意の名前> 0% 100%
(parted) quit
Information: You may need to update /etc/fstab.
$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  256G  0 disk
sdb      8:16   0  100M  0 disk
└─sdb1   8:17   0  100M  0 part
sdc      8:32   0  256G  0 disk /

$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb1 alignment is offset by 3072 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Discarding device blocks: done
Creating filesystem with 102364 1k blocks and 25688 inodes
Filesystem UUID: abdf93e3-3f0f-4f58-9368-a9fce9f7cf08
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

WSLでマウントする

$ sudo mkdir /mnt/vhd
$ sudo mount /dev/sdb1 /mnt/vhd

WSLに認識させたディスクを外す

> wsl.exe --unmount \\.\PHYSICALDRIVE1
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?