hermit-kernel

A Rust-based, lightweight unikernel.

https://github.com/hermit-os/kernel

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    18 of 51 committers (35.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.5%) to scientific vocabulary

Keywords

cloud-computing high-performance-computing kernel operating-system operating-systems osdev rust rust-lang unikernels virtualization

Keywords from Contributors

hermit hypervisor kvm unikernel state-management cryptocurrencies argument-parser optim interactive pde
Last synced: 4 months ago · JSON representation ·

Repository

A Rust-based, lightweight unikernel.

Basic Info
  • Host: GitHub
  • Owner: hermit-os
  • License: apache-2.0
  • Language: Rust
  • Default Branch: main
  • Homepage: https://hermit-os.org
  • Size: 62.6 MB
Statistics
  • Stars: 1,325
  • Watchers: 13
  • Forks: 105
  • Open Issues: 137
  • Releases: 50
Topics
cloud-computing high-performance-computing kernel operating-system operating-systems osdev rust rust-lang unikernels virtualization
Created over 7 years ago · Last pushed 4 months ago
Metadata Files
Readme License Citation

README.md

Hermit Kernel

Documentation License Zulip Badge DOI

This is the kernel of the Hermit unikernel project.

Requirements

Building the kernel

Usually the kernel will be linked as static library to your applications.

  • Rust applications: Instructions can be found in the hermit-rs repository.
  • For C/C++ applications: Instructions can be found in the hermit-c repository.

Standalone static library build

sh cargo xtask build --arch x86_64

On completion, the script will print the path of libhermit.a. If you want to build the kernel for aarch64, please replace x86_64 by aarch64. If you want to build the kernel for riscv64, please use riscv64.

Control the kernel messages verbosity

This kernel uses the lightweight logging crate log to print kernel messages. The environment variable HERMIT_LOG_LEVEL_FILTER controls the verbosity. You can change it by setting it at compile time to a string matching the name of a LevelFilter. If the variable is not set, or the name doesn't match, then LevelFilter::Info is used by default.

sh $ HERMIT_LOG_LEVEL_FILTER=Debug cargo xtask build --arch x86_64

Credits

This kernel is derived from following tutorials and software distributions:

  1. Philipp Oppermann's excellent series of blog posts.
  2. Erik Kidd's toyos-rs, which is an extension of Philipp Opermann's kernel.
  3. The Rust-based teaching operating system eduOS-rs.

License

Licensed under either of

  • Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

The kernel is being developed on hermit-os/kernel. Create your own fork, send us a pull request, and chat with us on Zulip.

Owner

  • Name: The Hermit Operating System
  • Login: hermit-os
  • Kind: organization
  • Location: Germany

A Rust-based, lightweight unikernel.

Citation (CITATION.cff)

cff-version: 1.2.0
title: The Hermit Kernel
message: >-
  If you use this software, please cite both the article
  from preferred-citation and the software itself.
type: software
authors:
  - family-names: Lankes
    given-names: Stefan
    orcid: 'https://orcid.org/0000-0003-4718-2238'
  - family-names: Kröning
    given-names: Martin
    orcid: 'https://orcid.org/0009-0005-0622-4229'
  - family-names: Klimt
    given-names: Jonathan
    orcid: 'https://orcid.org/0000-0002-5980-2214'
  - family-names: Breitbart
    given-names: Jens
  - family-names: Finck
    given-names: Colin
  - family-names: Krebs
    given-names: Daniel
  - family-names: Schöning
    given-names: Simon
  - family-names: Schwender
    given-names: Jonathan
  - family-names: Şahin
    given-names: Çağatay Yiğit
  - family-names: Thomas
    given-names: Lambertz
  - name: The Hermit Project Developers
identifiers:
  - type: doi
    value: 10.5281/zenodo.14645534
    description: The concept DOI of the software.
  - type: doi
    value: 10.5281/zenodo.14645535
    description: The versioned DOI for version 0.8.0 of the software.
  - type: url
    value: >-
      https://github.com/hermit-os/kernel/releases/tag/v0.8.0
    description: The GitHub release URL of tag v0.8.0.
  - type: url
    value: >-
      https://github.com/hermit-os/kernel/tree/742526984ee0094b0626ad6afddb17b11bc9caff
    description: >-
      The GitHub release URL of the commit tagged with
      v0.8.0.
  - type: url
    value: >-
      https://github.com/hermit-os/kernel/releases/tag/v0.10.0
    description: The GitHub release URL of tag v0.10.0.
  - type: url
    value: >-
      https://github.com/hermit-os/kernel/tree/791b9328b3a6b93944692c6dfa3e2f42c59672cb
    description: >-
      The GitHub release URL of the commit tagged with
      v0.10.0.
repository-code: 'https://github.com/hermit-os/kernel'
url: 'https://hermit-os.org/'
abstract: 'A Rust-based, lightweight unikernel.'
keywords:
  - unikernel
  - rust
  - virtualization
  - operating system
  - high-performance computing
  - cloud computing
