小さなLinux互換カーネルのTilckでアプリをいくつか試す

小さなLinux互換カーネルのTilckというものを知ったので少し触ってみました．その後Wikiを見ながらbuild_toolchain script を利用していくつかのユーザスペースアプリケーションを試してみました．

vvaltchev/tilck: A Tiny Linux-Compatible Kernel

小さなLinux互換カーネルのTilckを少し試す – matoken’s meme

Home · vvaltchev/tilck Wiki

fbDOOM

まずは楽しげなfbDOOMを導入

fbDOOM

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

マウスデバイスがないのでキーボードでの操作のみですがそこそこ遊べます．

FrameBuffer

次はFrameBufferのアプリを

framebuffer

./scripts/build_toolchain -s build_tfblib
$ ./scripts/cmake_run -DEXTRA_FBDOOM=1
$ make rem

以下のコマンドが使えるようになります．

fb_drawing fb_keyinput fb_text fbtest
fb_hello_world fb_tetris

マンデルブロ集合いいですよね．fb_drawing の中に有ります．

TinyCC

TinyCC も使えます．

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

ただし，現時点では静的リンクが必須です．

root@tilck:/# cat lib/tcc-examples/ex1.c
#!/usr/local/bin/tcc -run
#include <tcclib.h>

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

Tip

こういう操作時はqemuのGUIコンソールちょっと使いづらいので -serial stdio を付けてホストマシンで操作すると便利です．

$ qemu-system-i386 -rtc base=localtime -device sb16 -drive id=img1,format=raw,if=none,file=/home/matoken/src/tilck/build/tilck.img -device ide-hd,drive=img1,cyls=74,heads=16,secs=63 -serial stdio

他にもいくつかのアプリケーションが動きます．WIkiをチェックしてみましょう．
build_toolchain script に色々加えると楽しそうです．

環境

[ 0.111] Hello from Tilck 0.1.4, commit: 5835b80f
[ 0.111] Build type: Debug, compiler: gcc 8.4.0
[ 0.115] timer_hz: 250; time_slice: 40 ms; in_hypervisor: yes

▒▒▒▒▒▒▒▒┐ ▒▒┐ ▒▒┐ ▒▒▒▒▒▒┐ ▒▒┐ ▒▒┐
└──▒▒┌──┘ ▒▒│ ▒▒│ ▒▒┌────┘ ▒▒│ ▒▒┌┘
▒▒│ ▒▒│ ▒▒│ ▒▒│ ▒▒▒▒▒┌┘
▒▒│ ▒▒│ ▒▒│ ▒▒│ ▒▒┌─▒▒┐
▒▒│ ▒▒│ ▒▒▒▒▒▒▒┐ └▒▒▒▒▒▒┐ ▒▒│ ▒▒┐
└─┘ └─┘ └──────┘ └─────┘ └─┘ └─┘

$ dpkg-query -W qemu-system-x86
qemu-system-x86 1:7.2+dfsg-1+b2
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux bookworm/sid
Release: n/a
Codename: bookworm
$ arch
x86_64