All Projects → cahirwpz → Mimiker

cahirwpz / Mimiker

Licence: bsd-3-clause
Simple unix-like operating system for education and research purposes

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Mimiker

Traceshark
This is a tool for Linux kernel ftrace and perf events visualization
Stars: ✭ 63 (-25.88%)
Mutual labels:  kernel
Darwin Xnu
The Darwin Kernel (mirror). This repository is a pure mirror and contributions are currently not accepted via pull-requests, please submit your contributions via https://developer.apple.com/bug-reporting/
Stars: ✭ 9,504 (+11081.18%)
Mutual labels:  kernel
Ktf
Kernel Test Framework - a unit test framework for the Linux kernel
Stars: ✭ 81 (-4.71%)
Mutual labels:  kernel
Simplefs
A simple file system for Linux kernel
Stars: ✭ 65 (-23.53%)
Mutual labels:  kernel
Sparrow
My Operating System.
Stars: ✭ 71 (-16.47%)
Mutual labels:  kernel
Ntphp
Ever wanted to execute PHP in your kernel driver? Look no further!
Stars: ✭ 76 (-10.59%)
Mutual labels:  kernel
Sutekh
An example rootkit that gives a userland process root permissions
Stars: ✭ 62 (-27.06%)
Mutual labels:  kernel
Softiwarp
SoftiWARP: Software iWARP kernel driver and user library for Linux
Stars: ✭ 84 (-1.18%)
Mutual labels:  kernel
Harmonyos
鸿蒙系统资料。Docs about HarmonyOS.
Stars: ✭ 1,191 (+1301.18%)
Mutual labels:  kernel
Deos
The distributed exokernel operating system
Stars: ✭ 80 (-5.88%)
Mutual labels:  kernel
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (-22.35%)
Mutual labels:  kernel
Binderfilter
A Linux kernel IPC firewall and logger for Android and Binder
Stars: ✭ 70 (-17.65%)
Mutual labels:  kernel
Webboot
Tools to let a u-root instance boot signed live distro images over the web
Stars: ✭ 78 (-8.24%)
Mutual labels:  kernel
Shadow Box For Arm
Shadow-Box: Lightweight and Practical Kernel Protector for ARM (Presented at BlackHat Asia 2018)
Stars: ✭ 64 (-24.71%)
Mutual labels:  kernel
Eggos
A Go unikernel running on x86 bare metal
Stars: ✭ 1,232 (+1349.41%)
Mutual labels:  kernel
Wnfun
WNF Utilities 4 Newbies (WNFUN)
Stars: ✭ 63 (-25.88%)
Mutual labels:  kernel
Tomatos
A 64bit tomato kernel
Stars: ✭ 75 (-11.76%)
Mutual labels:  kernel
Skiboot
OPAL boot and runtime firmware for POWER
Stars: ✭ 85 (+0%)
Mutual labels:  kernel
Linux 0.11
A heavily commented linux kernel source code in Chinese.
Stars: ✭ 81 (-4.71%)
Mutual labels:  kernel
Zeke
A POSIX-like OS for ARM processors.
Stars: ✭ 79 (-7.06%)
Mutual labels:  kernel

Mimiker: MIPS Micro-Kernel

An experiment with implementation of very simple operating system for Malta board.

Toolchain

To build Mimiker you will need a custom MIPS toolchain we use. You can download a binary debian package from here. It installs into /opt, so you'll need to add /opt/mipsel-mimiker-elf/bin to your PATH.

Otherwise, if you prefer to build the toolchain on your own, download crosstool-ng which we use for configuring the toolchain. You can get it from here. Then:

cd toolchain/mips/
ct-ng build

By default, this will build and install the mipsel-mimiker-elf toolchain to ~/local. Update your $PATH so that it provides mipsel-mimiker-elf-*, i.e. unless you've changed the install location you will need to append ~/local/mipsel-mimiker-elf/bin to your PATH.

Building

With toolchain in place, you are ready to compile Mimiker. Run

make

in project root. Currently two additional command-line options are supported:

  • CLANG=1 - Use the Clang compiler instead of GCC (make sure you have it installed!).
  • KASAN=1 - Compile the kernel with the KernelAddressSanitizer, which is a dynamic memory error detector.

For example, use make KASAN=1 command to create a GCC-KASAN build.

The result will be a mimiker.elf file containing the kernel image.

Running

We provide a Python script that simplifies running Mimiker OS. The kernel image is run with QEMU simulator. Several serial consoles are available for interaction. Optionally you can attach to simulator with gdb debugger. All of that is achieved by running all interactive sessions within tmux terminal multiplexer with default key bindings.

In project main directory, run command below that will start the kernel in test-run mode. To finish simulation simply detach from tmux session by pressing Ctrl+b and d (as in detach) keys. To switch between emulated serial consoles and debugger press Ctrl+b and corresponding terminal number.

./launch test=all

Some useful flags to the launch script:

  • -h - Prints usage.
  • -d - Starts simulation under a debugger.
  • -D DEBUGGER - Selects debugger to use.
  • -t - Bind simulator UART to current stdio.

Any other argument is passed to the kernel as a kernel command-line argument. Some useful kernel arguments:

  • init=PROGRAM - Specifies the userspace program for PID 1. Browse bin and usr.bin directories for currently available programs.
  • klog-quiet=1 - Turns off printing kernel diagnostic messages.

If you want to run tests please read this document.

Documentation

Useful sites:

Toolchain documentation:

MIPS documentation:

Hardware documentation:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].