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

公開日: 2020年06月06日最終更新日: 2021年10月17日

ちょっとラズパイのイメージの中身を見たくなり、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したほうが早かったですね。

この情報が少しでもお役に立てば幸いです。 以下のリンクをクリックしてから何か買い物していただけると私が喜びます。