Kernel Map

カーネルのコールグラフが図になっていて、図中の関数名はLXRにリンクしているという、素晴らしいWebサービスを発見。 http://www.makelinux.net/kernel_map これは便利。

就職活動について

OSSで食べていけるようなところに就職が決まりました。実力がしょぼいのは重々承知ですが、チャレンジングにやってきたいと思います、ハイ。*1 *1:正確にいうとあとで配属先を決めるための面接があるのだとか。

インテルのマニュアルについて返答があった!

以前の日記で、マニュアルの発注願いを出したとこまで書いたんだけど、なんと今日返信があって一応送付してくれるそうな。ただし、Instruction Set ManualはもうDownloadのみらしい。とりあえず、送り先の郵便番号が抜けてるということだったので、それを書…

BitvisorのINITFUNCマクロの読解に挑戦

昨日の日記みたいに、「生のコードを読んで、分からないところを調べる」というアプローチは勉強する上で結構有効な気がしたので、今日もチャレンジ。今日はBirvisorのコードです。Bitvisorのコードには、以下のマクロがたくさんでてきます。 //core/time.c …

デバッグメッセージ用にマクロを定義

基本といえば基本ですが、以下のようなdprintkを定義しておくと、コンパイルフラグを変えるだけで動作確認メッセージのON/OFFができて便利です。 #define __DEBUG__ #ifdef __DEBUG__ #define dprintk(format) \ do{ \ printk("%s:%d" format,__FUNCTION__,_…

/lib/modules/`uname -r`/bulid ディレクトリがない

そんなときは、カーネルのソースのディレクトリのルートで sudo make-kpkg linux_headers して、linux-headersのdebパッケージを作り、インストールすればよい(確認済)。と思ったけど、よくみると ls -la /lib/modules/linux-2.6.28.9/ ... build -> /usr/sr…

GCCのプリプロセッサの動きをみて遊ぶ

ruby-libvirtのソースコードを読んでいたら、何やら怪しげなマクロが。 67 #define generic_get(kind, v) \ 68 do { \ 69 vir##kind##Ptr ptr; \ 70 Data_Get_Struct(v, vir##kind, ptr); \ 71 if (!ptr) \ 72 rb_raise(rb_eArgError, #kind " has been free…

Intelのマニュアルを発注

x86

http://www.intel.com/products/processor/manuals/ から、Intelのマニュアルを発注した直後、なぜか発注用のボタンが消えてなくなった(w メールの返信もないし、一体どういうことだろう。まー、pdfで十分だからいっか。# 2009/04/04 追記 私が発注しなかっ…

Thinkpadの無線LANドライバに関する情報

IBM-Lenovo Thinkpad X61 ここがよくまとまっている。iwlwifi を読み込めば無線も動くらしい。 この記事によると、ここからマイクロコードを落としてきてインストールする必要があるみたい。無線LANが動くバージョンのカーネルのファームウェアが入っている…

kgdbを用いたカーネルデバッグ環境の構築

kgdbはLinux 2.6.26 から統合されたカーネルのデバッグ機能です。使った感じとしては、gdbサーバをカーネルが提供しているような雰囲気です。カーネルモジュールを書いていて厄介なバグに出会ったので、導入してみるに至りました。以下ではその導入方法につ…

これは気づかなかった

小飼弾のアルファギークに逢いたい♥に、インターン先の社長さまが出ていられた*1。びっくり。 *1:直接は見たことがないのですがw

libvirtをコンパイル

libvirtのコンパイルしてみるテスト git clone git://git.et.redhat.com/libvirt.git sudo aptitude install libtool libxen3-dev libsasl2-dev libvirt-bin ./configure --prefix=/usr/local/kvm && make && sudo make install つづく

最新カーネルにプロプライエタリなnvidiaドライバをインストール

Linuxカーネルを再構築&&コンパイルした後、カーネルモジュールは読み込めなくなります。nvidiaのドライバもそのうちの1つです。今回、nvidiaからソースを落としてきてインストールすることができたので、その手順についてまとめます。概要は以下の通りです:…

Ubuntuに関する情報サイト

トラブルがあったとき、闇雲にググると時間を食われてしょうがない。 メインマシンがUbuntuなので、Ubuntuに関するサイトをまとめてみる。 Ubuntu Guide Ubuntu Japanese Wiki

x86用Linuxで最も必要動作環境が低い2.6カーネルDistributionは?

デフォルト(CDROMからインストールできる構成)で、最も必要動作環境が低いLinux Distributionを探してみる。ぱっと探してみた感じ、以下のような結果になった。 Distribution名 必要メモリ Puppy 128MB*1 Debian*2 32MB Ubuntu*3 32MB 一瞬DSLというDistribu…

