3 ポイント 投稿者 GN⁺ 2023-09-28 | 1件のコメント | WhatsAppで共有
  • カーネル、ドライバ、アプリケーション、デスクトップ構成要素を一体で作るフルスタック デスクトップOSプロジェクトで、単なるカーネル実験より広い範囲を扱う
  • テストは nightly ビルドの Essence.tar.xz、VirtualBox向け Essence.ova、QEMU実行コマンドから始められる
  • 公開ビルドはテストのしやすさのためエミュレータ専用で提供されており、実機向けビルドはまだ提供予定の段階
  • カーネルにはファイルシステム非依存キャッシュマネージャ、メモリマネージャ、TCP/IPネットワーキングスタック、仮想ファイルシステム、ウィンドウマネージャといった中核要素が含まれる
  • デスクトップはカスタムUIライブラリ、ソフトウェアベクターレンダラ、タブ付きウィンドウ、FreeType・Harfbuzzベースの多言語テキストレンダリングまで備える

実行と参加の経路

テストとビルド

  • 最新の nightly ビルドはbuild-essence releasesから入手できる
    • Essence.tar.xzをダウンロードして展開する
    • VirtualBoxでは Essence.ova をインポートする
    • QEMUでは以下のコマンドを実行する
      • qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
  • 現在提供されているビルドは、テストのしやすさを目的としたエミュレータ専用構成
  • ビルドとテストの方法は help/Building.md にある

OS構成要素

  • カーネル

    • ファイルシステム非依存キャッシュマネージャ
    • 共有メモリ、メモリマップドファイル、マルチスレッドのページ zeroing、working set balancingをサポートするメモリマネージャ
    • TCP/IPネットワーキングスタック
    • 複数の優先度レベルと priority inversion を扱うスケジューラ
    • オンデマンドのモジュール読み込み
    • 仮想ファイルシステム
    • ウィンドウマネージャ
    • オーディオミキサー
      • 書き直し中
    • オプションのPOSIXサブシステム
      • GCCと一部のBusyboxツールを実行できる
  • アプリケーション

    • File Manager
    • Text Editor
    • IRC Client
    • System Monitor
  • 移植済み構成要素

    • Bochs
    • GCCとBinutils
    • FFmpeg
    • ソフトウェアレンダリングOpenGL向けMesa
    • Musl
  • ドライバ

    • 電源管理: ACPICAベースのACPI
    • 補助記憶装置: IDE, AHCI, NVMe
    • グラフィックス: BGA, SVGA
    • 読み書き対応ファイルシステム: EssenceFS
    • 読み取り専用ファイルシステム: Ext2, FAT, NTFS, ISO9660
    • オーディオ: HD Audio
    • NIC: 8254x
    • USB: XHCI, bulk storage devices, human interface devices
  • デスクトップ

    • カスタムユーザーインターフェースライブラリ
    • 複雑なアニメーションをサポートするソフトウェアベクターレンダラ
    • タブ付きウィンドウ
    • FreeTypeとHarfbuzzベースの多言語テキストレンダリングとレイアウト

