GithubHelp home page GithubHelp logo

toursslivers / aero Goto Github PK

View Code? Open in Web Editor NEW

This project forked from andy-python-programmer/aero

0.0 0.0 0.0 210.18 MB

Aero is a new modern, experimental, unix-like operating system following the monolithic kernel design. Supporting modern PC features such as long mode, 5-level paging, and SMP (multicore), to name a few.

Home Page: https://aero.andypy.dev

License: GNU General Public License v3.0

Shell 0.32% Python 2.27% C 0.23% Assembly 1.19% Rust 95.98% HTML 0.01%

aero's Introduction

Aero

Aero is a new modern, experimental, unix-like operating system written in Rust. Aero follows the monolithic kernel design and it is inspired by the Linux Kernel. Aero supports modern PC features such as Long Mode, 5-level paging, and SMP (multicore), to name a few.

workflow lines_of_code discord

Is this a Linux distribution? No, Aero runs its own kernel that does not originate from Linux and does not share any source code or binaries with the Linux kernel.

Official Discord Server: https://discord.gg/8gwhTTZwt8

Screenshots

Running DWM, Xeyes and DOOM in Aero!

Features

  • 64-bit higher half kernel
  • 4/5 level paging
  • Preemptive per-cpu scheduler
  • Modern UEFI bootloader
  • ACPI support (ioapic, lapic)
  • Symmetric Multiprocessing (SMP)
  • On-demand paging

Goals

  • Creating a modern, safe, beautiful and fast operating system.
  • Targetting modern 64-bit architectures and CPU features.
  • Good source-level compatibility with Linux so we can port programs over easily.
  • Making a usable OS which can run on real hardware, not just on emulators or virtual machines.

How to Build and Run Aero

Please make sure you have a unix-like host system before building Aero. If you are using windows, its highly recommended to use WSL 2.

Dependencies

Before building Aero, you need the following things installed:

  • rust (should be the latest nightly)
  • qemu (optional: required if you want to run it in the Qemu emulator)
  • nasm

If you are building Aero with sysroot then the following dependencies are additionally required:

# Arch Linux:
sudo pacman -S bash coreutils make patch tar gzip binutils gcc git subversion mercurial curl wget xz nasm mtools meson perl m4 texinfo groff gettext expat bison flex help2man openssl gperf rsync libxslt python python-pip python-mako xcb-proto xorriso boost-libs cmake

Hardware

The following are not requirements but are recommendations:

  • ~15GB of free disk space
  • >= 8GB RAM
  • >= 2 cores
  • Internet access

Beefier machines will lead to much faster builds!

Getting the source code

The very first step to work on Aero is to clone the repository:

$ git clone https://github.com/Andy-Python-Programmer/aero
$ cd aero

Building Aero

Aero uses a custom build system, that wraps cargo and takes care of building the kernel and userland for you. It also builds the initramfs and disk image for you.

The main command we will focus on is ./aero.py. The source code can be found in the root of the repository and, as the file name states, it is written in Python.

By default if you run ./aero.py without any arguments it will build the kernel and userland in release mode with debug symbols and run it in QEMU. You can configure the behavior of the build system though. If you want to, you can use the --help option to read a brief description of what it can do.

The build system acknowledges few different build modes, which cannot be used together and they are: --clean, --check, --test and --document.

  • --clean option will clean all the build outputs.

  • --check will build the kernel and userland using cargo's check command, this build mode will not produce a disk image, if you want one without actually running Aero in the emulator read ahead

  • --test will run the built-in Aero test suite

  • --document will generate web-based docs using cargo's doc command

  • --sysroot will build the full userland sysroot. If not passed, then the sysroot will only contain the aero_shell and the init binaries.

    Note: This command will require a relatively large amount of storage space. You may want to have upwards of 10 or 15 gigabytes available if building with full sysroot.

Each of these modes can be used with additional flags, that will alter the behavior in different ways, some of them will not work for some of these modes - for example: the --la57 option will not have any effect when you are simply checking or documenting the build.

  • --debug toggles off the release build flag when calling cargo.

    Summary: If the --debug flag is not passed then it will build Aero in release mode and debug symbols will be avaliable. On the other hand, if the debug flag is passed then it will be built in debug mode and debug symbols will be still avaliable. By default Aero is built in release mode (with debug symbols) since it generates faster and smaller binaries which are easier to test.

  • --no-run prevents from running the built disk image in the emulator

  • --bios lets you choose the firmware the emulator will use when booting Aero, currently supported values are: legacy and uefi

  • --features accepts a single comma-separated list of kernel crate features, please keep in mind that there cannot be spaces in between the values

  • --target lets you override the target architecture for which the kernel is built, currently the default value is x86_64-aero_os

  • --la57 tells the emulator to use 5 level paging, if it supports it

The built disk image is stored in the build directory under the name aero.iso. Both the disk root and initramfs root are preserved in case you want to inspect them manually.

Running Aero in an emulator

If you haven't used the --no-run option and you aren't using the --check or --document build mode, the build system will run Aero in the emulator for you.

Nightly Images

Want to give Aero a shot, without building it! You can go to the latest job and download the latest nightly image (aero.iso), under artifacts.

Contributing

Contributions are absolutely, positively welcome and encouraged! Check out CONTRIBUTING.md for the contributing guidelines for aero.

License

Aero is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See the LICENSE file for license rights and limitations.

aero's People

Contributors

48cf avatar andy-python-programmer avatar dependabot[bot] avatar jwpjrdev avatar kyota-exe avatar pitust avatar xvanc avatar

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.