unikernels

package
v0.8.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FreeBSDUnikernel string = "freebsd"
)
View Source
const HermitUnikernel string = "hermit"
View Source
const (
	LinuxUnikernel string = "linux"
)
View Source
const MewzUnikernel string = "mewz"
View Source
const MirageUnikernel string = "mirage"
View Source
const RumprunUnikernel string = "rumprun"
View Source
const SubnetMask125 = "128.0.0.0"
View Source
const UnikraftCompatVersion string = "0.16.1"
View Source
const UnikraftUnikernel string = "unikraft"

Variables

View Source
var ErrNotSupportedUnikernel = errors.New("unikernel is not supported")
View Source
var ErrUndefinedVersion = errors.New("version is undefined, using default version")
View Source
var ErrVersionParsing = errors.New("failed to parse provided version, using default version")

Functions

func IsIPInSubnet

func IsIPInSubnet(ln LinuxNet) bool

func New

func New(unikernelType string) (types.Unikernel, error)

Types

type FreeBSD added in v0.8.1

type FreeBSD struct {
	Command     []string
	InitPath    string
	WithUrunit  bool
	Monitor     string
	Env         []string
	RootFsType  string
	BlockFsType string
	Net         FreeBSDNet
	Block       []types.BlockDevParams
	ProcConfig  types.ProcessConfig
}

func (*FreeBSD) CommandString added in v0.8.1

func (f *FreeBSD) CommandString() (string, error)

CommandString builds the FreeBSD boot arguments. On the PVH boot mode every name=value token becomes a kernel environment variable. Therefore, use this mechanism to pass the location of the urunit configuration to the guest. Boot arguments must not contain commas, which act as token delimiters.

func (*FreeBSD) Init added in v0.8.1

func (f *FreeBSD) Init(data types.UnikernelParams) error

func (*FreeBSD) MonitorBlockCli added in v0.8.1

func (f *FreeBSD) MonitorBlockCli() []types.MonitorBlockArgs

func (*FreeBSD) MonitorCli added in v0.8.1

func (f *FreeBSD) MonitorCli() types.MonitorCliArgs

func (*FreeBSD) MonitorNetCli added in v0.8.1

func (f *FreeBSD) MonitorNetCli(ifName string, mac string) []string

func (*FreeBSD) MonitorSharedfsCli added in v0.8.1

func (f *FreeBSD) MonitorSharedfsCli(fsType string, path string) []string

MonitorSharedfsCli exposes the 9p shared rootfs over the virtio-mmio transport only for Qemu's microvm. It sets multidevs=remap: since the shared container rootfs usually spans several host devices (overlay layers, bind-mounted files and dirs).

func (*FreeBSD) SupportsBlock added in v0.8.1

func (f *FreeBSD) SupportsBlock() bool

func (*FreeBSD) SupportsFS added in v0.8.1

func (f *FreeBSD) SupportsFS(fsType string) bool

type FreeBSDNet added in v0.8.1

type FreeBSDNet struct {
	Address string
	Gateway string
	Mask    string
}

type Hermit added in v0.8.0

type Hermit struct {
	Command string
	Monitor string
	Net     HermitNet
}

func (*Hermit) CommandString added in v0.8.0

func (h *Hermit) CommandString() (string, error)

func (*Hermit) Init added in v0.8.0

func (h *Hermit) Init(data types.UnikernelParams) error

func (*Hermit) MonitorBlockCli added in v0.8.0

func (h *Hermit) MonitorBlockCli() []types.MonitorBlockArgs

func (*Hermit) MonitorCli added in v0.8.0

func (h *Hermit) MonitorCli() types.MonitorCliArgs

func (*Hermit) MonitorNetCli added in v0.8.0

func (h *Hermit) MonitorNetCli(ifName string, mac string) []string

func (*Hermit) MonitorSharedfsCli added in v0.8.1

