ブログパーツ Twitter

« 映画「イミテーション・ゲーム」を見てきた | トップページ | 関西プリモのお雛祭りに行く »

2015.03.22

新HariTiger OS、コマンドいろいろ

高校野球も始まったし、桜の便りも聞こえ始めたし、いよいよ暖かくなるのか...
と思っていたら明日からまた寒波がやってくるのだとか。
寒暖の差が激しいのは勘弁してよ!


----------

2006年に旧バージョンの開発を開始し、昨年2月から新バージョンの開発を始めている私の自作 OS、HariTiger OS についての続報です。

新 HariTiger OS についての過去記事は以下の通り。
2015.02.14 新HariTiger OS、フロッピーを読むのに成功
2014.12.31 さよなら2014
2014.05.07 新HariTiger OS、3ヶ月
2014.04.06 新HariTiger OS、2ヶ月
2014.03.06 新HariTiger OS、1ヶ月
2014.02.20 Project HariTiger OS、再起動
「旧」HariTiger OS の記事についてのリンクは昨年2月20日の記事内にあります。

 
前回の記事では BIOS の助けを借りずにフロッピーディスク(FD)を読むことに成功しました。
 
あれから1ヶ月あまり経ちますが、そんなに作業時間が取れなかったこともあって、簡単なコマンドをいくつか作ったぐらいにとどまりました。
 
今回はそれらコマンドを紹介していきます。



まず最初は、「ls」「ps」「mem」「ver」「cls」です。
 
ls,ps,mem,verを実行したところ
(前回の記事に比べて Terminal ウインドウの大きさを大きくしました。)
※画像をクリックすると大きな画像(800x600)を表示します。
 
・ls
ディスク内容の一覧を表示するコマンドです。
UNIX 系の「ls」や Windows の「dir」に相当するコマンドです。
Linux の ls を真似て "-rwxr-xr-x 1" などと表示していますが、FD のファイルシステムが FAT12 なのであまり意味はありません。
(読み取り専用ファイルの場合に "-r-xr-xr-x 1" になる程度。)
ファイル名と拡張子の間に空白があるのは、FD の記録形式そのままに表示しているからです。
ちなみに「KIMAGE」とあるのが OS 本体。
 
・ps
現在実行中のタスク一覧を表示するコマンドです。
(表示するのが「タスク」なのになぜコマンド名が ps なのかというツッコミはご容赦願います。)
UNIX 系の「ps」に相当するコマンドです。Windows ではコマンドではなくタスク マネージャかな。
STAT 欄の "w" は休止中(wait)の、"r"は実行中(run)のタスクを表します。
 
・mem
メモリの空き状況を表示するコマンドです。
空き容量と、空いているアドレス範囲を表示します。
空いている領域が連続していない場合は、アドレス範囲の表示が複数行になります。
これを作ったおかげでメモリ管理にバグがあることが発見出来ました。
 
・ver
OS のバージョン情報を表示するコマンドです。
旧 HariTiger OS が「バージョン 0.0.x」、新 HariTiger OS が「バージョン 0.1.x」としています。
バージョン番号は自動ではつけられないので、ソース内に書いています。
 
・cls
Terminal 内の表示をクリアするコマンドです。
実行してしまうと cls コマンド自体の表示も含めてクリアされてしまうので、Enter キーを押す前の状態でスクリーンショットを撮ってあります。



続いては、「cat」と「exit」です。
 
catを実行したところ
(cat コマンドで表示しているものが何か、わかるかな?)
※画像をクリックすると大きな画像(800x600)を表示します。
 
・cat
指定したテキストファイルの内容を表示するコマンドです。
UNIX 系の「cat」、Windows の「type」に相当するコマンドです。
UNIX 系の cat と異なり、ファイルを指定しないとエラーになります。
ちなみに表示している test.txt ですが、内容は "Let It Go" の1番の歌詞です。
(Terminal 内に収まるように改行をカットしピリオドを補っています。)
 
・exit
Terminal を終了させるコマンドです。
(Terminal の終了はメニューからもできます。)
実行してしまうと Terminal 自体が終了してしまうので、Enter キーを押す前の状態でスクリーンショットを撮ってあります。



