Oasis — 小さく静的リンクされた Linux システム
(github.com/oasislinux)Oasis は小さな Linux システム
- Oasis は他の Linux ベースのオペレーティングシステムとはかなり異なり、BSD により近いです。
- すべてのソフトウェアが静的リンクされており、ライブラリアップグレードの問題を解決し、他のシステムへ簡単にコピーできる完全に自己完結したバイナリを提供します。
- 高速なビルドと 100% 再現可能なビルドを提供し、最適なビルド時間、予測可能で再現可能なビルド、ビルド時間依存性の削減、パッケージ境界を越えたインクリメンタルビルドを可能にします。
- ブートストラップ依存性が最小限で、macOS や OpenBSD のような非 Linux システムでも簡単にクロスコンパイルできます。
原則
- ソフトウェアの複雑さは、すべての推移的依存関係を含めて測定されるべきです。
- 実行ファイルは静的リンクされるべきです。
- ソフトウェアコンポーネントは、容易なカスタマイズと修正を可能にするべきです。
- パッケージソースは URL または git サブモジュールを通じて参照されるべきであり、直接含めるべきではありません。
/etcは完全に理解できるほど単純であるべきです。- パッチは適切に整理され、良い説明があり、常にきれいに適用されるべきです。
インストール
- Oasis は野心的なプロジェクトであり、まだ多くの作業が残っています。
- ユーザーは自分でカーネルをビルドし、システムの問題を解決することに慣れている必要があります。
- 問題が発生した場合は、いつでも喜んで支援を提供します。
QEMU
- Oasis を直接インストールせずに試したい場合は、QEMU イメージを使用できます。
- アーカイブには、ルートファイルシステム、Linux カーネル、QEMU を実行するスクリプトが含まれています。
./runでグラフィカルモード、./run -sでシリアルモードとして実行できます。
ソフトウェア
- 可能な限り、単純で小さなライブラリおよびツールの実装を使用しています。
- musl、sbase、ubase、pigz、mandoc、bearssl、oksh、sdhcp、vis、byacc、perp および sinit、netsurf、samurai、velox、netbsd-curses などが、glibc、coreutils、util-linux、gzip、man-db、openssl、bash、dhclient/dhcpcd、vim/emacs、bison、sysvinit/systemd、chromium/firefox、ninja、Xorg、ncurses の代替として使われています。
- パッケージは論理的なセットにグループ化されており、完全な一覧は pkg ディレクトリで確認できます。
- 希望するソフトウェアが欠けている場合でも、pkgsrc や nix を通じて引き続きインストールできます。
連絡先
- 質問、パッチ、一般的な議論のために、メーリングリスト (~mcf/oasis@lists.sr.ht) と IRC チャンネル (#oasis on libera.chat) を利用できます。
GN⁺の意見
- Oasis は既存の Linux システムとは異なるアプローチを提供し、静的リンク、高速ビルド、最小限のブートストラップ依存性といった特徴によって、開発者に新たな選択肢を提供します。
- このシステムは、ソフトウェア開発の複雑さを減らし、カスタマイズや修正のしやすさを重視する哲学を持っており、ソフトウェアエンジニアリングの原則に対する新鮮な視点を提供します。
- Oasis はまだ開発中のプロジェクトですが、技術的な挑戦を楽しみ、システムへの深い理解を求めるユーザーにとって魅力的な代替案となり得ます。
1件のコメント
Hacker Newsの意見
システム自体について多くを語ることはできないが、IRCを通じてコミュニティとやり取りした際、とても親切だったとのこと。不変OSイメージを構築して Kubernetes ノードとして動かす計画があり、少し助けを受けて成功したという。
静的リンクは、ライブラリの複数のコピーによってベースイメージと実行時メモリがより大きくなる可能性があることを示唆している。静的リンクの単純さは良いが、「サイズを小さくする」という考え方には反しているようにも見える。
2022年8月の以前の議論へのリンクがある。
デフォルトのインストールサイズがどれくらいなのか知っている人がいるのか気になる。どこを見ても答えが見つからず、QEMUイメージへのリンクも現在は切れている。たとえば、似たようなパッケージ構成の Alpine と比べてどうなのか気になる。
ユースケースが何なのか、cproc C コンパイラを使う利点が何なのか気になる。TCC の代わりに cproc を使う利点は何か、また Netsurf ブラウザを知れたのは興味深い。ただし Duktape JS エンジンを使っているので、性能上の問題があるかもしれない。
JavaScript を無効にした状態では GitHub にアクセスできないという不満を述べる(削除された)コメントがあった。Oasis のリポジトリは sourcehut にもミラーされているので、そちらのほうが受け入れやすいかもしれない。
michaelforney は st の Wayland ポートも手がけていた。Oasis の前身は sta.li である。
静的ライブラリのサイズがどれくらいなのか気になる。動的ライブラリはアドレス空間を共有できるが、静的ライブラリではリンカが使われていないルーチンを削除できるため、予想外の効率性があるかもしれない。また、より高速である可能性もある。
musl と従来の glibc をどう比較すべきか、両ライブラリの間に性能差があるのか気になる。最近では Rust や Zig のエコシステムで musl の利用がますます増えている。
興味深い選択がいくつもあり、単なるまた一つの Linux ディストリビューションではない点を前向きに評価している。