2019年8月アーカイブ

Linuxカーネルの開発工程の流れ、品質の確保方法、具体的なバグからの修正例の紹介、の3本立ての内容の本。開発の現場に長年関わってきた立場からの解説となっている点が特徴となっている。

Linuxが切り開く輝かしい未来だとか、Linuxの内部設計をディープに解説するだとか、そういった方面の話はない。どちらかというと現場レベルのいち開発者の行っている作業を淡々と紹介するといったニュアンスが近いかもしれない。今やLinuxは、一部の天才が開発をリードするというよりも、大多数のふつうの開発者が業務のために開発したり解析したりメンテしたりするという側面が多いため、こういうスタンスの本のほうが実際のLinuxへの関わり方という意味で現実的でよくある例と言えるのかもしれない。

初心者からすると取っ掛かりにくいジャンルのLinuxの世界へ(バグを直すという)具体例を持ってわかりやすく紹介するという意味で良い本。逆に、Linux内部のコアな設計にはあえて踏み込んでいないので、そういうのを期待している人にとってはあえて読む必要はないかもしれない。

以下、個人的に気になった読書メモ。

P44 SECTION-006 ソフトウェアの品質より「メンバ名を変更して、意図的にコンパイルエラーを起こして」 変更漏れがないか確認するための方法の1つとして紹介されているこの方法、個人的にはよく使う。Makefileや依存関係・コンパイルスイッチが入り組んでいると、正直実際にコンパイルする手順じゃないと何もかもが信じられなくなっちゃうんだよねぇ。

P64 SECTION-010 デバイスドライバの取り外し3より「Coccinelle」 静的解析ツールの紹介だけど、この手のはあまり詳しくないので、助かる。

P76 SECTION-012 割り込みハンドラの登録直後より「IRQというのはIntel用語」 え?そうだったの?一般用語だと思って今まで「割り込み」とほぼ同義で使ってた。Wikipedia類だとっても「Intel用語だ」という明示が見当たらないので真偽の程がよくわからない。

P77 SECTION-012 割り込みハンドラの登録後より「スプリアス割り込み(Spurious interrupt)」 このエラーが出たとき意味がよくわからずに泣いた経験を思い出した。英語を訳してもよくわかんないんだもん。まぁ結局エラーを出してるコード周辺を読んで「よからぬ割り込みが上がりっぱなしの場合かな?」とたどれたから事なきを得たけど。

P101 SECTION-014 32bitと64bitの違いより「Documentation/core-api/printk-formats.rst」 いつも雰囲気でprintkの%のフォーマットを読み取るけどやっぱドキュメントちゃんと読まねば・・・Linuxの内部設計の意図なんかはDocumentation/以下のをちゃんと読むのがなんだかんだで近道なことが多いよね。

P102 SECTION-014 32bitと64bitの違いより「SipHash...セキュリティに強いハッシュ」 初耳だった。ハッシュというと、SHA-256のような暗号用途のと、CRC32のような化け対策の用途のと、くらいしか意識したことなかったもので。。

P166 SECTION-025 スクリプトのshebang行の解釈より、shebangの127文字制約の仕様の議論はちょっと参考になった。LinuxはLinus本人の強い意向で、ユーザランドの互換性を壊す変更は何が何でも悪だという方針になっているので、それが垣間見れる一例になっている。

最後に、この本は3分の2くらいが具体的なバグと修正の例に費やしているわけだけど、実際のところ、見慣れない変なバグに出くわしてしまったら、バグ出たドライバのLinuxのupstreamの最新版でなにか修正が入っていないか確認して、その修正と出くわしたバグとを照らし合わせる、みたいな作業が多いわけで、まぁなんというかものすごく実践的だなと感じられた。

このアーカイブについて

このページには、2019年8月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2019年7月です。

次のアーカイブは2019年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 5.2.13