SCIMのキーバインド変更

私の使っているKVMスイッチの切り替えショートカットはshift+ctrlなのだが、SCIMの入力メソッド切り替えと思いっきりかぶっていて大変煩わしい。なので、どうしてもキーバインドを変更する必要があったのだけど、あまり情報がなかったのでエントリを上げる。…

シリアルケーブルでつないでリモートデバッグ(記事収集編)

カーネルモジュールのバグがとれないので、gdbでカーネルデバッグを試みる。 というわけで、とりあえず良さげな関連記事をまとめてみる。Linuxのデバッグ手法をマスターする Linux/GDBを使ってコードを追っかける(Omicron) gdbによるカーネルデバッグ方法 Ke…

Oprofileでプロファイリングしよう

カーネルモジュールのボトルネックを測定したい。こんなことよくあります。Oprofileは、そんな要求に応えられる、非常にいけてるプロファイラです。最近のLinuxカーネルであれば、再コンパイルなしにプロファイリングすることができます:D。 本記事では「Ubu…

むー

Linuxのカーネルモジュールを書いてるんだけど、insmodして3秒経つとフリーズなさるw この問題で3時間くらいなやんでるんだよなぁ。 いったん頭を冷やそう。 - 意外とややこしい問題っぽい。とりあえずお手軽実装の方を使うことにしようw

Gtags用にキーバインドをチューニング

vim

以前をGtags使っていたことがあったんだけど、その時は正直キーバインドのチューニングが甘くて使いこなせていなかった。Gtagsの使い方がホットエントリに入ってるのを見て、ちょいともっかい使ってみるかという気になったのでデフォルトのキーバインドと、…

共有ライブラリ用のテンプレートを吐き出すスクリプト

Ruby用の共有ライブラリを記述するとき、以下のような手順を踏むことが多いです。 共有ライブラリ本体のコードを書く。 Makefileを生成するための extconf.rb を書く。 extconf.rbからMakefileを生成する。 make する。 このとき、クラス名は 共有ライブラリ…

Ruby 温泉 March 2009

面白そうなので参加します>< Ruby 温泉 March 2009 http://atnd.org/events/380

タネンバウム先生半端ないっす

レポート書いてて発見したんだけど、コレ、すごくないですか(w2-4年に一回のペースで800ページクラスの本を改訂 && 書き上げるとか...。知識のファイリングをちゃんとやってるんだろうなぁ。 レポートを書く 27日に提出のレポートがあるので、それのためにW…

OpenOffice 3.0.1 を試してみた。

木曜日に簡単な発表があるのだが、デモをやらんと話にならんような内容なので、デモが動く環境+プレゼンできる環境ということでUbuntuにOpenOfficeを入れて見た*1公式HPからdebファイルを落としてきて、 以下のサイトを参考にインストール。 http://www.osse…

Debain 5.00 Lenny リリース

Debian の 5.00 コードネーム Lenny がリリースされたようです。奇しくもおととい Debian をインストールする機会があったのですが、そのときはまだ RC2 しかでていなかったので etch をインストールせざるをえませんでしたw新機能がどうこういうよりも、 ht…

雑感

思ったより長くなったなーw・・・あれ。そういえばレポート書いてたはずがいつの間にかこんなことを(ry

GRUBであそぼ

GRUBからelfバイナリを読み込んだあと、ページングがなかなかONにできずはまっていたのだけど、一段落したのでまとめ。今回のエントリでは、GRUBからelfバイナリを読み込み、実行するところまでを述べます。 GRUBがelfバイナリを読み込み、起動するまで まず…

ページングをONにして仮想記憶を有効にするまでの手順メモ

はじめて読む486を読み直して、ページングをONにするまでの手順を整理。 GDTを設定。 IDTを設定(割り込みベクタの0x0eがフォールトハンドラ用に予約されている)。 ページディレクトリ、ページテーブルを初期化。このとき、物理アドレスを仮想アドレス空間に…

ページングをONにした後に落ちる理由

そっかー。そりゃ落ちるわ。 リンク時に 0x40000000 用にコンパイルしてるのに、Grubから出た直後は0x100000にバイナリが読み込まれているんだから。 ----- 0x100000 ----- <- EIP # binary is loaded here by grub boot loader. binary compiled for 0x4000…

セグメント

x86

「Linuxのブートプロセスを見る」を見たら、セグメントについてわからなかったことが理解できたので、メモ。私が混乱していた原因はたった1つ。 リアルモードとプロテクトモードではセグメントレジスタの使い方が異なるから。 以下では、その詳細について述…