「お手軽に試すLinux環境」の落とし所

2023/05/29に公開

たまに「Linux始めるなら実機だ実機」とか「WSL2で十分だよね」と言うのを見かけるので、Web屋さんやってる自分の体験を元にメモ。

まえおき

  • まず2008年辺りにPHPとMySQLで始めたのでwindowsでXamppだった。
  • 次にVMware Playerをどうにかしていっぱしの仮想マシン環境として使っていた。確か「一度何かで仮想マシンを作ってしまえば普通に使える」みたいな使い方だったはず。
  • その後、本番環境がシンプルだったこともあり、長らくVirtualBoxで何一つ不満のない時代が続いた。MySQLでデカいバッチを組んで調べ物する際にディスクのI/Oが遅いなあと思ったりもしたが、仮想マシンのボリュームをSSDに置いたらだいたいどうでも良くなった。
  • さて転職してフロントエンドもバックエンドもnode_modulesでdisk i/oがエラいことになる環境に。あとdockerをちゃんとuser権限で動かすというルールに。
  • この時点でざっくりRyzen 9 5900X・RAM 32GB・SSD 1TBというスペック。

ここでようやく色々試し始める。

試したもの

fioで単純な disk i/o を調べながら選んだ。

WSL2

distrodを使って満足していた時代だった。ありがとうぬるぽへさん。

しかしWSL2のカーネルにiptablesが入ってないため、user権限でdockerを動かすとinternal network内のdnsから名前解決できなくて、イメージ一つpullできなかったりする。Dockerをホストネットワークで動かすか、WSL2のカーネルを自分向けにビルドする必要がある。

あとdisk i/oが一番重い。

ネットワークの疎通が大変面倒なことになってはいるが、どうせTailscaleでツーカーにするのでそこの知識はどうでも良かった。

VirtualBox

勝手知ったるいつもの環境。当たり前だがdockerもuser権限で満足に動く。でもこれもdisk i/oの性能は宜しくない。

Hyper-V

PCを組むときに雰囲気でWin10Proにしてたけど、これが一番disk i/oのオーバーヘッドが少なかった。これもネットワークの疎通が面倒らしいが、これもTailscaleでツーカーにするのでそういうMS知識はどうでもいい。

ということでHyper-Vに落ち着いております。

実機

rp2040相手にrustで書いてビルドしてUSBから流す、となると仮想マシンではつらい。こういうときだけARMなSBC使って実機でlinux使ってます。

その他

macOSはあくまでも「BSDベースのPOSIXぽい環境」なので、Linuxを使う必要があるのならVirtualBoxなり何なりでLinuxを使いましょう、という感想。

ということで

  • カーネルモジュール有無によるハマりポイントが分かってたらWSL2でいいんじゃない?
  • あとはVirtualBoxなりHyper-Vなりお好きに。ストレージ容量&速度は正義。
  • Tailscaleありがとう

こんな感じです。

Discussion