WSL2でカメラを使うには(2)

はじめに

前回iPhoneやActionカメラがWSL2でカメラとして使えることを記事にしました。
touch-sp.hatenablog.com
今回は前回挫折したカーネルカスタマイズに挑戦しました。

方法

基本的にはこちらで紹介されている通りに行いました。
zenn.dev
少し違うのはもとのカーネルがすでに「5.10.16.3」から「5.10.74.3」にアップデート済であることと「VirtualHere」の代わりに「usbipd-win」を使用したことです。

作業前の環境

C:\>wsl --status
既定のディストリビューション: Ubuntu-20.04
既定のバージョン: 2
WSL1 は、現在のマシン構成ではサポートされていません。
WSL1 を使用するには、"Linux 用 Windows サブシステム" オプション コンポーネントを有効にしてください。
WSL バージョン: 0.50.2.0
カーネル バージョン: 5.10.74.3
WSLg バージョン: 1.0.29
Windows バージョン: 10.0.22000.348

ディストリビューションの複製

カーネルをカスタマイズ(新しいカーネルを作成)するためにLinux環境にさまざまなものをインストールする必要があります。

今使っている環境にそれをするのが嫌だったのでディストリビューションを複製して使用しました。複製したディストリビューションは新しいカーネルを作成した後破棄しても問題ありません。

複製と破棄の方法はこちらです。
laboradian.com

新しいカーネルの作成

ここからは複製したカーネルを使用しました。
先に紹介したサイト通りにやって全く問題ありませんでした。
Windows側の「C:\\Users\ユーザー名\」フォルダに「vmlinux」と「.wslconfig」というファイルが作成された時点で終了です。
ここまでくると複製したディストリビューションはお役御免になります。破棄して問題ありません。

usbipd-winの設定

こちらのサイトに紹介されている通りにやって全く問題ありませんでした。
ascii.jp

注意点

ここまで来るとUSB接続のWebカメラがWSL2で使えるようになります。

Python内のOpneCVでカメラ画像を取得する時に注意点があります。Pythonを管理者権限で実行する必要があることです。
このようにして下さい。

sudo python3 sample.py

venvで仮想環境を作っている時は「sudo python sample.py」ではなぜか動きません。このようにしたら動きました。

sudo env/bin/python3 sample.py

envは仮想環境名です。

もとに戻す方法

新しく作成したカーネルが必要なくなって元に戻したくなった時は「C:\\Users\ユーザー名\」フォルダ内の「vmlinux」と「.wslconfig」の二つのファイルを削除すれば良いだけです。
「.wslconfig」を削除するか移動するだけで「vmlinux」は読み込まれなくなるので再利用したいときはそのようにすれば良いと思います。

(2021年12月7日追記)usbipd-winを1.3にアップデート

「usbipd-win」を1.2から1.3にアップデートしたら、うまくいかなかったノートパソコン付属のカメラも問題なく動作確認できました。

ドスパラ『GALLERIA(ガレリア) UL7C-R36』

(2022年1月30日追記)詳しい手順を別記事に

別記事に詳しい手順を書きました。
【更新記事】WSL2でカメラを使うには(3) - パソコン関連もろもろ