osdev-jp の紹介
uchan は2019年現在「osdev-jp」というコミュニティを運営しています。このコミュニティは「30 日でできる!OS 自作入門」の読者などが集まっていて、OS や低レイヤ技術に関する話題を扱っています。もしよかったらそちらも覗いてください!
https://osdev.jp/
普段は主に Slack で会話してます。Slack への参加申請やその他ご質問は Twitter @uchan_nos まで!
uchan について
「30 日でできる!OS 自作入門」の校正を手伝った人です。出版当時は高校生、今は IT 系の会社でソフトウェアエンジニアをしています。
以外、とても古い記事ですが、記念で残してます。
MinGW(C++言語使用)ではりぼてをコンパイルしよう
といっても、数個の実行ファイルをMinGWから抜き出してtolsetにコピーするだけ(基本的には)なのですけど。
本格的にC++を使うなら純粋仮想関数への対応やグローバル変数コンストラクタなどへの対応が必要です。スライド書きました。
C++でできる!OS自作入門
以下の記述は古いですが、一応残しておきます。
(2014/01/16追記)
必要なファイル
インストール
- MinGW-5.0.2.exe
- 実行してDownload onlyを選択(インストールしたい人はご自由に。)
- MinGW base toolsとg++ compilerを選択
- binutils-2.15.91-20040904-1.tar.gzとgcc-g++-3.4.2-20040916-1.tar.gzを解凍
- bin/as.exe, bin/c++.exe, libexec/gcc/mingw32/3.4.2/cc1plus.exeをz_toolsにコピー
Makefile設定
- app_make.txt, haribote/Makefile
注意)必要なら各種ヘッダに
extern "C" {
・
・
}
と書いたりしてくださいね。そこは各自で。
C言語の罠
VESA2.0が起動したノートPC情報募集
なんで募集するのか。それは、はりぼてOSで高解像度&多色化改造をしても、せっかく買った実験用ノートPCがVESA1.2だったりするとがっくりってことがあるので、そんなことを少しでも回避出来るように情報を集めようと。
結局、僕がノートPCを買うときの参考にしたいわけです(すみません)。
ということで、もし「VESA2.0対応のノートPC」がありましたらここに投稿お願いします。
- 募集する規格
- VESA2.0対応であること。(「はりぼてOS」が高解像度(320x 200より高い解像度)で動けばVESA2.0対応と見なして良い)
- CD-ROMドライブは無くても良い。
- フロッピーディスクドライブがあると良い。
- 現在中古PC市場に出回っているとなお良い。
動作報告欄
- ノートPC買ってしまったので報告。「はりぼてOS」起動&動作確認。VersaProNX VA50J -- uchan 2007-03-11 (日) 08:03:23
- HariboteOSがXGAで起動OK。CDやFDはウルトラベースX2使用で使えます。機種名:IBM ThinkPad X22 -- mac 2007-03-11 (日) 14:18:24
IPLを1から書いててはまったバグ(というか作成ミス)
SSに0x100, SPに0を入れていた。→SSに0,SPに0x1000(0x100×16)を入れたら直った。つまり、スタックって設定した番地からどんどん引き算して使うから、普通のセグメントと逆だと勘違いしてた。(冷静に考えれば全然違うのにね。)
OS開発にQEMUのデバッグモードを活用しよう
OSを作っていると、AXやDSなどのレジスタの中身や、メモリの内容を表示したいときが有ります。そんなとき、QEMUが使える環境なら、いとも簡単に実現できます。
やり方:
QEMUが起動したらCtrl + Alt + 2を押すと「QEMU 0.6.1 monitor ...」と1行目に書かれた画面になります。
そこがデバッグモード(名称は僕が考えました。正しくは知りません)の画面になります。書かれたとおり「help」と入力すると、使えるデバッグ用のコマンドがずらっと出てきます。
以下は僕がよく使うコマンド
| コマンド | 意味 | オプション | オプション補足 |
| x /fmt addr | addrアドレスのメモリの内容を表示 | /fmt | /b:1byte表示 /h:2byte表示 (/bx, /hxとすると、強制的に16進数表示モードになります) |
| /i:アセンブラ命令表示モード(mov %ax,%dsなどと表示してくれて便利) |
| info subcmd | 様々な情報表示 | subcmd | registers:レジスタの中身を一覧表示 |
ここの「3.5 QEMUモニター
3.5.1 コマンド 」に詳しい解説がありました。(2006/10/17追記)
VMwareでharib18dのcrack1を起動してみるテスト
QEMUでcrack1をやると、QEMUのバグのせいでcrack1が正常終了し、dirコマンドも正常に打てます。繰り返しますがQEMUのバグです。
んで、VMwareでやったらどうなるのかなぁと思って(実機でやる勇気は無いです。)VMwareで初号機起動実験crack1起動実験をしてみました。
結果:
crack1と入力してEnterを押すと、VMwareのメッセージボックスが開き、
*** 仮想マシン カーネルスタック障害(ハードウェアリセット) *** ……
などと書かれていました。
OKボタンを押したら強制的にOSが再起動しちゃいました。恐るべしcrack1! (悪さをさせないように改造したら余計被害が大きくなる典型(?))
VMwareはQEMUより細かいところまで行き届いているなぁ。
VMwareでharib18eのcrack1を起動してみるテスト
QEMUだとcrack1を起動したところで何のメッセージも出ませんが、VMwareで実験をすると
0x0D :
General Protected Exception.
キターって感じです。一般保護例外という、とてつもなく致命的なエラーが表示されて喜ぶのって、結構特殊だと思ったり(笑)
こめんと+α
- だって一応商品ですからね -- 名無しさん 2006-03-25 (土) 22:14:27
- C++で作ってみました。 http://d.hatena.ne.jp/Bayside/20060518/p1 -- bayside 2006-05-18 (木) 14:26:28
- vmware.zipのリンクで404食らいましたよw -- Flast 2007-06-23 (土) 07:32:27
- すんませんです。自宅サーバーがダウンしてデータ消失しました。 -- uchan 2007-06-23 (土) 17:18:24