https://github.com/bhojpur/kernel
The Bhojpur Kernel is an operating system library used by the Bhojpur.NET Platform for delivery of fast and secure applications or services.
https://github.com/bhojpur/kernel
linux-kernel unikernel
Last synced: 2 months ago
JSON representation
The Bhojpur Kernel is an operating system library used by the Bhojpur.NET Platform for delivery of fast and secure applications or services.
- Host: GitHub
- URL: https://github.com/bhojpur/kernel
- Owner: bhojpur
- Created: 2022-01-11T03:13:41.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-04-21T15:17:25.000Z (about 4 years ago)
- Last Synced: 2025-03-21T11:03:58.133Z (over 1 year ago)
- Topics: linux-kernel, unikernel
- Language: Go
- Homepage: https://page.bhojpur-consulting.com/product/kernel/
- Size: 1000 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bhojpur Kernel - Library Operating System
The `Bhojpur Kernel` is an `operating system` as a library (i.e., Unikernel framework) used by
the [Bhojpur.NET Platform](https://github.com/bhojpur/platform) ecosystem for delivery of fast
and secure `applications` or `services`. It has the ability to convert normal `Go` program into
an ELF unikernel, which could be run on a bare metal. It is a tool for compiling application
sources into `Unikernel` (i.e., lightweight bootable disk images) and `MicroVM` rather than
binaries.
## Unikernel Framework
The `Bhojpur Kernel` runs and manages instances of compiled images across a variety of cloud
providers as well as locally. It utilizes a simple `Docker`-like command line interface (i.e.,
`kernctl`), making building `Unikernel` and `MicroVM` as easy as building containers.
### Supported Providers
* [Firecracker](https://firecracker-microvm.github.io/)
* Virtualbox
* AWS
* Google Cloud
* vSphere
* QEMU
* UKVM
* Xen
* OpenStack
* Photon Controller
The `Instance Listener` is a special component of th eBhojpur Kernel that bootstraps unikernel
instances running on certain providers (currently `vSphere` and `VirtualBox`).
### Build Unikernel Image
To start with, you need `QEMU` to run it locally on a macOS.
```bash
$ brew install x86_64-elf-binutils x86_64-elf-gcc x86_64-elf-gdb
$ brew install qemu
```
You can start using the following command
```bash
$ builder qemu
```
Firstly, get the `kernel` command line tool.
```
$ go install github.com/bhojpur/kernel
```
Run the following command to build your `Unikernel` application.
```
$ kernel build -o kernel.elf
```
The following command can package your custom application into a `Unikernel` ISO file.
```bash
$ kernel pack -o bhojpur-kernel.iso -k kernel.elf
```
Then, you can use [https://github.com/ventoy/Ventoy](https://github.com/ventoy/Ventoy) to
run the ISO file on a bare metal compute server.
### Unikernel Types Supported
* **Firecracker**: the `kernctl` supports compiling Go source code into [Firecracker](https://firecracker-microvm.github.io/) MicroVMs
* **rump**: the `kernctl` supports compiling Python, Node.js, and Go source code into [rumprun](https://github.com/rumpkernel) unikernels
* **OSv**: the `kernctl` supports compiling Java, Node.js, C and C++ source code into [OSv](http://osv.io/) unikernels
* **IncludeOS**: the `kernctl` supports compiling C++ source code into [IncludeOS](https://github.com/hioa-cs/IncludeOS) unikernels
* **MirageOS**: the `kernctl` supports compiling OCaml source code into [MirageOS](https://mirage.io) unikernels
### Source Code Build
The `Bhojpur Kernel` is compiled into binary image by the `builder` tool using the configuration settings
defined in the `builderfile.go` file.
```bash
$ go mod tidy
$ go get
$ builder iso
```