Skip to content

koteitan/simple-os

Repository files navigation

SimpleOS

Linux風のシンプルなx86オペレーティングシステム

概要

SimpleOSは教育目的で作成されたミニマルなOSです。以下の機能を持っています:

  • x86ブートローダー(保護モード対応)
  • VGAテキストモードドライバー
  • PS/2キーボードドライバー
  • インタラクティブシェル

必要な環境

以下のツールが必要です:

  • nasm - アセンブラ
  • gcc - Cコンパイラ(32bit対応)
  • ld - リンカー
  • make - ビルドツール
  • qemu-system-i386 - エミュレータ(実行用)

Ubuntuでのインストール

sudo apt update
sudo apt install nasm gcc make qemu-system-x86
sudo apt install gcc-multilib  # 32bitコンパイル用

ビルド方法

# OSイメージのビルド
make

# 生成されるファイル:
# - boot.bin      ブートローダー
# - kernel.bin    カーネル
# - os.img        OSイメージ(1.44MB)

実行方法

QEMUで実行

make run

手動でQEMUを起動

qemu-system-i386 -fda os.img

実機で実行(上級者向け)

# USBメモリに書き込む(注意:データが消去されます)
sudo dd if=os.img of=/dev/sdX bs=512

シェルコマンド

OSが起動すると、以下のコマンドが使用できます:

コマンド 説明
help コマンド一覧を表示
clear 画面をクリア
echo <text> テキストを表示
uname システム情報を表示
uptime 稼働時間を表示(未実装)
reboot システムを再起動

プロジェクト構成

.
├── boot.asm          # ブートローダー
├── kernel_entry.asm  # カーネルエントリポイント
├── kernel.c          # カーネルメイン
├── kernel.h          # カーネルヘッダー
├── vga.c/h           # VGAドライバー
├── keyboard.c/h      # キーボードドライバー
├── shell.c/h         # シェル
├── string.c          # 文字列関数
├── linker.ld         # リンカースクリプト
└── Makefile          # ビルドスクリプト

アーキテクチャ

ブート処理

  1. BIOSがブートローダー(boot.asm)をメモリアドレス0x7C00に読み込む
  2. ブートローダーがカーネルをディスクから0x10000に読み込む
  3. 保護モードに移行
  4. カーネルエントリポイント(kernel_entry.asm)にジャンプ
  5. kernel_main()を呼び出し

メモリマップ

アドレス 用途
0x7C00 ブートローダー
0x10000 カーネル
0x90000 スタック
0xB8000 VGAテキストメモリ

クリーンアップ

make clean

今後の拡張案

  • タイマー割り込み
  • メモリ管理
  • ファイルシステム
  • マルチタスク
  • システムコール

ライセンス

このプロジェクトは教育目的で作成されています。自由に使用・改変してください。

About

vibe-coded simple operation system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors