ダッコ
グラフィカルウィンドウマネージャーとX86 PCのアプリケーションを備えた趣味のUnixのようなOS。

デモ|特徴|アプリ|ポート|構築方法
保留中
ダッコの開発は現在保留中です。お気軽にフォークして、それを台無しにしてください!
ダッコを試してみてください
ローカルに仮想化します
最近のリリースは、リリースページからダウンロードできます。または、最新のダッコのディスクイメージは、Duckos Githubワークフローのアーティファクトからダウンロードできます。これは、QEMUまたは選択したソフトウェアを使用して仮想化またはエミュレートできます。
ブラウザでエミュレートします
または、CopyによるV86プロジェクトのおかげで、ブラウザでDuckosのバージョンを試すことができます。これはローカルで実行するのがはるかに遅く、Doomのような移植されたソフトウェアのコピーがありません。ここで試すことができます!
特徴
- ウィンドウマネージャー /コンポジタと、アプリを作成するためのテーマに及ぶビューベースのUIツールキット
- UNIXソケットとE1000イーサネットドライバーを備えたIPネットワーキングスタック上の基本的なTCP/UDP
- AC97サウンドカードのサウンドサポート
- Doomのようなプログラムの多くのポート、GCCのようなユーティリティ、およびSDLのようなライブラリ
- バイナリの動的リンクと荷重
- Ptraceやサンプリングプロファイラーなどのオンボードデバッグ機能
- ソフトウェア3Dレンダリングライブラリ
- いくつかの実際のハードウェアで実行されます
- Raspberry Pi 3Bでステージ1を過ぎてブートするWIP AARCH64ポート:)
将来の計画
- Aarch64ポートを完了します
- Kernel IPCシステムをより効率的に改良します
- より良いフォントレンダリング(ベクトルフォント、さまざまなサイズなど)
- 自己ホスト
- より安定性と速度
- 必要に応じてメモリを解放し、定期的にフラッシュすることができるより良いファイルシステムキャッシュ実装
- より多くのカーネルとユーザースペースのユニットテスト
- カーネル、ライブラリ、およびアプリケーションのより良いドキュメント
- さらにいくつかのカーネルとユーザースペースのデバッグツールなので、私のシステム内の余分なコーヒーで避けることができた単純なバグのためにセグフォルトが発生するたびに、QEMUデバッガーで膝までの時間を費やす必要はありません
- マルチプロセッサ(マルチコア)サポート
- カーネルからユーザースペースにさまざまなモジュールをゆっくり遷移します(マイクロカーネル)
- ミックスに錆を追加する(?)
サービス
これらのコードはサービスにあります。
- init(/bin/init):duckosのinitシステム。
- Pond(/bin/Pond):ダッコのウィンドウマネージャー/コンポジター。
- quack(/bin/quack):duckosのサウンドサーバー。
- DHCPクライアント(/bin/dhcpclient):IPアドレスを割り当てるためのDHCPクライアント。
アプリ
これらのコードは、プログラム/アプリケーションにあります。
- Calculator(/Apps/Calculator.App):基本計算機。
- ターミナル(/apps/terminal.app):libuiベースのターミナルアプリケーション。
- System Monitor(/apps/monitor.app):メモリとCPUの使用率を示す基本システムモニター。
- 4連続(/apps/4inarow.app):基本的な4列列ゲーム。 2人のプレイヤーと一緒に、またはコンピューターと対戦します。
- SandBar(/bin/Sandbar):画面の下部にボタンの行を表示してアプリケーションを起動する基本的な「タスクバー」。
- ファイル(/apps/files.app):初歩的なファイルエクスプローラーアプリケーション。
- viewer(apps/viewer.app):画像を表示してサウンドファイルを再生できる基本的なメディアビューアー
- lib3d demo(apps/3demo.app):lib3dライブラリのデモ。デフォルトでキューブを表示します。 OBJファイルを表示するために使用できます。
- 編集者(/apps/editor.app):テキストファイルを編集するための基本的なアプリ。
- About(/apps/about.app):いくつかのシステム情報を表示します。
- ducksweeper(/apps/ducksweeper.app):グリッドベースのアヒル回避ゲーム;)
CLIプログラム
これらのコードは、プログラム/coreutilsにあります。通常の容疑者と並んで、ダッコは次のとおりです。
- DSH(/bin/dsh):配管、リダイレクト、コマンドリコールをサポートする基本的なシェル。
- Open(/bin/open):適切なプログラムを使用して、コマンドラインからファイルとアプリケーションを開くユーティリティ。
- 再生(/bin/play):オーディオファイルを再生します。
- 日付(/bin/日付):日付と時刻を示します。
- プロファイル(/bin/プロファイル):実行中のアプリケーションをプロファイルし、Flamegraph/SpeedScope互換ファイルを出力します。
- ホストで
scripts/debugd.pyを実行し(speedscopeがインストールされた状態)、 -rパラメーターをプロファイルに渡して、ネットワークを介して出力をホストに直接送信し、speedscopeで開くことができます。
引数を取得するプログラムは、引数なしでそれらを実行するときに正しい使用法を提供します。
ライブラリ
- LIBC:標準Cライブラリ。
- LIBM:標準Cライブラリの数学部分。
- Libpond:池の窓マネージャー /コンポジタとのインターフェースに使用されるライブラリ。
- libgraphics:画像形式の読み込みなどのグラフィックを操作するためのいくつかのユーティリティを提供するライブラリ。
- Libui:アプリケーションのUIフレームワーク。
- libtui:ターミナルアプリケーションのフレームワーク。
- Libterm:ターミナルを処理するためのフレームワーク。
- Libduck:引数や構成ファイルの解析など、一般的に使用されるクラスとユーティリティを含むライブラリ。
- LIBRIVER:D-BUSとは異なるIPCライブラリは、リモート関数呼び出しとデータの合格のフレームワークを提供します。
- Libapp:インストールおよび実行中のアプリケーションに関する情報を取得する方法を提供するライブラリ。
- Libsys:システム情報を取得するための高レベルのC ++抽象化、つまりProcfsを提供します。
- Libsound:オーディオアプリケーションのフレームワークを提供し、SoundサーバーであるQuackとのインターフェースを提供します。
- LIB3D:基本的なソフトウェア3Dレンダリング機能を提供します。
- libmatrix:マトリックス数学ユーティリティを提供します。
- Libexec:ELFサポートを提供します。
- libdebug:デバッグ機能を提供します。
ポート
ポートは、引数として希望のポートを搭載した実行によってインストールできます。必要な依存関係も構築およびインストールされます。
よりエキサイティングなポートのいくつかは次のとおりです。
- 運命
- 独自のDoom Wadfileを提供し、/Apps/doom.app/ディレクトリに配置する必要があります。 (詳細については、ビルドの手順を参照してください。)
- binutils
- GCC
- SDL2
- また、SDL2_GFX、SDL2_IMAGE、およびSDL2_TTF
建物 /ランニング
- 手順については、instructions.mdを参照してください。
貢献
- Duckosに貢献する方法については、converting.mdを参照してください。
クレジット
- カーネルヒープ割り当ての実装のためのBlanhamのLiballoc 1.1の鏡(オープンドメインです。したがって、使用したい場合は、強くお勧めします)
- 多くのインスピレーションのためのセレニティオス
- フォント用のgohufont(wtfplの下でライセンス)
ライセンス