⛳
「お手軽に試すLinux環境」の落とし所
たまに「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