func (h *Hermit) MonitorSharedfsCli(_ string, _ string) []string

MonitorSharedfsCli is nil since we have not checked the support of shared-fs for hermit.

func (*Hermit) SupportsBlock added in v0.8.0

func (h *Hermit) SupportsBlock() bool

func (*Hermit) SupportsFS added in v0.8.0

func (h *Hermit) SupportsFS(fsType string) bool

type HermitNet added in v0.8.0

type HermitNet struct {
	Address string
	Mask    int
	Gateway string
}

type Linux

type Linux struct {
	App        string
	Command    string
	Monitor    string
	Env        []string
	Net        LinuxNet
	Blk        []types.BlockDevParams
	RootFsType string
	InitrdConf bool
	ProcConfig types.ProcessConfig
}

func (*Linux) CommandString

func (l *Linux) CommandString() (string, error)

func (*Linux) Init

func (l *Linux) Init(data types.UnikernelParams) error

func (*Linux) MonitorBlockCli

func (l *Linux) MonitorBlockCli() []types.MonitorBlockArgs

func (*Linux) MonitorCli

func (l *Linux) MonitorCli() types.MonitorCliArgs

func (*Linux) MonitorNetCli

func (l *Linux) MonitorNetCli(_ string, _ string) []string

func (*Linux) MonitorSharedfsCli added in v0.8.1

func (l *Linux) MonitorSharedfsCli(fsType string, path string) []string

MonitorSharedfsCli exposes the 9p shared rootfs over QEMU's PCI transport.

func (*Linux) SupportsBlock

func (l *Linux) SupportsBlock() bool

func (*Linux) SupportsFS

func (l *Linux) SupportsFS(fsType string) bool

type LinuxNet

type LinuxNet struct {
	Address string
	Gateway string
	Mask    string
}

type Mewz

type Mewz struct {
	Command string
	Monitor string
	Net     MewzNet
}

func (*Mewz) CommandString

func (m *Mewz) CommandString() (string, error)

func (*Mewz) Init

func (m *Mewz) Init(data types.UnikernelParams) error

func (*Mewz) MonitorBlockCli

func (m *Mewz) MonitorBlockCli() []types.MonitorBlockArgs

Mewz does not seem to support virtio block or any other kind of block/fs.

func (*Mewz) MonitorCli

func (m *Mewz) MonitorCli() types.MonitorCliArgs

Mewz does not require any monitor specific cli option

func (*Mewz) MonitorNetCli

func (m *Mewz) MonitorNetCli(ifName string, mac string) []string

func (*Mewz) MonitorSharedfsCli added in v0.8.1

func (m *Mewz) MonitorSharedfsCli(_ string, _ string) []string

MonitorSharedfsCli is nil since Mewz does not support shared-fs

func (*Mewz) SupportsBlock

func (m *Mewz) SupportsBlock() bool

func (*Mewz) SupportsFS

func (m *Mewz) SupportsFS(_ string) bool

type MewzNet

type MewzNet struct {
	Address string
	Mask    int
	Gateway string
}

type Mirage

type Mirage struct {
	Command string
	Monitor string
	Net     MirageNet
	Block   []MirageBlock
	// contains filtered or unexported fields
}

func (*Mirage) CommandString

func (m *Mirage) CommandString() (string, error)

func (*Mirage) Init

func (m *Mirage) Init(data types.UnikernelParams) error

func (*Mirage) MonitorBlockCli

func (m *Mirage) MonitorBlockCli() []types.MonitorBlockArgs

func (*Mirage) MonitorCli

func (m *Mirage) MonitorCli() types.MonitorCliArgs

func (*Mirage) MonitorNetCli

func (m *Mirage) MonitorNetCli(ifName string, mac string) []string

func (*Mirage) MonitorSharedfsCli added in v0.8.1

func (m *Mirage) MonitorSharedfsCli(_ string, _ string) []string

MonitorSharedfsCli is nil since mirage does not support shared-fs

