All Projects → olsner → os

olsner / os

Licence: MIT license
x86-64 assembly µkernel

Programming Languages

assembly
5116 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to os

Snowflakeos
"It is very special"
Stars: ✭ 190 (+1166.67%)
Mutual labels:  kernel, os, osdev
DentOS
Experimental Stand-alone 32-bit Kernel with Bootloader written in AT&T Assembly and Freestanding C
Stars: ✭ 32 (+113.33%)
Mutual labels:  kernel, os, osdev
Kernel
The Stupid Operating System
Stars: ✭ 217 (+1346.67%)
Mutual labels:  kernel, os, osdev
Emerald
An operating system written in C
Stars: ✭ 118 (+686.67%)
Mutual labels:  kernel, os, osdev
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (+213.33%)
Mutual labels:  kernel, os, osdev
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+1126.67%)
Mutual labels:  kernel, os, osdev
SnowFlake
Technology is free, SnowFlakeOS
Stars: ✭ 38 (+153.33%)
Mutual labels:  kernel, os, osdev
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (+340%)
Mutual labels:  kernel, os, osdev
beeos
A simple "Unix-like" kernel trying to be POSIX compliant
Stars: ✭ 103 (+586.67%)
Mutual labels:  kernel, os, osdev
SynapseOS
SynapseOS - модульная операционная система на языке C.
Stars: ✭ 93 (+520%)
Mutual labels:  kernel, os, osdev
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (+646.67%)
Mutual labels:  kernel, os, osdev
kernel
Main kernel tree
Stars: ✭ 28 (+86.67%)
Mutual labels:  kernel, os, osdev
Monkos
an experimental 64-bit operating system
Stars: ✭ 100 (+566.67%)
Mutual labels:  kernel, os, osdev
Unikraft
Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels. (Core repository)
Stars: ✭ 183 (+1120%)
Mutual labels:  kernel, os, osdev
Reactos
A free Windows-compatible Operating System
Stars: ✭ 10,216 (+68006.67%)
Mutual labels:  kernel, os, osdev
Cardinal
Operating system designed to be fast and secure.
Stars: ✭ 20 (+33.33%)
Mutual labels:  kernel, os, osdev
Os2
x86_64 OS kernel with completely async userspace and single address space [WIP; but basic kernel functionality implemented]
Stars: ✭ 25 (+66.67%)
Mutual labels:  kernel, os, osdev
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (+253.33%)
Mutual labels:  kernel, os, osdev
chaos-2
A hand-made SMP-aware kernel
Stars: ✭ 20 (+33.33%)
Mutual labels:  kernel, os, osdev
Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (+126.67%)
Mutual labels:  kernel, os, osdev

"os" (proper name pending)

An x86-64 µkernel in Assembly. User-space parts in Assembly and C.

License

This software is licensed under the MIT license. See the LICENSE file.

Building the cross-toolchain

Scripts for building a cross compiler can be found in toolchain/. Running ./build.sh in that directory will download the tarballs (if necessary), verify the signatures, unpack, configure and build.

Cross-compiling grub

On Linux systems, using the system grub is usually fine, but to support more esoteric operating systems (e.g. macOS), grub needs to be cross-compiled with an ELF toolchain. Use the ./build.sh script in grub/ to build one after building the toolchain.

grub-mkrescue also requires xorriso.

Building

After building the cross-compiler and cross-grub, just run make to build the kernel(s) and user-space components. ccache is used by default, but can be disabled by setting CCACHE= on the Make command line. (Just install ccache though. Srsly.)

Network setup

User-mode networking

The simplest setup and the default in run_qemu.sh. QEMU presents a virtual network with an internal DHCP server and something similar to NAT. Port 5555 on localhost is redirected to port 80 on the virtual machine, which is where the lwIP web server is listening.

Setting up tun/tap networking

Useful when working on low-level network stuff, since it allows easy wiresharking of all traffic over the simulated network, and makes the VM available to all the normal network debugging tools (arping, ping, etc).

To create a tun/tap device owned by yourself,

  • Install uml-utilities (for tunctl),
  • run sudo tunctl -u $(whoami), this will print the name of the created device, which should be tap0 (which is hardcoded in various places)
  • then sudo ifconfig tap0 up 192.168.100.1 to set the IP
  • modify the lwIP program for a static IP
  • modify run_qemu.sh or bochsrc to use the tun/tap networking

The lwIP program needs to be modified to set up a static IP at 192.168.100.3, but after that it should present the dumb web server on that IP.

Running in QEMU

To run in qemu, there's a wrapper script in ./run_qemu.sh that automatically runs make and starts qemu.

Running in Bochs

See notes/bochs.txt for build instructions for bochs 2.6.

Build everything as above, then start bochs using bochs from the repo root. A .bochsrc with most of the necessary settings is provided.

Known issues

Only unknown issues left. Yay!

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