2020-02-17 03:43:33 +01:00
|
|
|
UMKa -- User-Mode KolibriOS developer tools
|
|
|
|
===========================================
|
2018-05-07 17:31:42 +02:00
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
This is a common project for a set of KolibriOS developer tools which are based
|
2020-10-12 05:02:02 +02:00
|
|
|
on original KolibriOS kernel code wrapped and hacked as to run in the UNIX
|
|
|
|
programming environment. The idea is to make userspace UNIX tools that use as
|
|
|
|
much unchanged KolibriOS kernel source as possible to test
|
|
|
|
architecture-independent parts of the kernel in your favorite developer
|
|
|
|
environment.
|
2018-05-07 17:31:42 +02:00
|
|
|
|
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
umka_shell
|
|
|
|
----------
|
2019-12-02 23:53:22 +01:00
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
is an interactive shell with commands that are wrappers around KolibriOS kernel
|
2020-10-12 05:02:02 +02:00
|
|
|
syscalls and other internal functions. What works now: block layer including
|
|
|
|
disk cache, FS, UI and graphics, scheduler, ACPI/AML interpreter,
|
|
|
|
synchronization primitives, strings, slab allocator, events, unpacker, other
|
|
|
|
minor functions.
|
|
|
|
|
|
|
|
It can also be used for automated testing by feeding it a file of commands
|
|
|
|
instead of typing them.
|
|
|
|
|
|
|
|
Example:
|
|
|
|
$ umka_shell < mytest.t > mytest.out.log
|
2019-12-02 23:53:22 +01:00
|
|
|
|
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
umka_fuse
|
|
|
|
---------
|
2019-12-02 23:53:22 +01:00
|
|
|
|
2020-05-05 17:55:49 +02:00
|
|
|
is like umka_shell above but commands are translated from FUSE calls, not
|
2020-10-12 05:02:02 +02:00
|
|
|
entered manually or read from a file. Can *potentially* be used to run xfstests
|
|
|
|
(cross-fs-tests) and automated tests against reference FS implementation.
|
|
|
|
|
|
|
|
|
|
|
|
umka_os
|
|
|
|
-------
|
|
|
|
|
|
|
|
is KolibriOS kernel running main loop (osloop), scheduler and all the threads
|
|
|
|
including network stack.
|
|
|
|
|
|
|
|
|
|
|
|
tools
|
|
|
|
-----
|
|
|
|
|
|
|
|
mkdirrange
|
|
|
|
|
|
|
|
mkfilepattern
|
|
|
|
|
|
|
|
lfbviewx
|
2018-05-07 17:31:42 +02:00
|
|
|
|
|
|
|
|
2018-05-09 23:08:52 +02:00
|
|
|
BUILD
|
2019-12-02 23:53:22 +01:00
|
|
|
-----
|
2018-05-09 23:08:52 +02:00
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
$ KOLIBRI=/path/to/kolibrios make
|
2019-12-02 23:53:22 +01:00
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
/path/to/kolibrios is where you checked out `svn co svn://kolibrios.org`.
|
2018-05-07 17:31:42 +02:00
|
|
|
|
|
|
|
|
2019-12-02 23:53:22 +01:00
|
|
|
Architecture
|
|
|
|
------------
|
|
|
|
|
2020-02-17 03:43:33 +01:00
|
|
|
Kernel services are replaced with stubs, wrappers around userspace
|
|
|
|
implementation or libc calls. Block devices are emulated with regular files.
|
|
|
|
Framebuffer can be dumped to disk as image file.
|
2018-05-07 17:31:42 +02:00
|
|
|
|
|
|
|
|
2020-05-20 13:17:31 +02:00
|
|
|
Testing
|
|
|
|
-------
|
|
|
|
|
2020-10-12 05:02:02 +02:00
|
|
|
sudo cp --parents /sys/firmware/acpi/tables/?SDT* /sys/bus/pci/devices/*/config .
|
2020-05-20 13:17:31 +02:00
|
|
|
|
|
|
|
|
2020-02-08 04:13:04 +01:00
|
|
|
Troubleshooting
|
|
|
|
---------------
|
|
|
|
|
2020-10-12 05:02:02 +02:00
|
|
|
# sysctl -w kernel.yama.ptrace_scope=0
|
|
|
|
# sysctl -w vm.mmap_min_addr=0
|
2020-02-08 04:13:04 +01:00
|
|
|
|
|
|
|
|
2020-02-19 01:27:18 +01:00
|
|
|
Links & Acknowledgements
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
[1] Filesystem in Userspace library
|
|
|
|
https://github.com/libfuse/libfuse
|
2020-02-08 04:13:04 +01:00
|
|
|
|
2020-02-19 01:27:18 +01:00
|
|
|
[2] LodePNG by Lode Vandevenne
|
|
|
|
https://lodev.org/lodepng/
|