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環境を使い分けたいというわけでもないのでかなり心が揺れている。