All Projects → HelenOS → Helenos

HelenOS / Helenos

A portable microkernel-based multiserver operating system written from scratch.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Helenos

Libwdi
Windows Driver Installer library for USB devices
Stars: ✭ 928 (+67.81%)
Mutual labels:  usb, drivers
mt762x-wm8960
MT762X WM8960 ALSA SoC machine driver
Stars: ✭ 19 (-96.56%)
Mutual labels:  kernel, sound
Ipod Gadget
iPod usb gadget for audio playback
Stars: ✭ 94 (-83%)
Mutual labels:  usb, kernel
Ns Usbloader
Awoo Installer/TinFoil/GoldLeaf NSPs (and other files) uploader and RCM tool. Also a tool for split files and merge them back.
Stars: ✭ 708 (+28.03%)
Mutual labels:  usb, gui
ccid-utils
A USB smartcard driver including GSM SIM and EMV credit/debit card development platforms
Stars: ✭ 37 (-93.31%)
Mutual labels:  usb, drivers
Node Escpos
🖨️ ESC/POS Printer driver for node
Stars: ✭ 752 (+35.99%)
Mutual labels:  usb, drivers
xone
Linux kernel driver for Xbox One and Xbox Series X|S accessories
Stars: ✭ 636 (+15.01%)
Mutual labels:  kernel, usb
Mollenos
MollenOS/Vali is a modern operating system that is built with focus on abstraction and a modular design, allowing anyone to port it to any architecture. It currently targets the x86-32 and x86-64 platform.
Stars: ✭ 182 (-67.09%)
Mutual labels:  kernel, drivers
XPS-17-9700-Ubuntu-Soundfix
A simple script to install the necessary firmware to fix sound output (dummy sound).
Stars: ✭ 19 (-96.56%)
Mutual labels:  kernel, sound
Driver.NET
Lightweight and flexible library to load and communicate with kernel drivers on Windows.
Stars: ✭ 59 (-89.33%)
Mutual labels:  kernel, drivers
X11docker
Run GUI applications and desktops in docker and podman containers. Focus on security.
Stars: ✭ 3,797 (+586.62%)
Mutual labels:  sound, gui
Ghost
Ghost, a micro-kernel based hobby operating system for the x86 architecture.
Stars: ✭ 353 (-36.17%)
Mutual labels:  kernel, gui
I Simpa
An Open Source software for 3D sound propagation modelling
Stars: ✭ 125 (-77.4%)
Mutual labels:  sound, gui
Circle
A C++ bare metal environment for Raspberry Pi with USB (32 and 64 bit)
Stars: ✭ 816 (+47.56%)
Mutual labels:  usb, tcp-ip
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (-66.73%)
Mutual labels:  kernel, gui
Android Usb Gadget
Convert your Android phone to any USB device you like! USB Gadget Tool allows you to create and activate USB device roles, like a mouse or a keyboard. 🛠🛡📱
Stars: ✭ 118 (-78.66%)
Mutual labels:  usb, kernel
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (-79.75%)
Mutual labels:  kernel, drivers
Bsodsurvivor
This project aims to facilitate debugging a kernel driver in windows by adding support for a code change on the fly without reboot/unload, and more!
Stars: ✭ 122 (-77.94%)
Mutual labels:  kernel, drivers
pyrfidhid
Python library to control Chinese USB HID 125Khz RFID Reader/Writer
Stars: ✭ 104 (-81.19%)
Mutual labels:  usb, drivers
Input Wacom
Linux kernel driver for Wacom devices
Stars: ✭ 327 (-40.87%)
Mutual labels:  kernel, drivers

HelenOS

HelenOS is a portable microkernel-based multiserver operating system designed and implemented from scratch. It decomposes key operating system functionality such as file systems, networking, device drivers and graphical user interface into a collection of fine-grained user space components that interact with each other via message passing. A failure or crash of one component does not directly harm others. HelenOS is therefore flexible, modular, extensible, fault tolerant and easy to understand.

screenshot

HelenOS aims to be compatible with the C11 and C++14 standards, but does not aspire to be a clone of any existing operating system and trades compatibility with legacy APIs for cleaner design. Most of HelenOS components have been made to order specifically for HelenOS so that its essential parts can stay free of adaptation layers, glue code, franken-components and the maintenance burden incurred by them.

Portability

HelenOS runs on eight different processor architectures and machines ranging from embedded ARM devices and single-board computers through multicore 32-bit and 64-bit desktop PCs to 64-bit Itanium and SPARC rack-mount servers.

Building

Building the toolchain

In order to build HelenOS, one must first build the cross-compiler toolchain (either as a root or by specifying the CROSS_PREFIX environment variable) by running (example for the amd64 architecture, further list of targets can be found in the default directory):

$ cd HelenOS/tools
$ ./toolchain.sh amd64

The toolchain script will print a list of software packages that are required for the toolchain to correctly build. Make sure you install all the dependencies. Unfortunately, the script cannot install the required dependencies for you automatically since the host environments are very diverse. In case the compilation of the toolchain fails half way through, try to analyze the error message(s), add appropriate missing dependencies and try again.

As an example, here are some of the packages you will need for Ubuntu 16.04:

$ sudo apt install build-essential wget texinfo flex bison dialog python-yaml genisoimage

Whereas for CentOS/Fedora, you will need:

# sudo dnf group install 'Development Tools'
# sudo dnf install wget texinfo libmpc-devel mpfr-devel gmp-devel PyYAML genisoimage flex bison

In case the toolchain script won't work no matter how hard you try, let us know. Please supply as many relevant information (your OS and distribution, list of installed packages with version information, the output of the toolchain script, etc.) as possible.

Configuring the build

Since the summer of 2019, HelenOS uses the Meson build system. Make sure you have a recent-enough version of Meson and Ninja. The safest bet is installing both using pip3 tool.

$ pip3 install ninja
$ pip3 install meson

Meson does not support in-tree builds, so you have to create a directory for your build. You can have as many build directories as you want, each with its own configuration. cd into your build directory and run configure.sh script which exists in the source root. configure.sh can be run with a profile name, to use one of the predefined profiles, or without arguments for interactive configuration.

$ git clone https://github.com/HelenOS/helenos.git
$ mkdir -p build/amd64
$ cd build/amd64
$ ../../helenos/configure.sh amd64

Note: If you installed the toolchain to a custom directory, make sure CROSS_PREFIX environment variable is correctly set.

Once configuration is finished, use ninja to build HelenOS. Invoking ninja without arguments builds all binaries and debug files, but not bootable image. This is because during development, most builds are incremental and only meant to check that code builds properly. In this case, the time-consuming process of creating a boot image is not useful and takes most time. This behavior might change in the future.

In case you want to rebuild the bootable image, you must invoke ninja image_path. This also emits the name of the bootable image into the file image_path in build directory.

$ ninja
$ ninja image_path

Now HelenOS should automatically start building.

Running the OS

When you get the command line back, there should be an image.iso file in the build root directory. If you have QEMU, you should be able to start HelenOS by running:

$ ./tools/ew.py

For additional information about running HelenOS, see UsersGuide/RunningInQEMU or UsersGuide/RunningInVirtualBox or see the files in tools/conf.

License

HelenOS is open source, free software. Its source code is available under the BSD license. Some third-party components are licensed under GPL.

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].