2017/09/26


Linux Kernel Study
2017/09/23
Sakura Internet, Umeda, Osaka

上記に参加してきた。公聴しながら記述したので、誤字が多い。
_____________________________________________________




0. Linux kernel 勉強会の経緯

主催者が leyer が低いところに興味があった。
他の勉強会、に出たところ 3 人集まった。
がちの linux kernel 開発者はいない

1. Linux Kernel 最初の一歩

@satomicchy

** kernle.org と linux.org

kernel.og: Linux kernel organisation
- 本家

Linux online inc が管理
- user forum
- distribution
- linux man
   コマンド一覧があるこれは便利そう

** what is linux の翻訳比較
 - 英語と日本語の対比がある
 - kernel はパスタらしい
 - Linux kerne document project は, 止まっている ?
   2.6 系で止まっている

2. Liux Kernel source code を読む 

 xoxyuxu (中居さん)

 - RTOS Linux 外は機能ごとに追加料金が課される。
   - ipv4, ipv6 など

 - 仮想ファイル: デバイスファイルを介して通信
 - LTS 
 - LTSI kernel 工業用の linux kernel 5 年? のメンテ期間

 - kernel source code
   valnila kernel (unstable)

   ・linux のつりーを取ってくれば基本的には OK
   ・ほかカーネルメンテなーのソースを取ってくる
   ・MAINTAINERS いかのディレクトリに管理者のリスト

- ビルド環境
 ・とりあえずビルドしないと読むのが辛い
 ・debian 系がおすすめ
 ・kernel configuration で必要でないcpu arch は落とす。ソースを読むのが楽になる
 ・obj が生成されていない kernel は読まない
 ・corss compiler を使う x86_64 で arm の obj
   - カナディアンクロス というクロスコンパイルの方法がある

- Eclipse でコンパリる 
  ・ 今タイル時に -I を指定しないとだめ
  ・ make V=1 で参照を確認すこと

- Elixr
  ・ web base で解析してあるのを公開してくれている
  ・ freeElectrons  さん

-source
  ・doumenration, arch, block(block derice), certs, crypto(暗号処理), drivers(深い), firmware(空), fs
  ・sinclude, int, ipc (sysv, shared mem, semaf)  , kernel, lib, mm, sample
  ・scripts (make file, python, shell), securiy, sounrd, tools(group, cpupower, perf, gpio), usr, virt(kvm)
  ・mmake help に static analyser や gtags のオプションが記述されている
  ・firmware は dist がぶち込む商用のデバイスドライバなどが入いる
 
- stract
  - fallocate(2)
    SYSCALL_DEFINE で grep するとみつかる
  - maro の嵐を読むと マクロ名を変換して syscall 名を作る
  - strace で追っかけるアセンブラのコードがある
  - Linux 関連メモ 宇治電子や

- libc
  - vDSO virtual dynamic shared object
  - gettimeofday() が呼べなくて苦労した
  - kprob のほうがよい ?
  - Linux カーネル 2.6 network stack に関してはかみ

2. 資料なし 

  吉田さん

  - mac 上の docker の中で linux kernel をビルドしてみた
  - apline linux
  - gist に docker ファイルあり 
  - qemu でブートできなっかった
  - make menuconfig の general setup の initramfs/initrd を有効にした。
  - block device の loop back device オプションを有効した
  - static link した c プログラムを動かした
  - mac のカーネルは moby とう distro

3. Linux kernel の勉強ってなんだ

  矢吹さん

  - Linux Kernel の TCP アルゴリズムを触った  
  - TCP アルゴリズムを入れ替えられる mod を変える
  - 組み込みは Debian 由来のツールが多い

  ・ Linux マシンを持とう
  ・非力な環境で限界になった時、の挙動を学ぶ
    - 極限の状態は、低レイヤーがコントロールする
    - 極限状態から、どうやってとめるか
    - 小さい環境ならば、予測と実績が立てやすい
      一台のマシンならばどうにかない。

  ・ 死んだ情報と生きた情報
    - boot 方式が変わる
      UEFI と systemd
    - dbus Linux の共通通信方式になる傾向
      freedesktop org を読まないとだめ
    - 理論と実践の療法をやらないとだめ

  ・ 書籍紹介
    - code reading 毎日コミュニケーションず
    - Linux のブートプロセスをみる ASCII
   
  ・下準備
    - GNU global
    - milkcode, gonzui
    - ctag
    - git grep

  ・ ソースコードを読む
    - export gpl
    - ひら method
    - 興味があるところをひたすら読む
    - 学んだことは、試してみたほうがよい

  ・ソースコードを動かす
    - printk()
    - gdb

  ・debian kernl package
    - blob: firmware 商用の driver など

  ・読むためのツール
    - cscope

   ・kernel
    - condif : kernel の設定
    - systemmap : address
    - initrd : boot 時に私用

   ・debootstrap
    - snapshot.org で保管している
    - license の精査

   ・debug
    - qemu-kvm に gdb と連携する機能がある
    - 昔は、KGDB で別マシンとシリアル通信をした
  
   ・ Qemu + gdb
    - man qemu-system で -s オプションと -gdb オプションを確認

   ・ TCP/IP
    - reno
    - congestion algorithm

