Linux Kernel勉強会 2018年3月 に参加しました。

以下、メモです。

全体

最近よく行っている 本町オープンソースラボ でした。 外にオープンソースラボと書いていないので、入口がわからなくて迷う人が多いようです。

今回は、発表者として登録していた人の発表がキャンセルになって、 代わりにホワイトボードを使った話がありました。

ネットワークについて

  • 外と中
  • ハードウェアとソフトウェア
  • カーネルとユーザーランド : 特権モードと特権なし
    • → 割り込み処理
    • ← API 呼び出し
  • ネットワークとパケット
    • ヘッダ + ペイロード + チェックサム (FCS)
  • sudo はカーネルの特権とは無関係
  • シリアルが増えてパラレルが減った理由は?
    • → パラレルは到着タイミングを揃えるのが難しくなってクロック周波数を上げられなくなった。単純に線が太いというのもある。
    • PCIe などの PC の内部は調整ができるのでパラレル? シリアルが並んでいる?
  • socket API
    • TCP だとパケットは隠されていて、ユーザーランドではファイルと同様のストリームに見える
  • カーネルとハードウェアの間はパケットのはず
  • Ethernet
  • プロセスとスレッド
  • OSI参照モデル

もくもくタイム

しばらくもくもくの時間でした。

Linux Kernel の code を読んでみよう

  • 少し古いデータで1800万行
  • 全部読むのは無理
  • 動かしながらみることに
  • 普通のプログラムならデバッガでみる
  • カーネルの場合は別のマシンとかエミュレータ (QEMU) とか
  • 環境構築: Buildroot がクロスコンパイラなどのビルドツールチェーンや busybox などを使った rootfs も用意してくれる
  • qemu でのデモ
    • cortex-a57
    • gdb オプションと -S オプションで起動途中で止めて接続
  • arm64(aarch64)のLinuxカーネルをQEMU上でgdbデバッグする
  • aarch64 の読み方の例: えーあーきろくよん

linux-insides の翻訳

  • https://github.com/0xAX/linux-insides の翻訳
  • linux-insides-ja というレポジトリがある?

シェル

  • シェルとは何か
  • シェルの種類
  • シェルスクリプトを試してみた

NTP

  • MIT の ntp のソースコードをみたり
  • adjtimex(2) の man をみたり
  • Unix 汎用的なものは adjtime らしい

arm のブートシーケンスを読む

  • arch/arm/boot
  • arm/Booting の日本語訳があった
  • arch/arm/tools に対応マシン一覧
  • ATAG なんとかは ARM Linux Developer の ARM Booting Linux に書いてありそうというところで時間切れ

inetd

  • inetd のソースコードを見ていた
  • Internet super-server

gettimeofday

プロセススケジューラー

IPv6

  • OpenVPN 経由で IPv6 接続した話

クロージング

Disqus Comments

Kazuhiro NISHIYAMA

Ruby のコミッターとかやってます。 フルスタックエンジニア(って何?)かもしれません。 About znzに主なアカウントをまとめました。

znz znz


Published