func (*Mirage) SupportsBlock

func (m *Mirage) SupportsBlock() bool

func (*Mirage) SupportsFS

func (m *Mirage) SupportsFS(_ string) bool

type MirageBlock

type MirageBlock struct {
	ID       string
	HostPath string
}

type MirageNet

type MirageNet struct {
	Address string
	Gateway string
}

type Rumprun

type Rumprun struct {
	Command string
	Monitor string
	Envs    []string
	Net     RumprunNet
	Blk     RumprunBlk
}

func (*Rumprun) CommandString

func (r *Rumprun) CommandString() (string, error)

func (*Rumprun) Init

func (r *Rumprun) Init(data types.UnikernelParams) error

func (*Rumprun) MonitorBlockCli

func (r *Rumprun) MonitorBlockCli() []types.MonitorBlockArgs

func (*Rumprun) MonitorCli

func (r *Rumprun) MonitorCli() types.MonitorCliArgs

Rumprun can execute only on top of Solo5 and currently there are no generic Solo5-specific arguments that Rumprun requires

func (*Rumprun) MonitorNetCli

func (r *Rumprun) MonitorNetCli(ifName string, mac string) []string

func (*Rumprun) MonitorSharedfsCli added in v0.8.1

func (r *Rumprun) MonitorSharedfsCli(_ string, _ string) []string

MonitorSharedfsCli is nil since rumprun does not support shared-fs

func (*Rumprun) SupportsBlock

func (r *Rumprun) SupportsBlock() bool

func (*Rumprun) SupportsFS

func (r *Rumprun) SupportsFS(fsType string) bool

type RumprunBlk

type RumprunBlk struct {
	HostPath   string `json:"-"`
	Source     string `json:"source"`
	Path       string `json:"path"`
	FsType     string `json:"fstype"`
	Mountpoint string `json:"mountpoint"`
}

type RumprunCmd

type RumprunCmd struct {
	CmdLine string `json:"cmdline"`
}

type RumprunEnv

type RumprunEnv struct {
	Env string `json:"env"`
}

type RumprunNet

type RumprunNet struct {
	Interface string `json:"if"`
	Cloner    string `json:"cloner"`
	Type      string `json:"type"`
	Method    string `json:"method"`
	Address   string `json:"addr"`
	Mask      string `json:"mask"`
	Gateway   string `json:"gw"`
}

type Unikraft

type Unikraft struct {
	AppName string
	Monitor string
	Command string
	Env     []string
	Net     UnikraftNet
	VFS     UnikraftVFS
	Version string
}

func (*Unikraft) CommandString

func (u *Unikraft) CommandString() (string, error)

func (*Unikraft) Init

func (u *Unikraft) Init(data types.UnikernelParams) error

func (*Unikraft) MonitorBlockCli

func (u *Unikraft) MonitorBlockCli() []types.MonitorBlockArgs

We have not managed to make Unikraft run with block yet.

func (*Unikraft) MonitorCli

func (u *Unikraft) MonitorCli() types.MonitorCliArgs

There are no generic CLI hypervisor options for Unikraft yet.

func (*Unikraft) MonitorNetCli

func (u *Unikraft) MonitorNetCli(_ string, _ string) []string

There is no need for any changes here yet.

func (*Unikraft) MonitorSharedfsCli added in v0.8.1

func (u *Unikraft) MonitorSharedfsCli(fsType string, path string) []string

MonitorSharedfsCli exposes the 9p shared rootfs over QEMU's PCI transport.

func (*Unikraft) SupportsBlock

func (u *Unikraft) SupportsBlock() bool

func (*Unikraft) SupportsFS

func (u *Unikraft) SupportsFS(fsType string) bool

type UnikraftNet

type UnikraftNet struct {
	Address string
	Mask    string
	Gateway string
}

type UnikraftVFS

type UnikraftVFS struct {
	RootFS string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL