手持ちのLinuxで使っていたHDDがあり、中にあるファイルを読みたくなった。 USBでHDDを接続することはできるけど、LVMの上にext4が乗っている感じなので、Windowsからは当然読めない。適当なLinuxイメージを焼いてブートするのもめんどくさい。
今ならWSLからいけるのでは?と思いながら調べてたら、できたのでメモ。
こちらの記事をみて、ディスクイメージからLVMのボリュームグループを識別して、マウントできるらしいことを知った。
これのブロックデバイス版をやればよいわけだ。
前提
WSL 2 でUbuntu 22.04を使っている
WSLにデバイスをマウントする
まずWindows機にUSBで接続されたディスクをWSL上に認識させる必要がある。
このHDDはブート用のパーティション(だったはず)とメインのパーティションで2つ区切られている。
この状態になっていれば後は次の手順でマウントまで行ける。
PowerShellでGET-CimInstance -query "SELECT * from Win32_DiskDrive"
を実行し、得られたDeviceIDを使ってwsl --mount する。
今回は次のコマンドでマウントした。パーティションが切られているので --bare
をつけた。
wsl --mount \\.\PHYSICALDRIVE3 --bare
成功したらあとはWSLにアクセスして、マウントされたデバイスを見つけて、fdisk等で確認する(WSLのUbuntuイメージには入っていないので apt install fdisk
とかやって入れておく)
$ sudo fdisk -l /dev/sdc Disk /dev/sdc: 298.09 GiB, 320072933376 bytes, 625142448 sectors Disk model: 225 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 33553920 bytes Disklabel type: dos Disk identifier: 0x0007b244 Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 1026047 1024000 500M 83 Linux /dev/sdc2 1026048 625141759 624115712 297.6G 8e Linux LVM
/dev/sdc2 がLinux LVMとあるので、これが目的のデバイスである。
LVMとして認識させる
LVM関連のコマンドを導入する
apt install lvm2
lvm関連のコマンドが使えるようになるので色々やる。
# VGをスキャンし、/devのLVMのスペシャルファイルに反映する(新規があれば作ったり不要であれば削除) vgscan --mknodes # VGを確認 vgdisplay # VGをアクティブにする(VolGroup=vgdisplayで確認したVG Name) vgchange -a y VolGroup # 認識された論理ボリュームを確認 sudo lvscan
$ sudo lvscan ACTIVE '/dev/VolGroup/lv_root' [50.00 GiB] inherit ACTIVE '/dev/VolGroup/lv_home' [<239.82 GiB] inherit ACTIVE '/dev/VolGroup/lv_swap' [7.78 GiB] inherit
/dev/VolGroup/lv_root
がお目当てのブロックデバイス
論理ボリュームをマウント
あとはマウントするだけ。
mkdir /mnt-test mount /dev/VolGroup/lv_root /mnt-test ls -l /mnt-test
実行結果
$ ls -l /mnt-test total 112 dr-xr-xr-x. 2 root root 4096 Jul 27 07:29 bin drwxr-xr-x. 2 root root 4096 Oct 13 2016 boot drwxr-xr-x. 2 root root 4096 Oct 13 2016 dev drwxr-xr-x. 76 root root 4096 Jul 28 01:52 etc drwxr-xr-x. 2 root root 4096 Oct 13 2016 home dr-xr-xr-x. 8 root root 4096 Jul 18 22:07 lib dr-xr-xr-x. 9 root root 12288 Jul 27 07:54 lib64 drwx------. 2 root root 16384 Oct 13 2016 lost+found drwxr-xr-x. 2 root root 4096 Sep 23 2011 media drwxr-xr-x. 3 root root 4096 Jul 10 2022 mnt drwxrwxrwx. 2 root root 4096 Oct 13 2016 nas1 drwxr-xr-x. 6 root root 4096 Jul 27 08:11 opt drwxr-xr-x. 2 root root 4096 Oct 13 2016 proc dr-xr-x---. 9 root root 4096 Jul 27 07:17 root dr-xr-xr-x. 2 root root 12288 Jul 19 05:30 sbin drwxr-xr-x. 2 root root 4096 Oct 13 2016 selinux drwxr-xr-x. 2 root root 4096 Sep 23 2011 srv drwxr-xr-x. 2 root root 4096 Oct 13 2016 sys drwxrwxrwt. 15 root root 4096 Jul 28 01:52 tmp drwxr-xr-x. 14 root root 4096 Jul 19 05:33 usr drwxr-xr-x. 19 root root 4096 Jul 19 05:33 var
よかったですね。