Original post

[ANN] Unik, a Go unikernel capable of running Gio GUI programs Elias Naur 4/13/20 11:42 AM

Hi,

I just completed the proof-of-concept for a Go unikernel, Unik, which allows Go programs

to run without an operating system directly in virtual machines. Unlike similar projects

Unik is written in Go (and assembler), and it is compiled into Go programs just like any other

Go dependency. Unik does includes a UEFI bootloader written in C.

The source code is open sourced at

along with a demo that demonstrates a funtional Gio GUI program (GPU+mouse works, I ran

out of time to implement a keyboard driver).

The project is an experiment in a larger exploration of the question: “what if the operating

system process abstraction were a virtual machine? It’s also a response to my failed attempt

Unik pretends to be a Linux kernel, implementing enough system calls to fool the Go runtime.

— elias

Re: [go-nuts] [ANN] Unik, a Go unikernel capable of running Gio GUI programs ohir 4/13/20 2:00 PM Re: [ANN] Unik, a Go unikernel capable of running Gio GUI programs Brian Candler 4/13/20 2:06 PM

On Monday, 13 April 2020 19:42:17 UTC+1, Elias Naur wrote:

The project is an experiment in a larger exploration of the question: “what if the operating

system process abstraction were a virtual machine?

Interesting.

BTW, have you seen gVisor?  It takes a different approach to the problem: emulating the syscall interface on top of a running kernel, rather than on top of (real or emulated) bare metal.  I was reminded of it since it also “pretends to be a Linux kernel” – and is written in Go.
Re: [go-nuts] Re: [ANN] Unik, a Go unikernel capable of running Gio GUI programs Michael Jones 4/13/20 4:16 PM

IBM VM/370 and much that followed is exactly this “VM is a hardware abstraction” line of reasoning. Logging into a user session was to “IPL a machine.” (Initial Program Load, imagine an IBM PC bios screen rushing by)

[ANN] Unik, a Go unikernel capable of running Gio GUI programs hitech…@gmail.com 4/13/20 10:05 PM Re: [go-nuts] Re: [ANN] Unik, a Go unikernel capable of running Gio GUI programs Elias Naur 4/14/20 12:12 AM

On Mon Apr 13, 2020 at 4:15 PM, Michael Jones wrote:
> IBM VM/370 and much that followed is exactly this “VM is a hardware
> abstraction” line of reasoning. Logging into a user session was to
> “IPL a
> machine.” (Initial Program Load, imagine an IBM PC bios screen rushing
> by)
>

Exactly. It was embarrassing to re-discover the virtues of past
computing.

Re: [go-nuts] Re: [ANN] Unik, a Go unikernel capable of running Gio GUI programs Elias Naur 4/14/20 12:14 AM
On Mon Apr 13, 2020 at 2:06 PM, Brian Candler wrote:
> ——=_Part_1452_1022817720.1586811991060
> Content-Type: text/plain; charset=”UTF-8″

>
> On Monday, 13 April 2020 19:42:17 UTC+1, Elias Naur wrote:
> >
> > The project is an experiment in a larger exploration of the question:
> > “what if the operating
> > system process abstraction were a virtual machine?
> >
>
> Interesting.
>

> BTW, have you seen gVisor https://gvisor.dev/docs/>? It takes a

> different
> approach to the problem: emulating the syscall interface on top of a
> running kernel, rather than on top of (real or emulated) bare metal. I
> was
> reminded of it since it also “pretends to be a Linux kernel” – and is
> written in Go.
>

Yes. gVisor is similar in many ways and I hope to re-use parts of it,
for example their Go network stack implementation.

The main difference is that I want to avoid the Linux kernel, or any
kernel for that matter.

— elias