
2026/02/23 3:45
**FreeBSD 上で Linuxulator がまるで魔法のように感じられる**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
主なメッセージ:
VS Code の独自ビルドは FreeBSD 上で動作しませんが、オープンソース版は Linux 環境(
Linuxulator)経由で実行すると動作します。このレイヤーを有効にし、SSH を設定してカスタム BASH_ENV を持つ Linux シェル(/compat/linux/bin/bash)を起動することで、Remote SSH 拡張機能はスムーズに機能します。
主な詳細:
- 著者は ARM64 FreeBSD マシンが必要です。現在のノートパソコンは Apple Silicon と比べて性能とバッテリー寿命で遅れています。
- 従来の NFS/SSHFS を用いたリモート開発は、OpenWRT、組み込み Linux、FreeBSD など大規模プロジェクトでは遅くエラーが起きやすいです。
- Remote SSH は OpenWRT 上でネイティブに動作しますが、初めは FreeBSD で「Unsupported platform: FreeBSD.」と失敗します。
- 解決策として
とservice linux enable/start
を使用し、Linux 固有の PATH を設定するpkg install linux_base-rl9
ファイルを作成します。.bash_linux - SSH 設定(
およびSetEnv BASH_ENV=".bash_linux"
)により、VS Code セッションで Linux 環境が起動されます。RemoteCommand /compat/linux/bin/bash - すべての拡張機能はロードされますが Rollup は除外されます。これは
に WebAssembly ビルドをオーバーライドして解決します。package.json - 結果として、FreeBSD 上で高速かつ完全な機能を備えたリモート開発体験が実現し、Linux ABI の安定性と ARM64 ワークフローにおける Linuxulator の実用性が示されます。
インパクト:
開発者は FreeBSD 上で VS Code を性能や機能を犠牲にせず使用できるようになり、ARM64 開発のための FreeBSD への採用拡大が促進されます。
本文
過去数年間、私の選択肢としているエディタは Visual Studio Code です。
完璧というわけではなく、軽量とも言えませんが、機能・拡張機能・パフォーマンスのバランスが絶妙です。
FreeBSD 上で Microsoft の商用ビルドを動かすことは現実的ではありませんが、オープンソース版は問題なく動作します。そこで VS Code が既に使えるなら何故この記事を書くのでしょう? それは ARM64、あるいは何もない という理由です。
私は ARM64 のマシンを必要としています。
Apple の M1/M2 Mac(x86_64 デスクトップから移行した)で時間を過ごしているうちに、再び x86_64 に戻るのは性能・バッテリー寿命ともに後退感が強く感じられます。残念ながら現在、Apple Silicon に真似できる FreeBSD(あるいは Linux でも)対応 ARM64 ノートパソコンは存在しません。将来 Framework や他社がそれを変えてくれることを願っています。
私にとっての生産性殺し:リモート開発
Debian(私のお気に入り Linux ディストリビューション)と macOS の両方で VS Code は素晴らしい体験です。しかし、私が手掛けるプロジェクトはほぼ外部にあります。組み込み Linux システムや OpenWRT デバイス、そして最近では FreeBSD ボックスです。通常は NFS マウント、SSHFS などのセットアップになります。正直言って、それらはひどいです。
現在の主力スタックは SvelteKit と Go バックエンドで、日常業務も多く OpenWRT を扱っています。プロジェクトが大きくなるにつれて、NFS や SSHFS 上でコードを編集することは LSP が多数走ると痛いものです。あるケースではファイルを開くだけで 5〜10 分かっていました。NFS の方は少し耐えられましたが、多数の奇妙な権限問題に直面して完全に諦めてしまいました。その時点で生産性への真の障害となっていたのです。
VS Code Remote SSH が登場
ここ数日、VS Code の Remote SSH 拡張機能を試してみました。公式にはほぼすべての主要 OS でサポートされていますが、OpenWRT(musl ベース)や FreeBSD は例外です。OpenWRT でも試したところ、驚くほどベアボーンで動作しました。SSH 経由で接続し、デバイス上のファイルを直接編集でき、すべてがスムーズでした。パフォーマンスは期待以上で、ハックやトラブルもありませんでした。本当に魔法のように感じました。
自然と次に FreeBSD を試しました。
現在取り組んでいる FreeBSD に特化した大規模プロジェクト「Sylve」を SSHFS/NFS で管理するのは、ファイル数・ディレクトリ数が多いため大変でした。互換性やサポートについて詳しく調べずに Remote SSH を試してみると、予想どおり
Unsupported platform: FreeBSD
というメッセージが出ました。
途中で諦めずに調査を進めた結果
そこで偶然見つけた素晴らしいリポジトリ:https://github.com/morganwdavis/vscode-server-freebsd
セットアップはほぼ笑えるほど簡単でした。実際、FreeBSD の初期設定時にほとんど同じ手順を踏んでいました。
service linux enable # Linuxulator エミュレーションレイヤーを有効化 service linux start pkg install linux_base-rl9 # Linux ベースシステム(ここでは Rocky 9)をインストール
Linux 固有の
PATH はグローバル環境や .zshrc に入れず、ホームディレクトリにある別ファイル .bash_linux に記述しました。
PATH="/compat/linux/usr/local/sbin:/compat/linux/usr/local/bin:/compat/linux/usr/sbin:/compat/linux/usr/bin:/compat/linux/sbin:/compat/linux/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
このファイルは、VS Code が Linuxulator 経由で SSH 接続したときにのみ読み込まれます。
sshd に BASH_ENV 変数を受け入れるよう明示的に指示します。
sysrc sshd_flags="-o AcceptEnv=BASH_ENV"
そしてクライアント側の SSH 設定でそれを設定します。
SetEnv BASH_ENV=".bash_linux"
すべてが整った後、macOS クライアントから FreeBSD ボックスへの最終的な SSH 設定は次のようになりました。
Host sylve-code Hostname 192.168.72.172 SetEnv BASH_ENV=".bash_linux" User root Port 22 IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes ServerAliveInterval 60 ServerAliveCountMax 3 RemoteCommand /compat/linux/bin/bash
そして…うまく動作しました。
正直なところ半分の拡張機能が壊れるだろうと、言語サーバーがクラッシュするだろうと、パフォーマンスは最低限しか出ないと思っていました。しかし何も起きませんでした。私が頼りにしているほぼすべての拡張機能は完璧に動作し、Rollup だけが FreeBSD 用バイナリを提供していませんでした。ですがそれも障害ではありませんでした。WASM ビルドがあるので
npm の依存関係を上書きするだけです。
{ "overrides": { "rollup": "npm:@rollup/wasm-node@^4.30.1" } }
これで解決しました。
最後に
結果として、FreeBSD 上で Linux バイナリを Linuxulator を通じて透明に実行することで、高速・スムーズ・完全な機能を備えたリモート開発体験が得られました。本当に魔法のようです。もっと重要なのは、Linux ABI の安定性と FreeBSD の Linuxulator がそれをどれだけうまく実装しているかを示す証拠です。このセットアップは私の FreeBSD での作業方法を完全に変え、ワークフロー上最大の摩擦点の一つを消しました。
非常に感動していますし、このアプローチがどこまで発展できるか楽しみにしています。紙上では脆弱に見える設定ですが、実際にはまさに「これで完璧」な仕組みになっています。