2024/04/06

GitHub Pagesに移行しました

こちらに移行します。

https://hirokuma.github.io/

WSL2の有効化

Windows11 ProでWSL2を有効化する。
22H2である(23H2は招待が来てないのでやってない)。

Microsoftの手順に従えば良かろう。

WSL のインストール | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/wsl/install

事前にWindowsの機能を有効化しないといかんかと思ったが、インストーラーがやってくれるようだ。似たような項目があるのでわからんかったのだ。

再起動がいるようだ。
その前に、以前無効にした「メモリ整合性」を有効に戻す。
VirtualBoxでゲストOSとしてLinxuを動かしているとき、しばしばゲストOSがフリーズしていたので無効にしたのだ。

Windows 11でゲームのパフォーマンスを最適化するオプション - Microsoft サポート
https://support.microsoft.com/ja-jp/windows/windows-11%E3%81%A7%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%82%92%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%99%E3%82%8B%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3-a255f612-2949-4373-a566-ff6f3f474613

有効にするとパフォーマンスが落ちるようだが、Windows11 HomeでWSL2をデフォルト状態で使っている分には不満がないので戻しておく。

同じ設定画面に「カーネルモードハードウェア強制スタック保護」という項目があるのだが、これのデフォルトはどっちだったんだろう? CPUの違いなのかWindows11 Homeだからなのか、もう1台のPCにはこの項目がなかったのだ。

オフのままにしておこう。


再起動して、VirtualBox v7 と WSL2を有効にするとインストールされたUbuntuが立ち上がることを確認できた。Ubuntu は 22.04 だった。2024年になったから24.04はもう出ているかもしれんが、まあ気にするまい。

では、前回VHDフォーマットに変換したディスクをマウント。

> wsl --mount --vhd "F:\MountWorkDisk.vhd"
ディスクがアタッチされましたが、マウントに失敗しました: Invalid argument。
詳細については、WSL2 内で 'dmesg' を実行してください。
ディスクをデタッチするには、'wsl.exe --unmount \\?\F:\MountWorkDisk.vhd' を実行してください。
アタッチしているというのは、たぶんdmesgで見たときに /dev/sdd と /dev/sdd1 として認識されているところだろう。

オプションに --partition を使えばよさそうだった。なお、実行するのは管理者権限不要だった。

2024/03/31

VirtualBoxのVDIをVHDに変換する

VirtualBoxからWSL2に移行するとして、問題になるのはストレージだった。
大量にファイルがあるので、いちいちコピーしたくない。
どうやらWSL2はVHDファイルであればマウントできるようで、VDIはVHDにコンバート(というか、クローンを作成するときにフォーマットをVHDにする)できるようだった。

VDIをVHDにコンバートする
https://bitto.jp/convert-vdi-to-vhd/

VDIが入っているディスクはクローンするには空きが足りないので、VHDを別のディスクで作成する必要はあるが、そのくらいか。VirtualBoxはVHDのマウントもできるから、クローン下VHDだけ残しておけば良いだろう。

クローン作成はなかなか時間がかかる。
800GBくらいなのだが10分か20分以上経ってようやく10%くらいだ。まあ、気長に待とう。


VirtualBoxでは /home とシステムは別ディスクにしているのでなんとかなりそうな気がしている。
忘れそうなのがdockerだ。
あれは確かデフォルトで/varのどこかに配置していたはずだ。ダウンロードしたイメージならよいのだが、開発中でどこにも置いてないやつだったりすると困るだろう。ボリュームも何とかせねば。

しかしdockerはなんで/varなんかね。dockerユーザー権限でやるからだろうか。Rootlessモードが正式に対応されたのだったら、そっちを使えば$HOMEの中に置かれそうな気がする。が、今までrootで動かす前提だったのでうまく動かなくなったりしそうな気もする。

ディレクトリを変更したい場合は、最近は /etc/docker/daemon.json を変更するのか。--data-root なのかな。


まあ、気長にやろう。

2024/03/30

WindowsでLinuxを使う

長年Windowsを使っている。今はWindows11である。
が、最近の開発はLinux向けがほとんどである。それより前は組み込み開発だったので、そういえばWindows向けの開発というのはそんなに記憶がない。

Linux用に別PCを立てるのも大変だ。クラウド上のVMにSSHで接続したり、Visual Studio CodeをSSH経由で使えるようにしたりしているが、会社の仕事ならともかく個人だとそこまでやりたくない。
なのでVirtualBoxをずっと使っている。

最近思ったのは、WSLでもいいんじゃないの?ということだ。
昔、WSL1のときはファイルシステムに問題があってDBがうまく動かないことがあって使うのを止めた。
今はWSL2を使っているが、まだ問題が起きていない。ちゃんと動いている。
VirtualBoxを使う必要があるのは、LinuxのGUIアプリを使う場合だけのような気がしている。そしてMicrosoftのページにこういうのがあるので、WSL2でGUIアプリも動くのではなかろうか。

WSL で Linux GUI アプリを実行する | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/gui-apps

WSL2が出た頃は、GUIアプリが動かせた!という感じだったような気がするが、もう結構な時間が経った。Microsoft が書いているくらいだし、もう悩まなくて済むくらいに動くのだろうか。


まだWSL2でLinux GUIアプリを作ったことがないので、↑のリンクの内容をそのままやっていく。
PC は ThinkPad T14s である。「13th Gen Intel(R) Core(TM) i5-1335U   1.30 GHz」だそうだ。

まず「前提条件」のvGPU用のプレビュードライバ。
Intelのリンクをクリックすると「Intel® Graphics – Windows* DCH Drivers 」のダウンロードページに飛んだ。"31.0.101.3790/31.0.101.2114"が最新のようだ。Windows Updateはやっているがこのドライバはそういうドライバとは別物なのだろう。
素直にインストールしておく。

あれ??
ま、まあうちのPCは最新だから不要ということかもしれんね。

試すのはただだから、Gnome Text Editor をインストールしてみよう。
そして書いてあるとおりに ~/.bashrc を開いてみると...


 おお!開くではないか!
ちゃんとウィンドウになっているし、タスクバーにもペンギンアイコンが出ている。

マウスカーソルでウィンドウの端をつかんでリサイズ、というのはできなかった。
これはアプリのせいか?
コマンドを実行した WSL2のコンソールにはこういう出力があった。

Gsk-Message: 22:31:17.301: Failed to realize renderer of type 'GskGLRenderer' for surface 'GdkWaylandToplevel': libEGL not available

うーん??

取りあえず、私がLinuxでGUIじゃないとどうしても動かせないアプリが AppImage のやつだから、それが動くかどうかで判定しよう。

> AppImages require FUSE to run.

これは apt install fuse でできた。

> error while loading shared libraries: libgbm.so.1

これは動かそうとしたアプリなのかな。
sudo apt install libgbm-dev でできた。

このくらいで動かそうとしたAppImageのアプリは起動してくれた。
ウィンドウが出てきて、マウスカーソルでリサイズできた。


むぅう、WSL2だとvscodeで対応しているからWindows側でアプリを起動できるし、Explorerからファイルを見ることができるし、今回のように GUIアプリも起動できてしまった。
WindowsからLinuxを扱いたいだけだったらVirtualBoxのような重たい仮想環境は本当にいらなくなってしまったのだろうか。
ストレージへのアクセスが多いアプリを使っているのだけど、素のLinux環境とVirtualBoxのLinux環境で重たさが全然違うのだ。VirtualBoxとWSL2でストレージへのアクセス速度にどのくらい差があるのか分からないけど、複数のLinux環境を使い分けたいというわけでもないのでかなり心が揺れている。