** osdev-jp の紹介 uchan は現在「30 日でできる!OS 自作入門」の読者などが集まった、OS 技術に関するコミュニティ「osdev-jp」というものを運営しています。もしよかったらそちらも覗いてください! uchan は2019年現在「osdev-jp」というコミュニティを運営しています。このコミュニティは「30 日でできる!OS 自作入門」の読者などが集まっていて、OS や低レイヤ技術に関する話題を扱っています。もしよかったらそちらも覗いてください! https://osdev.jp/ 普段は主に Slack で会話してます。Slack への参加申請やその他ご質問は [[Twitter @uchan_nos:https://twitter.com/uchan_nos]] まで! ** uchan について 「30 日でできる!OS 自作入門」の校正を手伝った人です。出版当時は高校生、今は IT 系の会社でソフトウェアエンジニアをしています。 以外、とても古い記事ですが、記念で残してます。 ** MinGW(C++言語使用)ではりぼてをコンパイルしよう といっても、数個の実行ファイルをMinGWから抜き出してtolsetにコピーするだけ(基本的には)なのですけど。 本格的にC++を使うなら純粋仮想関数への対応やグローバル変数コンストラクタなどへの対応が必要です。スライド書きました。 [[C++でできる!OS自作入門:http://www.slideshare.net/uchan_nos/cppos]]~ 以下の記述は古いですが、一応残しておきます。 (2014/01/16追記) 必要なファイル -MinGWのパッケージ --http://sourceforge.net/project/showfiles.php?group_id=2435からMinGW 5.0.2をダウンロードします。 インストール -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 --以下のように変更・追記 #INCPATH = ../../z_tools/haribote/ INCPATH = ../../z_tools/haribote ・ ・ #CC1PLUS = $(TOOLPATH)cc1plus.exe -I$(INCPATH) -Os -Wall -quiet CPP = $(TOOLPATH)c++.exe -I$(INCPATH) -Os -Wall -B$(TOOLPATH) -c ・ ・ %.obj : %.cpp ../apilib.h Makefile ../app_make.txt $(CPP) -o $*.obj $*.cpp こんな感じに変更する --これで完了です 注意)必要なら各種ヘッダに extern "C" { ・ ・ } と書いたりしてくださいね。そこは各自で。 ** C言語の罠 -演算子の優先順位 int a = 0xaa; if ( a & 0xff == 0xaa ) { printf("a & 0xff == 0xaa !!"); } というコードで、実は printf("a & 0xff == 0xaa !!"); は実行されない。 --解答 if ( a & 0xff == 0xaa ) ↓ if ( (a & 0xff) == 0xaa ) ** 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'' SIZE(10){2007-03-11 (日) 08:03:23} -HariboteOSがXGAで起動OK。CDやFDはウルトラベースX2使用で使えます。機種名:IBM ThinkPad X22 -- ''mac'' SIZE(10){2007-03-11 (日) 14:18:24} #comment ---- ***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:レジスタの中身を一覧表示| [[ここ:http://www.h7.dion.ne.jp/~qemu-win/qemu-doc-ja.html]]の「3.5 QEMUモニター 3.5.1 コマンド 」に詳しい解説がありました。(2006/10/17追記) //** tolsetでVMware Playerを使うときのファイル //ライセンスはKL-01です。[[ダウンロード:http://uchida.zisaku.com/vmware.zip]] //自宅サーバーがダウンしてデータ消失(涙 // //z_toolsの中にぶち込んでください。Readme.txtを読むこと。 ** VMwareでharib18dのcrack1を起動してみるテスト QEMUでcrack1をやると、&size(20){''QEMUのバグ''};のせいでcrack1が正常終了し、dirコマンドも正常に打てます。繰り返しますが&size(20){''QEMUのバグ''};です。~ んで、VMwareでやったらどうなるのかなぁと思って(実機でやる勇気は無いです。)VMwareで%%初号機起動実験%%crack1起動実験をしてみました。 結果:~ crack1と入力してEnterを押すと、VMwareのメッセージボックスが開き、~ *** 仮想マシン カーネルスタック障害(ハードウェアリセット) *** …… などと書かれていました。~ OKボタンを押したら強制的にOSが再起動しちゃいました。恐るべしcrack1! (悪さをさせないように改造したら余計被害が大きくなる典型(?))~ VMwareはQEMUより細かいところまで行き届いているなぁ。 ** VMwareでharib18eのcrack1を起動してみるテスト QEMUだとcrack1を起動したところで何のメッセージも出ませんが、VMwareで実験をすると 0x0D : General Protected Exception. キターって感じです。一般保護例外という、とてつもなく致命的なエラーが表示されて喜ぶのって、結構特殊だと思ったり(笑) ** こめんと+α -だって一応商品ですからね -- 名無しさん SIZE(10){2006-03-25 (土) 22:14:27} -C++で作ってみました。 http://d.hatena.ne.jp/Bayside/20060518/p1 -- ''bayside'' SIZE(10){2006-05-18 (木) 14:26:28} -vmware.zipのリンクで404食らいましたよw -- [[Flast]] SIZE(10){2007-06-23 (土) 07:32:27} -すんませんです。自宅サーバーがダウンしてデータ消失しました。 -- ''uchan'' SIZE(10){2007-06-23 (土) 17:18:24} #comment