3. 簡単な Linux Kernel 開発
  村瀬さん
  
  会議が定義で以降

  ・仮想環境で linux の開発
   - elkdat
   - cross cmopile: Op-TEE 

  ・ubuntu 16.4
    - userkan ubuntu
    - kernel test
    - multi core

  ・cons
    - vagrant/qemu/kvm/libvirt
    - ubuntu と debian でちょっと違う

  OP-TEE
    proc
     - ARMv7, ARMv8 use trust zone
     - eazy gdb
     - P-TEE
     - 非常に低いレイヤーの認証系のレイヤー を扱う trust zone
   cons
     - useland busy boox
     - ARM only

   - ccache を入れるともっと早い
   - ran-only
   - gdb symbol 読み. 設定ファイルを $HOME したに億
    
・Kernel ソースの構造紹介   

  - usr 以下に 起動用のツールが入っている
  - sample 以下はテストケース

5. LT NAND flash
  - usb メモリは放置しておくとデータがきえる
  - bit flip
   read write で 0-1 1-0 が変化 ECCで治す  

  - ware leveling
   特定の箇所に書き込みが集中すると劣化が早くなるので、まんべんなく使うようにする。
   エラー率が多くなってきたら、他の場所に書くなど

  - SLC, MLC/TLC device
    MLC はデータ書き込んだ隣のデータが消される
    実際、linux の MLC ドライバは何か問題があると ML に流れていれた
    SLC は高い, MLC を MLC っぽく使う機能がある。ただし、容量を多く使用できない

宿題
  - 環境構築 ビルド

2017/09/15

iptables

本日、iptables の設定がめんどい時、ufw を使うことを学びました。

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0076

2017/09/14

学会に参加中

某私立大学にお邪魔しています。すごい。今、スタバが学内にあるんだ。
私のいた学校は、まずい飯が出てくる食堂しかなかった。そして、その食堂すら途中で、なくなった。

講演が再開されるまで、プライベートな作業をする。

2017/09/10

今日知ったジョーク

第二次世界大戦を経験したイギリス空軍の元パイロットが、ある講演会に呼ばれました。
講演会は、学校で開かれ戦争を知らない若い世代の人たちのものでした。

パイロット「そのとき、私のしろに2機 F**ker が着いてきた。」

 学校で、F** word は教育上よくないので、すかさず教師がフォローします。

教師「みなさん、Fokker というのは、ドイツの飛行機メーカーです。」

しかし、パイロットは、

パイロット「いや、マサチューセッツから来た F**ker だ。 」

2017/09/09

uq mobile data 通信プラン 500 K に変えてみた。

今までお世話になっていた wireless gate さんの wimax から、UQ mobile の data 通信に乗り換えました。最大通信速度 max 220 MiB から 500 KiB は辛いです。金額的には 3980 円から 1980 円 になりました。

速度計測用のページではほぼカタログスペック通り 500 KiB 出るのですが、apt-get とかアプリだと 60 KiB ぐらいしか出ません。Axel でダウンロードしてもかわらず。

速度は、ちょっとつらいかな。

ちなみに you tube の 144p ならばカクつかなく見ることができます。240p 以上は、止まりながらです。

でも、wimax が繋がらなかった場所でも使えるので、まあいいかと思っています。
梅田のグランドフロントなどでは、外でも入らない場所が結構ありました。

しばらくはこのプランで行きます。

まとめページ

      

リンク

The Wizard of Science
友達のブログ文化人類学とか難しい話をしております。あとホームページから自作ゲームも配布。