0から作るソフトウェア開発

日々勉強中。。。

TRON (T-Kernel for x86)

T-Kernel

T-Kernelは実装されたTRON (The Real-time Operating system Nucleus)の1つであり、
TRON Forumが実装を行い、リリースしたRTOSです。
詳細はTRON Forumのサイトをご参照ください。

T-Kernel for x86

TRON Forumから正式にリリースされているT-Kernelをx86用に移植したものとなります。現在のところ
デモが動くだけとなりますが、Githubでソースコードを公開していますので、ダウンロードできます。

ダウンロード

下記リンクからダウンロードしてみてください。

ダウンロードリンク

TRON (T-Kernel for x86) GitHub/TRON

動かし方

起動ディスクのダウンロード

現在のところ少しのデモが動作するだけとなります。GitHubのTRONリポジトリから起動ディスク
イメージをダウンロードします。

TRONのリポジトリからgrub_rescue.isoイメージファイルをダウンロードします。
リポジトリからは次のパスで行けます。
TRON/srcpkg/tkernel_source/kernel/sysmain/build_t2ex/std_x86/grub_rescue.iso

VirtualBoxから起動させる

VirtualBoxに設定して、grub_rescue.isoイメージから起動できるようにします。
設定方法についてはGRUBをVirtualBoxで起動してみるを参照してください。

デモ画面

GRUBから起動した後は次のように簡単なプロンプトが表示されます。

T-Kernel for x86 起動直後

プロンプトに?コマンドを入力してEnterを押してください。コマンド一覧が出てきます。

T-Kernel for x86 デモコマンド一覧

lsコマンドでマウントしているファイルシステムのファイル一覧が出てきます。
現在のところ初期RAMディスクをFATでマウントしています。

次の画面は起動しているタスクの一覧表示している例となります。

T-Kernel for x86 タスク一覧表示のデモ

今後

T-Kernelをベースに少しずつパソコンで動作する汎用TRONを実装していきたいと
思います。

カーネルソースコードのコンパイル

環境変数の設定

次の環境変数をあらかじめ設定しておく必要があります。

設定する環境変数
環境変数名 説明
BD T-Kernelのソースコードが格納されているディレクトリパス 名を設定します。(例えば、/home/user/srcpkg/tkernel_sourceにソースを格納している場合そのパスを設定します)
GNU_BD cppとobjcopyが格納されているbinディレクトリまでのパス名を設定します。(例えば、/usr/bin/objcopy ならGNU_BDには/usrを設定します)
GNUX86 gccが格納されているbinディレクトリまでのパス名を設定します。(例えば、/usr/bin/gcc ならGNUx86には/usrを設定します)

例として次のように.bash_profileの最後に追加します。
(次の例はCygwin上での設定となります)。

[~/.bash_profile]

export BD=/cygdrive/c/Users/Nina/Desktop/Documents/tron/T-Kernel2.0/srcpkg/tkernel_source
export GNU_BD=/usr
export GNUX86=/usr


makerules.sysdependの変更

現在GitHub上に上がっているソースコードはCygwin上のLinux用のクロスコンパイラー
でコンパイルするようにMakefileが書かれています。例えば、Linux上でコンパイルする
ときには標準のコンパイラーを使用するように変更する必要があります。

Cygwin上でクロスコンパイラーを導入したい場合は環境準備その2 クロスコンパイラ
を参照してください。

makerules.sysdependファイルにコンパイラーのパスが記載されいますので変更します。
makerules.sysdependはTRONリポジトリから次の場所に格納されています。

[makerules.sysdepend]

srcpkg/tkernel_source/etc/sysdepend/std_x86/makerules.sysdepend


変更する必要があるのは次の通りです。

makerules.sysdependの変更
現在の設定 標準的なLinuxの場合
CC := $(GNUX86)/bin/i686-pc-linux-gnu-gcc CC := $(GNUX86)/bin/gcc
CXX := $(GNUX86)/bin/i686-pc-linux-gnu-gcc CXX := $(GNUX86)/bin/gcc
AS = $(GNUX86)/bin/i686-pc-linux-gnu-as AS = $(GNUX86)/bin/as
LD = $(GNUX86)/bin/i686-pc-linux-gnu-ld LD = $(GNUX86)/bin/ld
AR = $(GNUX86)/bin/i686-pc-linux-gnu-ar AR = $(GNUX86)/bin/ar
NM = $(GNUX86)/bin/i686-pc-linux-gnu-nm NM = $(GNUX86)/bin/nm
CPP = $(GNU_BD)/bin/cpp (現在使用していません) CPP = $(GNU_BD)/bin/cpp

カーネルのmake

カーネルのコンパイルはkernel/sysmain/build_t2ex/std_x86でmakeを行います。


$ cd srcpkg/tkernel_source/kernel/sysmain/build_t2ex/std_x86
$ make


起動ディスクのmake

コンパイルが終わりましたら、次に起動ディスクをmakeします。


$ make cd


これで、grub_rescue.isoが作成されますので、VirtualBoxで起動させます。

補足

VirtualBoxの場合は゛設定”→゛システム”→゛アクセラレーション”で゛VT-x/AMD-Vの有効化”
のチェックを外して実行させてください。

現在カーネルはmultiboot spec. 0.6.96 (俗にいうmultiboot1)にのみ
実装対応しています。multiboot spec. 1.6 (multiboot2)には対応して
いませんのでご留意ください。

お願い

GitHub上でプルリクエストお待ち申し上げております。よろしくお願いいたします

GitHub/TRON
PR 説明

ディベロッパー・エクスペリエンス Linux Ext2ファイルシステム
0から作るLinuxプログラム Linux Ext2ファイルシステムの完全説明版(Kindleのみ)となります。実装するステップ数は36ステップあります。少しずつステップを実装して、実際に動かして学習していきます。ファイルシステムの機能を呼び出すシステムコールの実装から、仮想ファイルシステムが呼び出すExt2ファイルシステムの実装を行っていきます。ファイルシステムの開発体験を通すことで、実際にカーネルが行っているファイルシステムの基礎的な動作を理解することができます。ぜひお試しください!

inserted by FC2 system