はじめに
前回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) - パソコン関連もろもろ