明日の自分のために

moon indicating dark mode
sun indicating light mode

WSL 2(Ubuntu20.04)にアップデートしてRaspberry Piのイメージをmountする

June 06, 2020

ちょっとラズパイのイメージの中身を見たくなり、WSLでmountして見ようとしたところ上手くいきませんでした。WSL 2なら行けるという情報がネットで散見されたのでアップデートしてみます。
Windows Sbusystem for Linuxを最近使っているのと、WSL2が正式版になったということでちょうどいいタイミングです。

WSL 2のインストール

The Windows Subsystem for Linux BUILD 2020 Summaryには, WSLを初めてインストールする場合にはwsl --installするだけでWSL 2が入ると記載されていますが、自分の場合は当てはまらなかったので以下のページを参考に進めました。 https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

Windows10のバージョンが2004以上であることが必要です。確認したところ、自分のPCにはバージョン2004がまだ配信されないので自分で取りに行きました。 Windows更新アシスタントを入手するのリンクからダウンロードできます。

Windows10が更新できたら、説明どおりにコマンドを実行していきます。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2

wsl --set-default-version 2を実行したらWSL 2 Linux kernelの更新が必要と言われたため、Updating the WSL 2 Linux kernelからダウンロードしてインストールしました。
再度wsl --set-default-version 2を実行したら通りました。

すでにインストール済みのUbuntuがあったため、これをWSL 2に変更するために以下のコマンドを実行しました。

wsl --set-version Ubuntu-20.04 2

数分かかりましたが無事終了しました。

ラズパイのイメージをmount

ループバックデバイスとしてmountしようとしましたが上手くいきませんでした。

mount -t ext4 -o loop raspbian.img /mnt/image
mount: /mnt/image: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.

offsetを直接指定すればmountできるとの情報があったので試します。

partx --show raspbian.img
NR START END SECTORS SIZE NAME UUID
1 8192 96042 87851 42.9M a50165a4-01
2 98304 25264127 25165824 12G a50165a4-02

STARTの98304にセクタのサイズ512バイトをかけた値がoffsetになります。ここでは98304 * 512 = 50331648です。
この値を指定してmountしたらうまくいきました。

sudo mount -v -t ext4 -o offset=50331648 raspbian.img /mnt/image

時間だけで考えると、SDカードに焼いてLinuxでmountしたほうが早かったですね。