1件のコメント

 
GN⁺ 2023-09-28
Hacker Newsのコメント
  • 最初はカスタムウィンドウマネージャを載せた、また別のLinuxディストリビューションだと思ったが、実際には独自のオペレーティングシステムだった
    カスタムカーネルまであり、本当に土台から作られている。オペレーティングシステムやブラウザをゼロから作るプロジェクトは、広く一般に使われなくても大きな価値があるし、開発者たちに拍手を送りたい

    • そういう意味ではElementaryOSのようなディストリビューションも好意的に見ている。自分たちのディストリビューションが本当に統合された1つの環境のように感じられるよう、自前のソフトウェアを保守・修正・制作しているからだ
      ほかのディストリビューションも多くの努力をしているが、KDEアプリが1つのオペレーティングシステムの標準アプリのようにうまく溶け込んでいる様子が特に良い。逆にWindowsにはこうした統一感がほとんどなく、古い方式が混在していて主要アプリの一貫性に欠け、だんだん寄せ集めのLinuxオペレーティングシステムのように見えてくる。MicrosoftがマーケティングチームにWindowsの方向性を左右させず、オペレーティングシステムの磨き込みに集中していたら、とてつもなく優れた製品になっていたと思う
    • こういう見た目だけを変えたLinuxディストリビューションがあまりにも多いので、最初はそう推測しやすい
      Essenceはゼロから作られていて、すっきりしつつも「Linuxっぽくない」UIを備えている点がかなり印象的だ。既存のディストリビューションの上に、より見栄えがよく親しみやすい外観を載せるケースとは違い、これはずっと珍しい方向に見えるし、ChromeOSの後を追えるかもしれない
    • Oberon OSを少し思い出した: https://en.wikipedia.org/wiki/Oberon_(operating_system)
    • 逆に、また「ゼロから作った」と主張するLinuxだろうと思って批判するつもりでクリックしたら、そうではなくて笑った
  • ランディングページが本当に素晴らしい。知りたい情報をほぼすべてすぐに教えてくれる
    きれいなスクリーンショット、省電力ハードウェア対応、30MB未満のストレージとさらに少ないRAMで起動可能、バックグラウンドタスクなし、優れた性能、MITライセンスのコード公開、デモ動画までそろっている。主流のデスクトップOSがカバーできていない領域で人気を得そうな用途がいくつもすぐに思い浮かぶ。開発者向けツールチェーンと始め方についてもっと知りたいが、Discord/Patreonリンクである程度扱われているようだ。タッチインターフェイスのような機能をファーストクラスサポートとして打ち出せば、既存のデスクトップOSとの差別化がさらにしやすそうだし、UIを必要とするIoTデバイスも想像できる

    • その通り。2000年代風のディストリビューションページには、システムを見せるのが恥ずかしいかのようにスクリーンショットをファーストビューから隠しているところがあまりにも多かった
    • 開発者向けツールチェーンと体験については動画で少し触れられていた。ユーザーが自分のデスクトップをテーマ化するにはかなり良い方法に見えた
    • この機能の組み合わせは、組み込みアプリケーション向けにかなり興味深いプラットフォームに見える
      ウィンドウ管理APIがまともなら、組み込み制御システムとしても十分使えそうだ。WASMにコンパイルすれば、擬似ウィンドウシステムを活用したかなり良いWeb UIも作れそうだ
  • 2022年4月以降は、作業の大半が止まっているように見える: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...

    • 2021年以降のコミットはバグ修正のように見える。止まったというより、おおむね完成した状態なのかもしれない
    • いつものことだが、現実的な製品になるかのようにあえて装う理由が分からない
      自分でジャンボジェットを作ると言うのと似ている。粗末な複葉機くらいは組み立てられても、エンジンや実物大の機体は作れず、整備士も工場もないのだから、結局そのジェット機を使う人はいないだろう
  • アセンブラのブートブロックコード末尾の構造が気に入った
    times (0x1B4 - ($-$$)) nopdisk_identifier: times 10 db 0、4つのpartition_entry_*: times 16 db 0dw 0xAA55へと続く形が優雅だ。ディスク識別子と古典的な4つのMBRパーティションが、ブートコードとともに最初の512バイト内でどのように共存するかを示している。ブートブロックをディスクにコピーした後、外部プログラム、たとえばfdiskのようなツールがパーティション値を設定することを前提にした構造だ。ブートブロックコードはたくさん見てきたが、こういう構成は初めて見た

    • 限られたオペレーティングシステム競争のせいで、私たちが見逃している優雅さ・単純さ・性能を思い出す
    • またJustine Tunneyの、ばかげているほど天才的なプロジェクトなのかをすぐ確認してしまう
  • Linuxのあらゆる後方互換性やサーバー機能は不要で、MicrosoftやAppleも避けたい人たちに、こういうオペレーティングシステムが居場所を得るといい
    ChromeOSに似ているが、あそこまで閉じていない形が欲しい

    • インターネットからダウンロードしたアプリが自分の認証情報や文書を盗めないように、ユーザーフレンドリーな権限ベースのセキュリティ設計を備えた形なら、本当に見てみたい
      今日の人々が直面している最大の問題なのに、私の知る限り、オペレーティングシステムレベルの新しいアプローチを試そうという実質的な関心はあまりなさそうだ
    • こういうものを何年も構想して作っているが、日常の用事が常に優先されてしまう
      ハードウェア販売に依存するApple式モデルや、広告に依存するAndroidおよびますますそうなっているWindows式モデルではなく、オペレーティングシステムだけで成り立つビジネスモデルがあれば違ってくるかもしれない。いつか経済的に独立できれば可能かもしれない
    • haiku-os.orgを使えばいい
    • BSD系やPlan 9のフォークである9frontについてはどう思う?
    • ChromeOSにはいつでも簡単にLinux環境を追加できる
  • BIOSからデスクトップまで0.7秒起動は印象的だ

    • Intelが数年前、組み込みプラットフォームで電源投入から完全に操作可能なUIまでLinuxの0.3秒起動を達成したという発表をしたことがある
      自動車向けの事例で、アクセサリ電源が入った直後にインフォテインメントや計器盤のような機能をすぐ使える必要がある状況を想定していた
  • OS が高品質な GUI をどのように描画しているのか気になっていました
    ベアメタル開発で線形フレームバッファに簡単なグラフィックを描いたことはありますが、こうした UI や Windows のような画面で UI コンポーネントを表す画像がどのように生成されるのかは気になります。ウィンドウ枠用の PNG ファイルは見当たらず、テーマに合わせてピクセル色を設定するコードは見えます。OS の UI コンポーネントは普通、画像エディタで作ってからタイル表示するのではなく、プログラムで描画する方式なのか気になります

    • 最近はほぼ常にベクターグラフィックです。昔は単純なビットマップを使っていましたし、この OS は特にベクターグラフィックを使っています
    • ゼロから作るなら、PNG ファイルはデコードが必要なので、むしろより複雑になり得ます
      一方で描画 API があれば、それに対応する描画命令を呼び出す形のベクターグラフィックのエンコードをマッピングするほうが簡単です。同時に拡大縮小の問題も解決され、ベクターグラフィックのアセットは通常、はるかに少ない容量で済みます
    • 上のリンクでも、ユーザーインターフェースが完全にベクターベースだと明記されています
      なので、ラスター画像を使う代わりに UI をどう描くかについての説明だと見ればよいです
    • 最近はおおむね、ハードウェアアクセラレーションを使う OpenGL シェーダーベースです
    • もしこの概念を見落としていたなら参考になります: https://en.wikipedia.org/wiki/Vector_graphics
  • 関連記事: Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - 2022年1月、コメント290件

  • たいてい新しい OS の試みは、あまりにも大海を沸騰させようとするような感じで非現実的に見えますが、これは気に入りました。すぐに可能性がありそうに見えます
    アドバイスするなら、まず仮想化を早めに追加すれば、他の OS と慣れ親しんだアプリを実行できます。長期的には Parallels Coherence に似たシームレスな仮想化を探り、外部アプリをそのホスト OS 上で実行できるようにすれば、新しい OS を悩ませる「アプリがない」問題の短期・中期的な解決策になり得ます。次に、System76、Framework のような Linux 志向のノート PC メーカーや Raspberry Pi など、いくつかのターゲットプラットフォームにハードウェアサポートの範囲を絞るとよいでしょう。さらに、Linux や BSD のドライバーを互換 API 経由で取り込んで使う方法を検討すれば、サポートが悪名高いほど難しい Wi-Fi カードのようなデバイスに対応できるかもしれません

  • Essence の作者である nakst のホームページ https://nakst.gitlab.io/ を見ると、こんな文句があります
    nakst's webpage // This site works best with JavaScript disabled とは、素晴らしい人です