Upgrade to Pro — share decks privately, control downloads, hide ads and more …

小さなLinux互換カーネルのTilck

 小さなLinux互換カーネルのTilck

鹿児島Linux勉強会 2023.01(オンライン開催)で発表:: https://kagolug.connpass.com/event/270072/
source:: https://gitlab.com/matoken/kagolug-2023.01/-/blob/master/slide/slide.adoc

Kenichiro MATOHARA

January 22, 2023
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 小さなLinux互換
    カーネルのTilck
    Kenichiro Matohara(matoken)
    1

    View full-size slide

  2. 南隅から参加(鹿児島の右下)
    好きなLinuxディストリビューションはDebian
    お仕事募集 mailto:work@matohara.org
    Kenichiro Matohara(matoken)
    https://matoken.org
    2

    View full-size slide

  3. Linux大きくなったね
    昔は1FDに収まるディストリビューションなどもあったけど現在はとて
    も大きく
    最近の実用的な小さなディストリビューションはTiny Core Linux
    (11MB〜)が最小?
    用途を絞ればまた小さく出来るのでは?
    第82回 Linuxの成長過程をふりかえる[その1] | gihyo.jp
    3

    View full-size slide

  4. 小さなLinux互換カーネルのTilck
    バイナリレベルでLinuxと互換性のあるKernel
    x86(32bit)で動作
    build scriptで簡単にqemu イメージが作って遊べる
    オプションアプリの追加も簡単に
    vvaltchev/tilck: A Tiny Linux-Compatible Kernel
    4

    View full-size slide

  5. ハードウェア要件
    i586+, RAM 3MB+(qemuの制限で実際はもっと少なくても
    動くはず)
    対応しているシステムコールの一覧
    tilck/syscalls.md at master · vvaltchev/tilck
    5

    View full-size slide

  6. 試してみる
    build & run
    1 tilck を clone
    2 ツールチェインの導入
    3 build
    4 イメージの確認
    5 Qemuで起動(adduser後にloginし直せばsg不要)
    $ sudo apt install build-essential qemu-system-x86
    $ sudo adduser ${USER} kvm
    $ git clone https://github.com/vvaltchev/tilck
    $ cd tilck
    $ ./scripts/build_toolchain
    $ make
    $ ls -l build/tilck.img
    -rw-r--r-- 1 matoken matoken 37748736 1月 8 23:25 build/tilck.img
    $ sg kvm -c ./build/run_qemu
    1
    2
    3
    4
    5
    6

    View full-size slide

  7. Tilckブートローダー,b で起動
    7

    View full-size slide

  8. 一瞬で起動
    8

    View full-size slide

  9. たまにKernel Panick><
    9

    View full-size slide

  10. プリケーションを追加してみる
    build_toolchain script を利用していくつかのユーザスペースアプ
    リケーションを導入できる
    10

    View full-size slide

  11. FrameBuffer
    以下のコマンドが使えるように
    $ ./scripts/build_toolchain -s build_tfblib
    $ ./scripts/cmake_run
    $ make rem
    fb_drawing fb_keyinput fb_text fbtest
    fb_hello_world fb_tetris
    11

    View full-size slide

  12. fb_drawingよりマンデルブロ集合
    12

    View full-size slide

  13. fbDOOM
    $ ./scripts/build_toolchain -s build_fbdoom
    $ ./scripts/cmake_run -DEXTRA_FBDOOM=1
    $ make rem
    13

    View full-size slide

  14.  Tilckにはマウスデバイスがないので操作はキーボードのみ
    14

    View full-size slide

  15. TinyCC
    $ ./scripts/build_toolchain -s tcc
    $ ./scripts/cmake_run -DEXTRA_TCC=1
    $ make rem
    15

    View full-size slide

  16.  現時点では静的リンクが必須
    root@tilck:/# cat lib/tcc-examples/ex1.c
    #!/usr/local/bin/tcc -run
    #include
    int main()
    {
    printf("Hello World\n");
    return 0;
    }
    root@tilck:/# tcc lib/tcc-examples/ex1.c -o ex1
    root@tilck:/# ./ex1
    Killed
    root@tilck:/# tcc -static lib/tcc-examples/ex1.c -o ex1
    root@tilck:/# ./ex1
    Hello World
    16

    View full-size slide

  17. その他のアプリケーション
    Vim, Micropython, Lua
    17

    View full-size slide

  18. debug
    GDB や sysfs( /syst
    /sys ではない), dp(debug panel)コマ
    ンドが利用できる
    18

    View full-size slide

  19. 物理ハードウェアでの実行
    tilck.img をUSBメモリに書き込んで起動
    $ sudo dd if=./tilck.img of=/dev/sdz bs=4M conv=fsync status=progress
    20

    View full-size slide

  20. まとめ
    小さく軽いLinux互換カーネルのTilck
    学習用だがフレームバッファーにも対応している
    用途によっては軽量Linuxとして使えるのでは?
    fbtermやfepを動かすことが出来て場テキストうちマシンにでき
    そうだけどいけるかな?
    21

    View full-size slide

  21. 奥付
    発表
    2023-01-
    22(sun)
    発表者
    利用ソフトウェア
    ライセンス
    鹿児島Linux勉強会 2023.01(オンライン開催)
    Kenichiro Matohara(matoken)
    Asciidoctor Reveal.js
    CC BY 4.0
    22

    View full-size slide