NagisinnraOSを作っています — 32bit自作OS開発の記録
はじめに
最近、自分で32bitのOSを作っています。
名前は NagisinnraOS。
Linuxディストリビューションの「NagisinnraLinux」とは別に、OSそのものを自分で作ってみようと思って始めたプロジェクトです。
最初から完成されたOSを目指すのではなく、
- ブート
- 32bit protected mode
- メモリ管理
- キーボード
- ファイルシステム
- システムコール
- GUI
- アプリケーション
といったOSの基本部分を、一つずつ実装していくことを目標にしています。
現在のNagisinnraOS
現在は x86 / i386向けの32bit OSとして開発しています。
CUIだけで終わらせるのではなく、最終的にはデスクトップOSとして使えるようなGUI環境を作ることを目指しています。
現在実装・開発している主な機能は、
- FAT12
- ファイル操作
- NANO風テキストエディタ
-
.COM形式のプログラム実行 -
INT 80hによるシステムコール - IDT
- VGAテキストモード
- マウス入力
- GUIウィンドウ
- ファイルマネージャ
- テキストエディタ
- ペイント系アプリ
- ゲーム
などです。
GUIへの挑戦
最初はCUI中心でした。
しかし、開発を続けているうちに、
「せっかく自分でOSを作るなら、デスクトップ環境まで作ってみたい」
と思うようになりました。
そこでGUIの開発を始めました。
目標としているのは、暗めのウィンドウと星空・銀河をイメージした壁紙、細いタスクバーなどを組み合わせた、シンプルなデスクトップ環境です。
まだ完成には遠いですが、少しずつ「OSらしい画面」になってきています。
ファイルシステム
OSを作っていて特に重要だと感じたのがファイルシステムです。
現在はFAT12をベースにしています。
単に DIR のようなコマンドでファイル一覧を表示するだけではなく、最終的にはGUIのファイルマネージャから実際のファイルを操作できるようにしたいと考えています。
将来的にはFAT32などへの対応も検討しています。
システムコール
NagisinnraOSでは INT 80h を利用したシステムコールも実装しています。
OS本体とアプリケーションの間をどのようにつなぐのかを考えながら、少しずつ仕組みを作っています。
この部分は、単に画面に文字を表示するだけだった段階から、OSとして一歩進んだ感じがして面白いところです。
これから
今後は、
- メモリ管理
- マルチタスク
- FAT12の安定化
- GUIウィンドウマネージャの改善
- ファイルマネージャの強化
- アプリケーション環境の整備
- USBデバイス対応
- FAT32対応
- ネットワーク機能
- より本格的なデスクトップ環境
という方向で開発を進めていきたいと思っています。
特にメモリ管理は、今後のマルチタスクやアプリケーション実行の基盤になるので、重要な部分になりそうです。
おわりに
NagisinnraOSは、まだ完成したOSではありません。
むしろ、これから作っていく部分のほうが圧倒的に多いです。
それでも、ブートローダーから始めて、ファイルシステム、システムコール、GUI、アプリケーションへと少しずつ機能が増えていくのはかなり面白いです。
「OSを使う」だけではなく、
OSそのものを作ってみる。
これを目標に、NagisinnraOSを開発していきます。
今後も開発の進捗をqiitaに記録していく予定です。