上記で紹介したコマンドは全て「内部コマンド」になっています。
※Terminal 内部に組み込まれている。
 
HariTiger OS が制作の参考にしている「30日でできる! OS自作入門」(※以下「30日OS」)だとコマンドをいくつか作った次の段階は「アプリ」の作成になります。
 
別の言い方をすると「外部コマンド」ですね。
 
FD 上に OS 本体とは別のファイルとして記録されたコマンドを読み込んで実行する。
 
しかしここで問題が一つ。
 
「30日OS」の実行ファイル形式が独自の「はりぼて OS 形式」であるのに対して、HariTiger OS では Linux などと同じ「ELF(Executable and Linking Format) 形式」を採用しているので、アプリを実行させるための仕組みに「30日OS」のコードが使えません。
 
ELF に関する資料を読み、かつ試行錯誤しながら取り組んでいます。

ちなみに ELF についての資料としては、「0から作るOS開発」サイト内の「Tips ELF フォーマット」などを参考にしています。

 
実は「30日OS」内で書かれている「初アプリ」なるものの実行については一応成功しています。

1枚目の画像の中で ls コマンドによるファイル一覧の中にある「hrb」というのがそのアプリ。
「30日OS」での「hlt.hrb」に相当します。

 
ただこの仕組みがもっと大きなアプリにそのまま通用するのかは不明です。



外部のコマンド/アプリを作成できるようにする場合に必要となってくるのが「システムコール」。
 
新 HariTiger OS の開発を始めるときの記事で、新 OS を作るにあたっての実現したい項目を5つ挙げました。
 
1.一般的な NASM や gcc で開発したい。仮想 PC ソフトはもちろん Virtualbox で。
2.Linux などで標準の GRUB から OS がブートできるようにしたい。
3.最初はテキストモードで文字がぞろぞろ流れて、その後にグラフィックモードに移るようにしたい。
4.システムコールを Linux などが使っている INT 80h を使う方法にしたい。
5.最新のタブレット風な画面にしたい。
 
このうち1,2,5については実現しました。
3については変則的に「始めからグラフィックモードだが擬似テキストモード風の起動画面」という形ではありますが、まあ希望する見た目にはなりました。
 
最後に残ったのがシステムコールについての項目なのです。

現在の Linux などではシステムコールは INT 80h ではなく SYSENTER/SYSCALL 命令を使用していますが、基本的なところを勉強したいこともあって INT 80h の実装を目指しています。

 
なお実装するシステムコールですが、POSIX とかではなく、呼び出し方は違えどあくまで「はりぼて OS」に実装されているものと同種にする予定です。
(そうすれば「はりぼて OS」のアプリが多少の修正で動くと期待。)



というわけで、この新 HariTiger OS の開発もいよいよ最後の山場ということに。
(ちゃんとした OS にするためには足りない機能がたくさんありますが、それらの実装に関しては私があまり関心がないので多分やらないーあくまで私の勉強用の OS だし。)
 
開発のためにそれほど時間が取れない状況は相変わらずなので、次に報告できるのはいつになることやら。


結論: Dropbox の「ファイルの以前のバージョン」を取得できる機能に助けられっぱなし

« 映画「イミテーション・ゲーム」を見てきた | トップページ | 関西プリモのお雛祭りに行く »

コメント

こんにちは。はじめまして。
私も、ずいぶんと昔ですが、自分用にOSを作りました。
OS作りで何が一番大変かと言えば、やっぱり漢字フォントの作成ですよね。
文字多いし。精神修行なのかって状態になりますよね。
頑張って下さい。完成、楽しみにしています。

Hand Craft Master さん、コメントありがとうございます。
 
> OS作りで何が一番大変かと言えば、やっぱり漢字フォントの作成ですよね。
> 文字多いし。精神修行なのかって状態になりますよね。
 
漢字フォントは文字数が半角フォントとは桁違いですからね。
なのでこの OS は「30日でできる! OS自作入門」という本の「はりぼてOS」用の漢字フォントのデータを利用することになります。
 
完成まではどれくらいかかるかわかりませんが、こつこつやっていく所存です。
ありがとうございました。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 映画「イミテーション・ゲーム」を見てきた | トップページ | 関西プリモのお雛祭りに行く »

2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

お気に入り

無料ブログはココログ