Linux Kernel勉強会 2018年7月分 に参加しました。
今回は発表が充実していました。
以下、メモです。
ブートシーケンスの概要
特に資料は用意できなかったので、ホワイトボードに書いて概要を説明してみました。
BIOS や UEFI → ブートローダー (LILO や GRUB など) → kernel, initramfs, cmdline → initramfs の /init → real root の /sbin/init (sysvinit とか systemd とか) という感じの話をしました。
Linux kernel 起動前の話
ARM の起動部分の話でした。
コンテキストの話
- Unreliable Guide To Locking
- Q: ドライバーはどうやって作るの? → 似たようなものを参考にして作る
- SPDK
initramfs の話
initramfsについてを再演してみました。
respberrypi のブートの話
- Raspberry Pi boot modes (source)
- Boot flow (source)
- OTP とは? one-time programmable?
- SD の bootcode.bin から起動
プロセスID、スレッドID
以前の勉強会ではっきりしていなかった部分をちゃんと調べたという話でした。
- プロセス、スレッド、タスク
- task_struct の pid がスレッドID で tgid がプロセスID
- fork(2) と clone(2)
- fork.c の do_fork
- getpid(2) と gettid(2) の結果をプログラムを書いて確認
- top コマンドで H キーでスレッド表示して確認
- clone(2) の CLONE_THREAD
- pthread_setname_np
- pthread_self
セマフォ
実際のソースコードを引用しながら、実装を追いかけていく話でした。
- カーネルのセマフォの実装を読んでみた話
- Aeronet のドライバーで実際に使われている部分も読んでみた話
クロージング
時間があれば話をすると言っていたものも含めて、早めに発表が全部終わったので、早めに終わりました。
- 8月は休み (夏休み)
- 次回は2018年9月22日(土)の予定
- テーマ案: yocto (build root)、ドライバーを作ってみよう、情報共有、参考ブログ、バグ披露
Disqus Comments