All Projects → mikaku → Fiwix

mikaku / Fiwix

Licence: mit
A UNIX-like kernel for the i386 architecture

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Fiwix

duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (+557.89%)
Mutual labels:  kernel, os, posix, operating-system
Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (+410.53%)
Mutual labels:  kernel, operating-system, os, posix
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (+39.47%)
Mutual labels:  kernel, operating-system, os, posix
beeos
A simple "Unix-like" kernel trying to be POSIX compliant
Stars: ✭ 103 (+171.05%)
Mutual labels:  kernel, os, posix, operating-system
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-39.47%)
Mutual labels:  kernel, os, operating-system
GENADEV OS
An AArch64 hobbyist OS for the Raspberry Pi 3 B+
Stars: ✭ 14 (-63.16%)
Mutual labels:  kernel, os, operating-system
ens
Supports de cours
Stars: ✭ 13 (-65.79%)
Mutual labels:  kernel, os, posix
Embox
Modular and configurable OS for embedded applications
Stars: ✭ 576 (+1415.79%)
Mutual labels:  kernel, os, posix
TravorOS
A simple OS running on Intel x86 architecture | No longer updating
Stars: ✭ 24 (-36.84%)
Mutual labels:  kernel, os, operating-system
oneiric
A small kernel + OS based on how dreams work
Stars: ✭ 11 (-71.05%)
Mutual labels:  kernel, os, operating-system
fpos
Free Pascal Operating System (FPOS) is a operating system consists of a minimal kernel built on FreePascal. It contains a Scheme implementation of a hard drive (ATA) driver, keyboard (PS2), serial (8250 UART), FAT32 filesystem and a small real time clock manager. The project was built to experiment with developement of operating system using a h…
Stars: ✭ 36 (-5.26%)
Mutual labels:  kernel, os, operating-system
MandelbrotOS
A community driven OS by the youth
Stars: ✭ 172 (+352.63%)
Mutual labels:  kernel, os, operating-system
nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (+126.32%)
Mutual labels:  kernel, os, operating-system
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (+23.68%)
Mutual labels:  kernel, os, operating-system
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-57.89%)
Mutual labels:  kernel, os, operating-system
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (+0%)
Mutual labels:  kernel, os, operating-system
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+12234.21%)
Mutual labels:  kernel, operating-system, os
Harmonyos
A curated list of awesome things related to HarmonyOS. 华为鸿蒙操作系统。
Stars: ✭ 18,385 (+48281.58%)
Mutual labels:  kernel, operating-system, os
Rust Raspberrypi Os Tutorials
📚 Learn to write an embedded OS in Rust 🦀
Stars: ✭ 7,275 (+19044.74%)
Mutual labels:  kernel, operating-system, os
Qword
Operating system for x86_64 based around a "keep it simple and make it work" philosophy.
Stars: ✭ 367 (+865.79%)
Mutual labels:  kernel, operating-system, os

Fiwix

Fiwix is an operating system kernel written from scratch, based on the UNIX architecture and fully focused on being POSIX compatible. It is designed and developed mainly as a hobby OS and, since it serves also for educational purposes, the kernel code is kept as simple as possible for the benefit of students and OS enthusiasts. It is small in size (less than 40,000 lines of code), runs on the i386 hardware platform and is compatible with a good base of existing GNU applications.

Features

  • Mostly written in C language (Assembly only used in the needed parts).
  • GRUB Multiboot Specification v1 compliant.
  • Full 32bit protected mode non-preemptive kernel.
  • For i386 processors and higher.
  • Preemptive multitasking.
  • Protected task environment (independent memory address per process).
  • POSIX-compliant (mostly).
  • Process groups, sessions and job control.
  • Interprocess communication with pipes and signals.
  • BSD file locking mechanism (POSIX restricted to file and advisory only).
  • Virtual memory management up to 4GB (1GB physical only and no swapping yet).
  • Demand paging with Copy-On-Write feature.
  • Linux 2.0 ABI system calls compatibility (mostly).
  • ELF-386 executable format support (statically and dynamically linked).
  • Round Robin based scheduler algorithm (no priorities yet).
  • VFS abstraction layer.
  • EXT2 filesystem support with 1KB, 2KB and 4KB block sizes.
  • Minix v1 and v2 filesystem support.
  • Linux-like PROC filesystem support (read only).
  • PIPE pseudo-filesystem support.
  • ISO9660 filesystem support with Rock Ridge extensions.
  • RAMdisk device support.
  • Initial RAMdisk (initrd) image support.
  • SVGAlib based applications support.
  • Keyboard driver with Linux keymaps support.
  • Serial port (RS-232) driver support.
  • Remote serial console support.
  • Parallel port printer driver support.
  • Basic implementation of a Pseudo-Random Number Generator.
  • Floppy disk device driver and DMA management.
  • IDE/ATA ATAPI CD-ROM device driver.
  • IDE/ATA hard disk device driver.

Compiling

The command needed to build the Fiwix kernel is make clean ; make. This will create the files fiwix (the kernel itself) and System.map.gz (the symbol table) in the root directory of the source code tree.

Before compiling you might want to tweak the kernel configuration by changing the default values in include/fiwix/config.h.

Keep in mind that the kernel doesn't do anything on its own, you need to create a user-space environment to make use of it. Upon booting, the kernel mounts the root filesystem and tries to run /sbin/init on it, so you would need to provide this program yourself. Fortunately, FiwixOS provides a full user-space UNIX-like environment to test the Fiwix kernel.

Installing

You can proceed to install FiwixOS on a hard disk either by booting from the CD-ROM or from a floppy. If you chosen the latter, you will also need the Installation CD-ROM inserted in order to install the packages that form all the system environment.

Let the system boot either from the CD-ROM or floppy and, when you are ready, just type install.sh.

The minimal hardware requirements are as follows:

  • Standard IBM PC-AT architecture.
  • i386 processor or higher.
  • 3MB of RAM memory (128MB recommended).
  • IDE/ATAPI CD-ROM or floppy disk (3.5", 1.44MB).
  • 1GB ATA hard disk.

Please keep in mind that this is a kernel in its very early stages and may well have serious bugs and broken features which have not yet been identified or resolved.

Let me repeat that.

Please keep in mind that this is a kernel in its very early stages and may well have serious bugs and broken features which have not yet been identified or resolved.

		*****************************
		*** USE AT YOUR OWN RISK! ***
		*****************************

References

License

Fiwix is free software licensed under the terms of the MIT License, see the LICENSE file for more details.
Copyright (C) 2018-2020, Jordi Sanfeliu.

Credits

Fiwix was created by Jordi Sanfeliu.
You can contact me at [email protected].

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