Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. UMKa -- User-Mode KolibriOS developer tools
  2. ===========================================
  3.  
  4. This is a common project for a set of KolibriOS developer tools which are based
  5. on original KolibriOS kernel code wrapped and hacked as to run in the UNIX
  6. programming environment. The idea is to make userspace UNIX tools that use as
  7. much unchanged KolibriOS kernel source as possible to test
  8. architecture-independent parts of the kernel in your favorite developer
  9. environment.
  10.  
  11.  
  12. umka_shell
  13. ----------
  14.  
  15. is an interactive shell with commands that are wrappers around KolibriOS kernel
  16. syscalls and other internal functions. What works now: block layer including
  17. disk cache, FS, UI and graphics, scheduler, ACPI/AML interpreter,
  18. synchronization primitives, strings, slab allocator, events, unpacker, other
  19. minor functions.
  20.  
  21. It can also be used for automated testing by feeding it a file of commands
  22. instead of typing them.
  23.  
  24. Example:
  25.     $ umka_shell < mytest.t > mytest.out.log
  26.  
  27.  
  28. umka_fuse
  29. ---------
  30.  
  31. is like umka_shell above but commands are translated from FUSE calls, not
  32. entered manually or read from a file. Can *potentially* be used to run xfstests
  33. (cross-fs-tests) and automated tests against reference FS implementation.
  34.  
  35.  
  36. umka_os
  37. -------
  38.  
  39. is KolibriOS kernel running main loop (osloop), scheduler and all the threads
  40. including network stack.
  41.  
  42.  
  43. tools
  44. -----
  45.  
  46. mkdirrange
  47.  
  48. mkfilepattern
  49.  
  50. lfbviewx
  51.  
  52.  
  53. BUILD
  54. -----
  55.  
  56. $ KOLIBRIOS=/path/to/kolibrios make
  57.  
  58. /path/to/kolibrios is where you checked out 'svn co svn://kolibrios.org'.
  59.  
  60.  
  61. Architecture
  62. ------------
  63.  
  64. Kernel services are replaced with stubs, wrappers around userspace
  65. implementation or libc calls. Block devices are emulated with regular files.
  66. Framebuffer can be dumped to disk as image file.
  67.  
  68.  
  69. Testing
  70. -------
  71.  
  72. sudo cp --parents /sys/firmware/acpi/tables/?SDT* /sys/bus/pci/devices/*/config .
  73.  
  74.  
  75. Troubleshooting
  76. ---------------
  77.  
  78. # lfbviewx
  79.  
  80. Allow reading process_vm_readv syscall.
  81.  
  82.     # sysctl -w kernel.yama.ptrace_scope=0
  83.  
  84. # umka_os
  85.  
  86. Managing tap devices.
  87.  
  88.     # ip tuntap add dev tap0 mode tap
  89.     # ip link set tap0 address 00:11:00:00:00:00
  90.     # ip addr add 10.50.0.1/24 dev tap0
  91.     # ip link set up dev tap0
  92.     # ip tuntap del dev tap0 mode tap
  93.  
  94. To create tap devices.
  95.  
  96.     # setcap cap_net_admin+ep ../umka_os
  97.  
  98. Not yet used, but may be one day.
  99.  
  100.     # sysctl -w vm.mmap_min_addr=0
  101.  
  102.  
  103. Links & Acknowledgements
  104. ------------------------
  105.  
  106. [1] Filesystem in Userspace library
  107.     https://github.com/libfuse/libfuse
  108.  
  109. [2] LodePNG by Lode Vandevenne
  110.     https://lodev.org/lodepng/
  111.