2016年1月2日 (土曜日)

10:01:49 # Life 2015年はばたばたしてました。2016年はどうかな。

17:52:06 # Life 昨年のAndroid関連。 仕事で必要ではなかったのかもしれないけど、いじっているついでにおそるおそる初めてのAOSP Masterへの変更をいれてみた感じ。 今数えたら2つだけだけどそんなもんだっけな。 Androidではinitrdで起動してそのままsystem.imgを/systemにマウントして使うという仕組みになっているんだけど、 masterではsystem.imgを/にできるように起動イメージの作り方が変更できるようになっていたんだけどそれで/vendorディレクトリへのシンボリックリンクが作成されないという問題があったので修正した: Fix non-vendor.img configuration. あと Android の Bionicは自前でELFローダーをもっているんだけど、x86_64 ELF ローダーのリロケーションでデータが破壊されていたので気づいた Do not depend on host bits to get the right size to write.をアップストリームにコミットしてました。 ARCでは Bionic担当としていろいろ細かい変更はしていたんだけど結局アップストリームに突っ込んだのはこのくらいなのかな。 コードベースをLベースでいじっていたらMasterはMのその先の状態でBionicは大胆に書き換わっていたのがハイライト。

興味があると見てみると面白いと思うけど、BionicのコードベースはCの標準ライブラリなんだけど内部的にはC++11を使いまくっていて LambdaでFor_eachで回していたりするのが素敵。 Linkerではmalloc とか new とかそのまま使えないのでちゃんと SoinfoListAllocator というカスタムアロケーターを用意して使っていて なんか素敵。 Bionic Loader愛でる会とかしたら数人くらいには需要があるか。誰得。

18:24:02 # Life pbuilderについてつらつらと。 2013年からメンテナンスを止めていたのだけどやっと継承してくれるチームが現れて2015年の6月から活発にメンテナンスされている。Cowdancerも拾ってくれたみたいなので素晴らしい。qemudancerもだいぶめんどくさい状態のままだと思うんだけどメンテされているっぽい。 テストがあまり書かれていないし実装を試行錯誤した結果bashとCで書かれた部分で機能が重複しているし大変だと思うんだけどにやにやしながら眺めてる。 そもそもcowbuilderはbashでpbuilderをメンテするのが辛いのでCで書きなおそうと思って書き始めたC-pbuilderプロジェクトというのがてもとにあってそれで試験的に実装したプロジェクトだったと思う。cowdancerはLD_PRELOADハックなんだけどこれも安定して動いてはいるけど動かないケースは明確にあるんだし今日実装し直すんだったらFUSEとかで書き直したいところ。 適当なUnionfsを使えばいい気もするし、VMレベルでのブロックデバイスのスナップショットを活用すればいいんじゃないか。

Junichi Uekawa