license:
  - MIT
  - Apache-2.0
commit: 791b9328b3a6b93944692c6dfa3e2f42c59672cb
version: 0.10.0
date-released: '2025-01-18'
preferred-citation:
  type: article
  title: Exploring Rust for Unikernel Development
  journal: >-
    Proceedings of the 10th Workshop on Programming Languages and Operating
    Systems
  doi: 10.1145/3365137.3365395
  year: 2019
  month: 10
  authors:
    - family-names: Lankes
      given-names: Stefan
      orcid: 'https://orcid.org/0000-0003-4718-2238'
    - family-names: Breitbart
      given-names: Jens
    - family-names: Pickartz
      given-names: Simon
      orcid: 'https://orcid.org/0000-0002-6316-6396'
  pages: 8
  start: 8
  end: 15

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 5,472
  • Total Committers: 51
  • Avg Commits per committer: 107.294
  • Development Distribution Score (DDS): 0.46
Past Year
  • Commits: 818
  • Committers: 16
  • Avg Commits per committer: 51.125
  • Development Distribution Score (DDS): 0.402
Top Committers
Name Email Commits
Stefan Lankes s****s@e****e 2,953
Martin Kröning m****g@e****e 1,461
dependabot[bot] 4****] 420
Colin Finck c****k@r****e 166
Çağatay Yiğit Şahin c****n@o****m 88
daniel-k g****b@d****t 71
mustermeiszer m****r@g****m 65
Jonathan Schwender s****n@g****m 63
Thomas Lambertz m****l@t****e 25
Jens Breitbart j****t@g****m 23
Steffen Vogel s****l@e****e 15
Jonathan Klimt j****t@e****e 14
simonschoening s****g@r****e 12
Simon Pickartz s****z@e****e 8
Dirk Stolle s****v@w****e 6
LucasHaug l****g@h****m 6
Nathan Whyte n****5@g****m 6
Marco Ruppert-Maas m****0@g****m 6
Jens Reidel a****n@t****z 5
Jonas Schroeder j****1@r****e 5
joboet j****r@i****m 5
Panagiotis "Ivory" Vasilopoulos g****t@n****t 4
Sarah Simon s****n@r****e 4
RealRichardParker t****g@g****m 3
Shaun Beautement s****t@p****m 3
michael m****9@g****m 3
Carl Wachter c****r@r****e 3
Fritz Stracke f****e@r****e 3
Cam Walter c****r@g****m 2
Thalia Archibald t****a@a****v 2
and 21 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 122
  • Total pull requests: 1,501
  • Average time to close issues: 10 months
  • Average time to close pull requests: 9 days
  • Total issue authors: 24
  • Total pull request authors: 22
  • Average comments per issue: 0.61
  • Average comments per pull request: 0.25
  • Merged pull requests: 1,253
  • Bot issues: 7
  • Bot pull requests: 557
Past Year
  • Issues: 64
  • Pull requests: 776
  • Average time to close issues: 6 days
  • Average time to close pull requests: 5 days
  • Issue authors: 14
  • Pull request authors: 17
  • Average comments per issue: 0.17
  • Average comments per pull request: 0.24
  • Merged pull requests: 607
  • Bot issues: 6
  • Bot pull requests: 287
Top Authors
Issue Authors
  • mkroening (71)
  • jounathaen (10)
  • stlankes (6)
  • github-actions[bot] (5)
  • dscso (4)
  • m-mueller678 (4)
  • hcsch (3)
  • cagatay-y (2)
  • dependabot[bot] (2)
  • egrimley-arm (1)
  • n0toose (1)
  • Sxmourai (1)
  • septatrix (1)
  • koraa (1)
  • tlambertz (1)
Pull Request Authors
  • mkroening (559)
  • dependabot[bot] (557)
  • stlankes (160)
  • cagatay-y (76)
  • jounathaen (34)
  • Gelbpunkt (33)
  • n0toose (17)
  • CarlWachter (10)
  • mrm-develop (9)
  • zyuiop (8)
  • sarahspberrypi (7)
  • shehreenr (4)
  • marcomaas1990 (4)
  • fstracke (4)
  • m-mueller678 (4)
Top Labels
Issue Labels
good first issue (5) enhancement (5) bug (4) dependencies (2) rust (2) design enhancement (2) soundness (2)
Pull Request Labels
dependencies (557) rust (555) github_actions (1) rust_toolchain_package_manager (1)

Packages

  • Total packages: 2
  • Total downloads:
    • cargo 1,203 total
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 67
  • Total maintainers: 2
proxy.golang.org: github.com/hermit-os/kernel
  • Versions: 65
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.7%
Average: 5.9%
Dependent repos count: 6.1%
Last synced: 4 months ago
crates.io: hermit-kernel

