はじめてのOSコードリーディング

2013-04-14 15.02.39

最近読んで非常に面白かった本。今まで何となくわかった気になっていたUnixの仕組みがもう少しだけわかったような気になった。

会社に入りたての頃、SCO Xenixにシリアルポートのドライバを組み込んで動かすプログラムをいじったりしていたのだが、その裏でこんな動きをしていたのか、というのが今頃になって何となくわかった。しかしXenixはinb()/outb()とかinw()/outw()とかでIOしていたのだが、その辺りのインターフェースはOSによって微妙に違うらしい。

Android

買ってから随分放っておいてしまったが、ぼちぼちAndroidプログラミングを触り始めてみた。2013-03-03 23.50.45

VisualStudio専門のオイラ、Eclipseを触るのはほとんど初めてなのだが、やはりどうもIDEで物を作るとまどろっこしいような気がする。コマンドラインとターミナルとprintfデバッグの世界は今や前時代のものなのだろうか。

しかしマイドキュメントをC:ドライブから移してるとうまく動かないエミュレータというのもいかがなものか。とりあえず備忘録。

mklink /d c:¥users¥hogehoge¥.android d:¥hogehoge¥.android

とかやっとくと動く。しかしこんなの売り物作ってるソフトベンダーの製品でもありがちな気がする。
ちなみに、これも最初MacBook Airに環境作ろうかと思ったのだが、本と違うことやって本質的じゃないトコでハマるのもアホらしいので、まずはWindowsでやってみることにした。MacBook AirはいずれiOSアプリを作る時に使おう。

QEMU

違うことばっかりやってて中々OSの自作に入れないのだが、とりあえずエミュレーターだけ入れてみようと思い brew install qemu してみたら、

In file included from /private/tmp/brew-qemu-1.2.0-31wy/qemu-1.2.0/target-mips/op_helper.c:21:
/private/tmp/brew-qemu-1.2.0-31wy/qemu-1.2.0/dyngen-exec.h:64:24: error: global register variables are not supported
register CPUArchState *env asm(AREG0);
                       ^
1 error generated.
make[1]: *** [target-mips/op_helper.o] Error 1

なんてこと言われてビルドがフェイルする。終いには

Error: Failed executing: make install (qemu.rb:29)

These existing issues may help you:
    https://github.com/mxcl/homebrew/issues/14936
Otherwise, this may help you fix or report the issue:
    https://github.com/mxcl/homebrew/wiki/bug-fixing-checklist

などと言って来るのでとりあえずそのリンクを見に行ったら、単にビルドがフェイルするので誰かなんとかしてくれと書いてあるだけだった。

で、誰も何とかしてくれそうにないのでとりあえずここから大元のソースを取って来て configure && make してみたら何事もなく出来上がった。

パッケージ管理からは外れてしまったがまぁ良しとしておこう。

プログラミング

先週金曜にAppleの法人営業とちょっと話したのを受けて、何気にiOS向けのアプリでも作ろうかと思い始めたので、帰りがけに横浜西口の有隣堂で軽く参考書を探してみた。で、買ってきた本がこれ。WP_000279

当初予定とは全然違う方向に行ってしまった。しかしOSを作るのは非常に面白そう。全然使ってないVaio type uにでも入れてみよう。