2010-10-01から1ヶ月間の記事一覧
タイトルはちょっと大げさだけど、btrfs-unstableブランチとメインラインに動きがあったので、今回はその紹介。実は、Btrfsの開発ブランチである git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable は今年の7月中旬頃から全然更新されな…
BUG_ONマクロは、Linuxカーネルにおいて、引数に与えられた式を評価した結果が真となることが想定されない箇所(つまり、真ならバグ)で使われる。簡単に言うと、Cのassertのようなもの。ただし、assertよりもきつくて、BUG_ONの引数が真になると、カーネルパ…
久しぶりに、Linuxカーネルのメインラインをgit pullして、UMLカーネルをビルドしようとしたら、ビルドに失敗してしまった。原因はビルドできない壊れたコードがメインラインに入ってしまったため。今回は、ビルドできるようになるまでにやったことから、手…
以前、LinuxカーネルHack: ビルド時間の短縮を求めて でmakeの並列ビルドオプションを使ってビルドの高速化を試みた。今回は、カーネルモジュール開発でのビルド時間短縮を考える。今回紹介するテクニックは、デバイスドライバやファイルシステムなどのカー…
前回、カーネルモジュールをUMLでいじれるようになったので、次は何をしようかと思って、今回はLZOで遊んでみることにした。最初は、zlibで遊ぼうかと思ったけれども、ちょっと違う方が面白そうだったので。それに、BtrfsのWikiの「Project ideas」(https://…
今回は、カーネルからexportされている様々な関数(機能)にアクセスして実験するための準備として、カーネルモジュールを作成する。UML上でカーネルモジュールのビルド、組み込み(insmod)、解放(rmmod)ができるようにする。以下の操作はすべてUML上にて行う。…
今回は、Btrfsからちょっと脱線して、より深いところにある、UMLのブロック型デバイスドライバに寄り道してみることにした。 サマリー UMLではUBD(UML Block Deviceの略?)というブロック型デバイスドライバが仮想ドライブとしての役割を果たしている。 UBDで…
前回、Btrfsのmount後に様々なカーネルスレッドが起動されることを発見した。今回はその続きで、これらのカーネルスレッドを掘り下げて見ていく。全体的な構造が見えてきたけど、それぞれのカーネルスレッドでの処理の理解までにはいたっていない。 サマリー…
サマリー mountコマンドを実行すると、mount(2)が実行される。mount(2)があることをはじめて知った。http://linux-documentation.com/en/man/man2/mount.html Btrfsをmountできるようにするには予めカーネルに認識させる必要がある。init_btrfs_fsにてregist…
はじめに 今回は、UML+GDBでBtrfsをデバッグできるようにしてみる。途中で失敗して多少遠回りになったけれども、デバッグはできるようになった。なお、Ubuntu 10.10でのUMLの開発環境がまだ整備できていないので、これまで使ってきたUbuntu 8.04のUMLの環境…
VirtualBoxにインストールしたUbuntu 10.10(ホスト名は適当にmonkeyにしてみた)でBtrfsを早速試してみる。ちなみに、現在利用中のVirtualBoxのバージョンは3.2.8 r64453。まずは、VirtualBoxで仮想ドライブを追加。 Oracle VM VirtualBox > [Ubuntu 10.10のV…
Linuxカーネルの探索をはじめて1ヶ月が経過したので、今回はその振り返り。こうやってまとめてみると、1ヶ月あれば結構いろいろできるなぁと思った。 やったこと ビルド UMLカーネル UML(User Mode Linux)を使うことで、GDBを使いながらカーネルを効率よく解…