Coder Social home page Coder Social logo

ssstoyama / microkernel-book Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nuta/microkernel-book

0.0 0.0 0.0 148 KB

『自作OSで学ぶマイクロカーネルの設計と実装』サポートサイト

License: MIT License

Python 5.97% C 87.57% Assembly 2.63% Makefile 3.82%

microkernel-book's Introduction

『自作OSで学ぶマイクロカーネルの設計と実装』サポートサイト

このリポジトリは、『自作OSで学ぶマイクロカーネルの設計と実装』(秀和システム、ISBN: 978-4-7980-6871-8) のサポートサイト兼、教育用マイクロカーネルOS「HinaOS」のソースコードの配布場所です。

本のカバー画像

HinaOSとは

HinaOS (ひなおーえす) はマイクロカーネルベースの教育用オペレーティングシステムです。次の特徴・機能を持っています。

  • 32ビット RISC-V (QEMU virtマシン) に対応
  • マルチプロセッサ対応マイクロカーネル
  • 独自ファイルシステム (HinaFS)
  • TCP/IP プロトコルスタック
  • virtio-blk デバイスドライバ (仮想ストレージデバイス)
  • virtio-net デバイスドライバ (仮想ネットワークデバイス)
  • コマンドラインシェル

開発環境構築

HinaOSの開発には次のパッケージが必要です。筆者が利用しているバージョンも記載していますが、同じバージョンでなくとも新しめのものであれば問題ありません。もしビルド時にエラーが出る場合には、バージョンが古すぎないか確認してください。

  • Git バージョン 2.38.0
  • Python バージョン 3.11.2
  • GNU Make バージョン 3.81
  • QEMU バージョン 7.1.0
  • LLVMツールチェーン バージョン 15.0.2

Ubuntu 22.04 (Jammy) の場合は次のコマンドで必要なパッケージをインストールできます。

$ sudo apt update
$ sudo apt install llvm clang lld python3-pip qemu-system gdb-multiarch git
$ cd <HinaOSのディレクトリ>
$ pip3 install --user -r tools/requirements.txt

macOS 13 (Ventura) の場合は次のコマンドで必要なパッケージをインストールできます。

$ brew install llvm python3 qemu riscv-software-src/riscv/riscv-tools
$ cd <HinaOSのディレクトリ>
$ pip3 install --user -r tools/requirements.txt

Note

Windowsでもwingetを利用して上記のパッケージをインストールすることでネイティブな開発環境を構築できます(詳細なステップは本書の付録で解説しています)。ただし環境構築がかえって面倒であるため、WSL2上でUbuntuを利用するのがお勧めです。

ソースコードのダウンロード

gitコマンドでソースコードをダウンロードできます。

$ git clone https://github.com/nuta/microkernel-book

ビルド・実行

次のコマンドでビルドできます。-j8 は8並列ビルドを意味します。CPUコア数程度を指定すると良いでしょう。V=1RELEASE=1はビルドオプションで、組み合わせて使うことができます。

$ make -j8              # OSをビルドする
$ make -j8 V=1          # OSをビルドする (詳細なビルドログを出力)
$ make -j8 RELEASE=1    # OSをビルドする (コンパイラのより高度な最適化を有効化)
$ make -j8 run          # OSをビルドしてQEMUで実行する (シングルコア)
$ make -j8 run CPUS=4   # OSをビルドしてQEMUで実行する (4コア)

デバッグ

HinaOSのデバッグ を参照してください。

ライセンス

HinaOSは MITライセンス で公開されています。

プルリクエスト受諾方針

HinaOSはシンプルさと分かりやすさを保つため、新機能を追加するプルリクエストは受け付けていません。誤字の修正やバグフィックスのような変更のみ受け付けています。ただし、各ドキュメント (ARCHITECTURE.md など) の改善は大歓迎です :D

microkernel-book's People

Contributors

nuta avatar tk0h avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.