An operating system built mostly from scratch with a hybrid and cross-platform kernel that resembles Unix. The project began in September 2013 as a way to improve my creator's low-level programming skills. It primarily uses C/C++, Rust and Assembly programming languages.
- Cross-platform: arch/*, designed for cross-platform environment targets
- Multitasking: Thread and Process support with SMP
- Network: kernel/network/, almost full TCP/IP Network Stack by lwIP
- Unix-like: VFS, Signals, Pipes, IPC, Shared Memory, Unix Sockets
- ELF: Dynamic and static executables
- Linux Framebuffer: Linux-like framebuffer support
- Linux Syscalls: Linux-like syscall layer
- Virtio: Virtio devices (gpu, block, network, crypto)
- GUI: coming soon...
See FEATURES.md for more information about features.
The kernel provides a basic unix environment with a minimal subset of posix stuff. Moreover, it uses a modular architecture with loadables kernel objects and run on different platforms like x86_64, aarch64, etc.
Userspace is still under development. It provides several GNU/Linux core tools, devtools like gcc
or binutils
, a very simple Java Virtual Machine, graphical interface, windows manager, services like NTP, I/O Cache Sync and so on.
Furthermore, userspace has multi-user environment with unix permission support, superuser (root), unix-like filesystem with /proc
and /dev
implementation
Modules provides various core platform features: caching, char/block devices, filesystems, I/O devices, system low-level services, network, audio/video and virtio support.
- Device Interface, dev/*, provides a standard interface for drivers
- AHCI (Advanced Host Controller Interface), platform/pc/block/ahci, almost full SATA/SATAPI driver
- BGA (Bochs Video), platform/pc/video/bga, Bochs Virtual VGA Adapter
- Intel e1000 (Network device), platform/pc/network/e1000, Intel NIC driver
- VirtIO, virtio/*, VirtIO devices interfaces
- Clone this repository and change working directory.
$ git clone https://github.com/kwrx/aplus
$ cd aplus
It's recommended you use a recent Linux host environment with this method.
Some packages are required for the build system:
binutils
,make
,autoconf
,automake
(orbuild-essential
on Ubuntu/Debian)gcc
,g++
to compile c/c++ sourcesnasm
to compile asm sourcespython3
to run some build scriptse2fsprogs
,grub
,parted
,dd
,fc-scan
to generate hdd imageqemu
orVirtualBox
to run Virtual Machine
- Configure and check environment
$ ./configure
- Run it
$ ./makew run
aplus
uses and depends on a large number of third-party open-source tools and libraries which are outside of this repository.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.