A Rust-based library operating system

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1,203 Total
Rankings
Stargazers count: 4.8%
Forks count: 7.0%
Dependent repos count: 22.6%
Dependent packages count: 30.0%
Average: 32.1%
Downloads: 96.1%
Maintainers (2)
Last synced: 4 months ago

Dependencies

.github/workflows/ci.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v3 composite
  • dsaltares/fetch-gh-release-asset 1.1.0 composite
  • taiki-e/install-action cargo-hack composite
.github/workflows/publish_docs.yml actions
  • actions/checkout v3 composite
  • crazy-max/ghaction-github-pages v3 composite
.github/workflows/security_audit.yml actions
  • actions-rs/audit-check v1 composite
  • actions/checkout v3 composite
Cargo.lock cargo
  • aarch64 0.0.7
  • aarch64-cpu 9.3.1
  • ahash 0.8.3
  • align-address 0.1.0
  • anyhow 1.0.69
  • async-task 4.3.0
  • atomic-polyfill 0.1.11
  • autocfg 1.1.0
  • bit_field 0.10.1
  • bitflags 1.3.2
  • byteorder 1.4.3
  • cfg-if 1.0.0
  • cortex-a 7.5.0
  • critical-section 1.1.1
  • crossbeam-utils 0.8.14
  • defmt 0.3.2
  • defmt-macros 0.3.3
  • defmt-parser 0.3.1
  • dyn-clone 1.0.10
  • exclusive_cell 0.1.0
  • fastrand 1.8.0
  • float-cmp 0.9.0
  • futures-core 0.3.25
  • futures-lite 1.12.0
  • generic_once_cell 0.1.1
  • goblin 0.6.0
  • hash32 0.2.1
  • hashbrown 0.13.2
  • heapless 0.7.16
  • hermit-entry 0.9.1
  • hermit-sync 0.1.2
  • include-transformed 0.2.1
  • instant 0.1.12
  • libc 0.2.139
  • linked_list_allocator 0.10.4
  • llvm-tools 0.1.1
  • lock_api 0.4.9
  • log 0.4.17
  • managed 0.8.0
  • memchr 2.5.0
  • minimal-lexical 0.2.1
  • multiboot 0.8.0
  • nom 7.1.2
  • num-traits 0.2.15
  • once_cell 1.17.0
  • paste 1.0.11
  • pci-ids 0.2.5
  • pflock 0.2.0
  • phf 0.11.1
  • phf_codegen 0.11.1
  • phf_generator 0.11.1
  • phf_shared 0.11.1
  • pin-project-lite 0.2.9
  • plain 0.2.3
  • ppv-lite86 0.2.17
  • proc-macro-error 1.0.4
  • proc-macro-error-attr 1.0.4
  • proc-macro2 1.0.49
  • qemu-exit 3.0.1
  • quote 1.0.23
  • rand 0.8.5
  • rand_chacha 0.3.1
  • rand_core 0.6.4
  • raw-cpuid 10.6.0
  • redox_syscall 0.2.16
  • remove_dir_all 0.5.3
  • rustc_version 0.4.0
  • rustversion 1.0.11
  • scopeguard 1.1.0
  • scroll 0.11.0
  • scroll_derive 0.11.0
  • semver 1.0.16
  • shell-words 1.1.0
  • siphasher 0.3.10
  • smoltcp 0.9.1
  • spin 0.9.5
  • stable_deref_trait 1.2.0
  • syn 1.0.107
  • tempfile 3.3.0
  • time 0.3.17
  • time-core 0.1.0
  • tock-registers 0.7.0
  • tock-registers 0.8.1
  • uart_16550 0.2.18
  • unicode-ident 1.0.6
  • version_check 0.9.4
  • volatile 0.4.5
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-x86_64-pc-windows-gnu 0.4.0
  • x86 0.52.0
  • x86_64 0.14.10
  • xflags 0.3.1
  • xflags-macros 0.3.1
  • xshell 0.2.3
  • xshell-macros 0.2.3
Cargo.toml cargo
  • float-cmp 0.9 development
  • num-traits 0.2 development
  • x86 0.52 development
  • ahash 0.8
  • align-address 0.1
  • async-task 4.3
  • bitflags 1.3
  • crossbeam-utils 0.8
  • dyn-clone 1.0
  • futures-lite 1.11
  • hashbrown 0.13
  • hermit-entry 0.9
  • hermit-sync 0.1.2
  • include-transformed 0.2
  • linked_list_allocator 0.10
  • lock_api 0.4
  • log 0.4
  • pci-ids 0.2
  • pflock 0.2
  • qemu-exit 3.0
  • rand_chacha 0.3
  • shell-words 1.1
  • smoltcp 0.9
hermit-builtins/Cargo.lock cargo
  • libm 0.2.6
hermit-builtins/Cargo.toml cargo
xtask/Cargo.toml cargo