Git Product home page Git Product logo

nanvix's Introduction

WHAT IS NANVIX? Build Status Join us on Slack!

Nanvix is a Unix like operating system created by Pedro H. Penna to address emerging manycore platforms. It targets cluster-based architectures that rely on a distributed and shared memory configuration, and it was designed from scratch to deliver cutting edge performance, while enabling backward compatibility with existing software.

ABOUT THIS FORK

This branch/fork (dev) is a direct fork from nanvix/monolithic-kernel (master), but with some differences that may or not appear in the upstream, some of them:

  • No Thread/Multi-Core support (commit #68b32b5 removed)
  • Focus on LiveCD, with a 'huge' INITRD of 64 MiB
  • New system calls
  • Bug Fixes
  • C/C++ Support
  • OS Specific Toolchain
  • Ported programs:
    • GCC 6.4.0
    • Binutils 2.27
    • Kilo Text Editor
    • LuaJIT 2.1.0-beta3
    • PDCurses 3.9-4bc97e2
    • Nano v2.7.2
    • Nyancat
    • Python 3.6.15
    • more coming soon
  • OR1K not currently supported¹ (checkout #bdf4f27 for a working version)

However, it is very important to make it clear that I do not intend to start a "new project" with this or even 'compete' with the original repository. This fork/branch is just a playground where I eventually (very rarely) intend to add some things that I think are cool without worrying about upstream.

Therefore, this branch has no guarantees of compatibility with nanvix-monolithic although isolated commits should work, with little or no change, depending on the subject.

And of course, don't forget to check the related repositories: nanvix/nanvix, nanvix/monolithic-kernel and the Nanvix organization, all the development and exciting things are there, ;-).

Notes:

¹: The latest changes were more architecture-dependent than I would like, and it is complicated to maintain two architectures alone. Therefore, support for or1k is not a priority, since its use is limited to virtual machines and FPGAs (the latter being absurdly incredible and which fortunately I had the opportunity to work with), which sadly few have access to.

BUILDING AND RUNNING

Nanvix currently supports x86-based PC platforms. You can run it either in a real platform or a real machine.

To properly build Nanvix, you need a Linux like programming environment, the x86 GNU C Compiler, and the x86 GNU Binutils.

If you are running a Debian-based Linux distribution, you can run the following commands.

  • To clone this repository (default folder name is nanvix):

    $ cd path/to/clone
    $ git clone https://github.com/Theldus/nanvix.git -b dev [folder-name]
  • To get the development environment setup:

    $ cd path/folder-name
    $ sudo bash tools/dev/setup-toolchain.sh           # (distro specific, currently Ubuntu and Arch)
    $ sudo bash tools/dev/arch/setup-toolchain-i386.sh
    $ sudo bash tools/dev/setup-qemu.sh

Don't forget that after running setup-toolchain-i386.sh, you need to set up the environment variables in your ~/.bashrc, as informed at the end of the script execution, usually something like:

export TARGET=i386                                                       # Target architecture
export PATH=$PATH:/usr/local/nanvix-toolchain/bin                        # Toolchain binaries
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/nanvix-toolchain/lib  # MPC, MPFR and GMP libs
  • To build Nanvix:

    $ cd path/folder-name
    $ make nanvix > /dev/null
    $ make image
  • To run Nanvix on a virtual machine:

    $ cd path/folder-name
    $ bash tools/run/run-qemu.sh

PORTS

The programs ported to Nanvix are separated from the main build-tree, so to compile them you can:

$ cd path/folder-name
$ make ports # make ports-clean will clean-up your ports environment

or you may want to do per project:

$ cd path/folder-name/src/ubin/PORTS/ported-program
$ bash build.sh # bash clean.sh will clean-up your ports environment

after that you can build Nanvix (if not yet) and make an ISO image with:

$ make nanvix > /dev/null
$ make image

LICENSE AND MAINTAINERS

Nanvix is a free software that is under the GPL V3 license and is maintained by Pedro H. Penna. Any questions or suggestions send him an email: [email protected]

Join our mailing list at https://groups.google.com/d/forum/nanvix

nanvix's People

Contributors

bernardogo avatar fjorgemota avatar joaovicentesouto avatar jordanjean avatar mesh33 avatar ppenna avatar rogerrubens avatar romanegallier avatar rurtle avatar theldus avatar

Stargazers

 avatar  avatar  avatar

Watchers

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