プログラミング
UnoDOS
要約
UnoDOSは、1.44MBのフロッピーディスクに収まる16ビットリアルモードOSとして始まった、x86アセンブリで書かれたグラフィカルオペレーティングシステムファミリーです。現在では、PC、コンソール、ハンドヘルド、シングルボードコンピュータ、スマートフォンなど、22種類の異なるハードウェアプラットフォームに対応するファミリーに成長しました。最新のフラッグシップであるpc64は、64ビットPC上でベアメタルで動作し、独自のドライバ、ネットワークスタック、ブラウザ、オフィススイート、コンパイラ、ハイパーバイザーを備えています。
全文翻訳
UnoDOSは、1つのソースツリー、1つのデザイン、22台のマシンに対応するグラフィカルオペレーティングシステムのファミリーです。IBM PC/XTの8088から現代のラップトップまでをサポートします。
UnoDOSは、GUIファーストの16ビットリアルモードOSとして始まり、カーネル、ウィンドウマネージャー、2つのファイルシステム、協調型マルチタスク、および完全なアプリケーションセットを単一の1.44MBフロッピーディスクに収めるために、すべてx86アセンブリで書かれました。その後、ホームコンピュータ、コンソール、ハンドヘルド、シングルボードコンピュータ、スマートフォンにわたるコントラクト駆動型のポートファミリーに成長し、そのフラッグシップは現在pc64です。これは、UnoDOSが最新の64ビットPC上でベアメタルで動作し、独自のドライバ、独自のネットワークスタック、ブラウザ、オフィススイート、コンパイラ、ハイパーバイザーを備えています。
すべてのプラットフォーム向けのプリビルドイメージはリリースページにあります。最新PC向けのハイブリッドISOおよびUSBディスクイメージ、コンソールおよびハンドヘルド向けのカートリッジROM、ホームコンピュータ向けのディスクイメージ、ボード向けのSDカードペイロードです。ほとんどは1分以内にエミュレータで実行できます。ユーザーマニュアルでは、WindowsおよびmacOS用のワンクリックUSBフラッシャーアプリを含め、実際のハードウェアでの起動方法を説明しています。
実際に検証されたものとビルドされたものは別の問題であり、PLATFORMS.mdはそれを回答する台帳です。プラットフォームごとに、実際のハードウェア(およびどの物理マシン)で起動したもの、エミュレータのみで検証されたもの、および既知のギャップが記載されています。
UnoDOS pc64、最新PCのフラッグシップであるpc64は、2007年以降に製造された実質的にすべてのx86-64 PCでベアメタルで起動します。UEFIは、クラシックOSにおけるBIOSの役割を果たします。ファームウェアはフレームバッファ、キーボード、およびブートボリュームを引き渡し、その後、ほとんどのマシンでUnoDOSはExitBootServicesを呼び出し、ファームウェアは終了します。それ以降、OSは完全に独自のドライバで実行されます。ハイブリッドディスクイメージは、レガシーBIOSマシンでも同じOSを起動します。
完全なデスクトップ。シェルは、このファミリーのクロスプラットフォームウィジェットツールキットであるunoui上に構築されています。タスクバー、仮想デスクトップ、ウィンドウのスナップ、アニメーションAlt-Tabスイッチャー、デスクトップアイコン、プログラムメニューを備えたウィンドウ付きデスクトップです。Aurora(モダンなフラットデフォルト、ライトおよびダーク)から、忠実なレトロなルック(Mac OS 7、1ビットMac Plus、Windows 3.1、Amiga Workbench、C64、Apple II、NeXTSTEP)まで、10種類のテーマがライブで切り替え可能です。テキストはカーニングされ、アンチエイリアス処理されたTrueTypeで、バンドルされたオープンフォントが使用されており、すべてのコントロールはポインタまたはキーボードでアクセス可能です。
アプリケーション。UnoWord、UnoCalc、UnoShow:in-tree unodocライブラリを介して実際のMicrosoftバイナリフォーマット(.doc、.xls、.ppt)を読み書きするOffice 97クラスのスイートです。ブラウザ:Cookie、キャッシュ、検索、保存、HTTPおよびCA検証済みTLS 1.2 HTTPS、および2つの切り替え可能なJavaScriptエンジン(in-tree unojsバイトコードVMとバンドルされたquickjs-ng)、同じインターフェースの背後にあるlibcssベースのレイアウトエンジンオプションを備えたHTML、Markdown、CSSレンダリングです。Studio:OS自体で実行されるIDEで、シンタックスハイライト、ビルド&ランループ、AIアシスタント、およびUnoDOS上でネイティブUnoDOSアプリをコンパイルする組み込みCコンパイラであるUnoCを備えています。Python:MicroPythonをファーストクラスのランタイム(PYRT.UNO)として、シェル、ファイルシステム、ネットワークへのuno APIを備えています。Music、UnoAmp、Photos:ゼロから作成されたWAV、MIDI、MP3、AAC-LCデコーダー(unomedia)。UnoAmpはクラシックなスキンをロードするWinamp 2クローンです。Photosは一般的な画像フォーマットを表示します。SSH:ネイティブSSHクライアント(ed25519、in-tree暗号化)。さらに、Files、Editor、Paint、Tracker、Clock、Control Panel、System、ログビューア、ゲーム(Dostris、Pac-Man、OutLast)、およびuno3d 3DライブラリのショーケースであるRunner3Dがあります。アプリは、独自のディスクリプタを持つロード可能な.UNOモジュールです。APPS\にドロップすると、シェルがそれを検出します。再ビルドも再起動も不要です。
独自のハードウェアサポート。ファームウェア以下のすべてはネイティブであり、このツリーのために書かれています。ストレージ:共通ブロックレイヤー下のAHCI、NVMe、SDHCI/eMMC、USBマスストレージ、ネイティブFAT16/FAT32ドライバ、GPT/ESPオーサリング。USB:ハブ、HIDキーボードおよびマウス、マスストレージ、USBイーサネット(ASIX AX88179、Realtek RTL8152)を備えたポーリングxHCIホストスタック。ネットワーキング:有線NIC(Intel e1000/e1000e/igb、Realtek r8169)およびWi-Fi(Intel、Realtek、Marvellドライバ)はWPA2をサポートし、ゼロから作成されたTCP/IPスタック上で動作します。ARP、IPv4、ICMP、UDP、TCP、DHCP、DNS、TLS(BearSSL)、ソケット、および双方向syslogが含まれます。入力:PS/2、I2C-HID(ネイティブラップトップトラックパッド)、USB HID。オーディオ:Intel HDA、AC'97フォールバック、48 kHz DMAリング。ACPI:in-tree AMLインタプリタ(unoacpi)。
ハイパーバイザー。unovirtはIntelハードウェア上でVMXオペレーションに入り、EPTとvirtioデバイスの後ろでゲストを実行します。実際のUbuntuカーネルがUnoDOS上で起動し、ユーザースペースに到達し、シェルで応答し、UnoDOSボリューム上のファイルから提供されるext4ディスクをマウントします。AppliancesアプリとVMマネージャーがそれをフロントエンドとしています。AMD/SVMバックエンドは記述済みで、ハードウェア証明を待っています。
インストール、管理、自動化。インストーラー:既存のディスクのESPへの非破壊インストール、またはディスク全体のクローン。実行中のマシンはネットワーク経由で再インストールすることもできます。unosecure:ローカルアカウント、RBAC、監査トレイル。URC:リモートコントロールチャネル(フェイルクローズドな動詞ゲート、ワンタイムコンソールアーム)で、ヘッドレスで実際のマシンを駆動します。ビルドのデプロイ、テストの実行、画面のストリーミングを行います。これは、キーボードに人間がいなくてもハードウェアフリートが検証される方法です。
デバッグビルド:オンメタルコンフォーマンスンテストとして実行されるビヘイビア仕様(pc64/SPEC.md)、ウォッチドッグ、フォールトテレメトリ、ストレスハーネス。
実際のマシンで証明済み。Lenovo ThinkPad X1 Carbon Gen 8(ネイティブトラックパッド、Wi-Fi、ライブテーマと解像度切り替え)、常時稼働のZimaBladeテストボックス(USBから起動、ファームウェアから切り離し、完全にネイティブで実行)、およびQEMU+OVMFハーネス(変更ごとに実際のイメージを起動)で検証済みです。pc64/README.mdの設計ノートには、実際のハードウェアのみが公開するファームウェアトラップが記録されており、ポートの価値の半分を占めています。
ビルド方法。sudo apt install gcc-mingw-w64-x86-64 qemu-system-x86 ovmf python3 python3-pil cd pc64 ./build.sh # -> build/esp/EFI/BOOT/BOOTX64.EFI ./build.sh run # QEMU+OVMFで起動します。
ポート全体は、EDK2なしで、ストックパッケージでビルドされます。LinuxおよびWindows環境の設定についてはpc64/DEVELOPMENT.mdを、完全なアーキテクチャツアーについてはpc64/README.mdを参照してください。
ファミリー。1つのコントラクト、多くの世界。UnoDOS 3.1はコントラクト駆動型です。単一の機械可読コントラクト(unodef/)が画面ジオメトリ、ウィンドウとイベントレイアウト、共有列挙を定義し、すべての世界がそれから生成されるか、それに対してチェックされます。アセンブリポートとx86リファレンスはバイト単位で同一に消費され、11のポートは移行ではなく3.1アーキテクチャ上で新たにビルドされ、新しいターゲットは小さな生成サーフェスで済むことが証明されています。docs/UNODOS-3.1-MIGRATION.mdおよびdocs/CONTRACT-ARCH.mdを参照してください。
ポート。各ポートは、共有アプリセット(Files、Notepad、Music、Theme、Tracker、Paint、ゲーム(Dostris、OutLast、Pac-Man))を備えたUnoDOSデスクトップを起動します。これは、マシンが保持できるものに合わせてスケーリングされ、2KBのRAMのランチャープロファイルまで対応します。機能ごとの比較はdocs/FEATURE-MATRIX.mdにあります。
ホームコンピュータ。ポートCPUハイライト。IBM PC/XT (x86) 8088+:リファレンスOS。✅実際のハードウェア、サイクルアキュレートな8088を含む。Amiga 68000:セルフブートADF、カッパー/ビットプレーン、Paulaオーディオ、ディスクロードアプリ、PC互換FAT12。Commodore 64 6510:高解像度ビットマップデスクトップ(セルごとの色、SID、CIA TODクロック)、すべてのアプリがディスクロード。VIC-20 6502:22x23文字マトリックス上の新しい3.1ワールド。Apple II 6502:独自のGCR 6-and-2 RWTS、高解像度レンダラー、ディスクロードアプリ。Apple IIGS 65C816:スーパー高解像度デスクトップ、Ensoniq DOCオーディオ、SmartPort経由のFAT12、完全なアプリパリティ。Mac System 1–7 68000+:ホストされたToolboxポート(1ビットおよびカラーQuickDraw)、アプリフリーコア、ロード可能なモジュール。MacPlus(スタンドアロンOS)68000:ベアメタル:独自のブートブロック、ドライバ、レンダラー。✅実際のMac SE。
PowerPC Mac PPC G3/G4:Open Firmwareクライアント、最初のビッグエンディアンPowerPCワールド。
コンソールとハンドヘルド。ポートCPUハイライト。Sega Genesis 68000:VDPタイルデスクトップ、SRAM/テープ/Sega-CDストレージ。✅実際のハードウェアで起動。Super Nintendo 65816:Shadow+DMAタイルマップモデル、SPC700オーディオドライバ。🟡条件付きパス。