Giter Site home page Giter Site logo

kwrx / aplus Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 2.0 150.4 MB

A hobby operating system built mostly from scratch

License: GNU General Public License v3.0

Makefile 0.38% Assembly 0.44% C 98.72% Shell 0.23% CMake 0.07% JavaScript 0.09% Python 0.07%
aplus osdev unix c education learning hobby-os

aplus's Introduction

aplus #os

deploy GitHub release (latest by date) License: GPL

A hobby operating system built mostly from scratch with a unix-like, hybrid and cross-platform kernel.

๐Ÿ”ฅ Features

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


aplus v0.4 - CLI interface running on Qemu

:electron: Kernel

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, x86_64, ARM, etc.

๐Ÿค– Userspace

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

๐Ÿ”Œ Drivers

Modules provides various core platform features: caching, char/block devices, filesystems, I/O devices, system low-level services, network, audio/video and virtio support.

Notable modules


โšก Getting Started

  1. Clone this repository and change working directory.
$ git clone https://github.com/kwrx/aplus
$ cd aplus

Now you have basically two options to build image from sources.

Building with Docker (Recommended):

  1. Pull and run the build system in a docker image environment
# docker run -it --privileged=true      \
    -v $(pwd):/opt/prj/aplus            \
    -w /opt/prj/aplus -t ubuntu:focal   \
    ./extra/utils/build-with-docker
  1. Run it (Linux):
$ ./extra/utils/run-qemu TARGET

NOTE: replace TARGET with the target build: i686, x86_64, etc.

Building with Toolchain:

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 (or build-essential on Ubuntu/Debian)
  • gcc, g++ to compile c/c++ sources
  • nasm to compile asm sources
  • python3 to run some build scripts
  • e2fsprogs, grub, parted, dd, fc-scan to generate hdd image
  • qemu or VirtualBox to run Virtual Machine

  1. Install dependencies
$ pip3 install -r docs/requirements.txt
  1. Configure and check environment
$ ./configure
  1. Run it
$ ./makew run

๐ŸŒ Third-Party Software:

aplus uses and depends on a large number of third-party open-source tools and libraries which are outside of this repository.

Licenses for the included third-party tools and libraries can be found here, and for project here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.