All Projects → nanovms → Nanos

nanovms / Nanos

Licence: apache-2.0
A kernel designed to run one and only one application in a virtualized environment

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Nanos

Ops
ops - build and run nanos unikernels
Stars: ✭ 552 (-0.9%)
Mutual labels:  microservice, operating-systems, unikernel, sandbox, virtualization
Rusty Hermit
RustyHermit - A Rust-based, lightweight unikernel
Stars: ✭ 268 (-51.89%)
Mutual labels:  osdev, operating-systems, unikernel, virtualization
Libhermit Rs
libhermit-rs: A Rust-based library operating system
Stars: ✭ 558 (+0.18%)
Mutual labels:  osdev, operating-systems, virtualization
Libhermit
HermitCore: A C-based, lightweight unikernel
Stars: ✭ 190 (-65.89%)
Mutual labels:  osdev, unikernel, virtualization
ops-examples
A repository of basic and advanced examples using Ops
Stars: ✭ 68 (-87.79%)
Mutual labels:  sandbox, unikernel, operating-systems
Unikraft
Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels. (Core repository)
Stars: ✭ 183 (-67.15%)
Mutual labels:  osdev, unikernel
Keylime
A CNCF Project to Bootstrap & Maintain Trust on the Edge / Cloud and IoT
Stars: ✭ 128 (-77.02%)
Mutual labels:  edge, virtualization
Eschool
eSchool Microservice based Solution
Stars: ✭ 29 (-94.79%)
Mutual labels:  microservice, virtualization
Tools
Combination of different utilities, have fun!
Stars: ✭ 166 (-70.2%)
Mutual labels:  sandbox, virtualization
open-5g.github.io
Reference website for information on open, programmable, and virtualized 5G networks.
Stars: ✭ 41 (-92.64%)
Mutual labels:  virtualization, edge
Anatomy-of-System-Engineering
System Engineering Memory Map
Stars: ✭ 17 (-96.95%)
Mutual labels:  virtualization, operating-systems
Zenithos
The Zenith Operating System is a modern, professional fork of the 64-bit Temple Operating System, designed to survive societal collapse.
Stars: ✭ 144 (-74.15%)
Mutual labels:  osdev, operating-systems
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (-79.89%)
Mutual labels:  osdev, operating-systems
Eggos
A Go unikernel running on x86 bare metal
Stars: ✭ 1,232 (+121.18%)
Mutual labels:  osdev, unikernel
Simpleator
Simpleator ("Simple-ator") is an innovative Windows-centric x64 user-mode application emulator that leverages several new features that were added in Windows 10 Spring Update (1803), also called "Redstone 4", with additional improvements that were made in Windows 10 October Update (1809), aka "Redstone 5".
Stars: ✭ 260 (-53.32%)
Mutual labels:  operating-systems, virtualization
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (-88.15%)
Mutual labels:  osdev, operating-systems
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (-93.18%)
Mutual labels:  osdev, operating-systems
Eve
EVE is Edge Virtualization Engine
Stars: ✭ 266 (-52.24%)
Mutual labels:  edge, virtualization
Greentea
🍵 Userspace of the @GreenteaOS
Stars: ✭ 56 (-89.95%)
Mutual labels:  osdev, operating-systems
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 (+741.47%)
Mutual labels:  osdev, operating-systems

nanos

CircleCI

Nanos is a new kernel designed to run one and only one application in a virtualized environment. It has several constraints on it compared to a general purpose operating system such as Windows or Linux - namely it's a single process system with no support for running multiple programs nor does it have the concept of users or remote administration via ssh.

Read more about the Nanos Charter here.

Getting Started

Please use the ops orchestrator to run your applications with Nanos unless you plan on hacking on Nanos itself.

Building/Running

It is highly encouraged to use ops to build and run your applications using Nanos unless you are planning on modifying Nanos. OPS provides sensible defaults for most users and incorporates our understanding of how to appropriately best use Nanos. It is also currently highly coupled to Nanos.

If you are running in a vm already (which is a bad idea) you'll need to specify that you don't want hardware acceleration. For instance you can run Nanos in virtualbox on a mac but it will be slow and hard to configure.

You can build and run on mac and linux. Nanos supports KVM on linux and HVF on osx currently for acceleration. OPS has facilities to deploy to the public clouds (AWS/GCE).

Building From Source on a Mac

Install Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Grab Dependencies:

This installs the correct toolchain and will install an up-to-date qemu. It is highly recommended to be running the latest qemu otherwise you might run into issues.

brew update && brew install nasm go wget ent
brew tap nanovms/homebrew-x86_64-elf
brew install x86_64-elf-binutils
brew tap nanovms/homebrew-qemu
brew install nanovms/homebrew-qemu/qemu

Create a Chroot: (this isn't absolutely necessary)

mkdir target-root && cd target-root && wget
https://storage.googleapis.com/testmisc/target-root.tar.gz && tar xzf target-root.tar.gz

You should also set the environment variable NANOS_TARGET_ROOT to the path of target-root created above in order to create the example and test images.

To build:

make run-noaccel

Documentation

You can find more documentation on the OPS docs site

Benchmarks

In an effort for transparency and to collect, categorize, and document benchmarks we will start listing them here. The aims should be to be as reproducible and contain as much information as possible:

Go on GCloud: 18k req/sec

Rust on GCloud: 22k req/sec

Node.JS on AWS: 2k req/sec

Node.JS on GCloud: 4k req/sec

Tests

To run tests:

make test-noaccel

Development Running Instructions

For Nanos try running the first example first:

make run

To try a different target currently found in examples/ you can:

  1. cp the manifest file to target.manifest
  2. add your code and set a target in examples/Makefile
make TARGET=mynewtarget run

You may also wish to use https://github.com/nanovms/ops to develop locally. If that's the case a commonly used idiom is to simply copy the 3 required files to an appropriate release:

cp output/tools/bin/mkfs ~/.ops/0.1.17/.
cp output/platform/pc/boot/boot.img ~/.ops/0.1.17/.
cp output/platform/pc/bin/kernel.img ~/.ops/0.1.17/.

Contributing

Pull Requests

We accept pull requests as long as it conforms to our style and stated goals. We may reject prs if they violate either of these conditions.

If you are planning on spending more than a day to fix something it's probably wise to approach the topic in an issue with your planned fix before commiting to work.

Also, NanoVMs has paid kernel engineers with internal roadmaps so it's wise to check in with us first before grabbing a tkt. Tickets tagged 'low-priority' have a lower probability of collision.

Reporting Bugs

Please scan the issue list first to see if we are already tracking the bug.

Please attach debugging output ('-d' in ops). Please provide the config.json and anything else that allows us to reproduce the issue.

TFS

TFS is the current filesystem utilized by Nanos.

Optional Manifest Debugging Flags

thread tracing:

futex_trace: t

syscall tracing:

debugsyscalls: t

stackdump:

fault: t

Read more about Security here.

Architecture

Debugging Help

Manual Networking Setup

Build Envs

Reference Materials

Feedback

How are you using Nanos? Take this very short survey and help us grow the project. It will take just a minute but help us out!

Feedback Form

Who is Using Nanos?

If you are using Nanos for a project at your company or organization feel free to open up a PR and list your project/company below.

Getting Help

We run a public mailing list at:

[email protected]

for general questions. If you'd like more in-depth help reach out to the nanovms folks via drift or email engineering.

If you need something done now or want immediate attention to an issue NanoVMs offers paid support plans.

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