mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-04-04 11:25:33 +00:00
'moby run' will use the kernel and initrd image produced by 'moby build' and, on macOS, will run it inside a hyperkit VM. This assumes that you have a recent version of Docker for Mac installed as it re-uses the hyperkit and VPNKit from it. Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
52 lines
883 B
Go
52 lines
883 B
Go
// +build darwin
|
|
|
|
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"os/user"
|
|
|
|
"github.com/docker/hyperkit/go"
|
|
)
|
|
|
|
func run(cpus, mem, diskSz int, disk string, args []string) {
|
|
prefix := "moby"
|
|
if len(args) > 0 {
|
|
prefix = args[0]
|
|
}
|
|
|
|
cmdline, err := ioutil.ReadFile(prefix + "-cmdline")
|
|
if err != nil {
|
|
log.Fatalf("Cannot open cmdline file: %v", err)
|
|
}
|
|
|
|
if diskSz != 0 && disk == "" {
|
|
disk = prefix + "-disk.img"
|
|
}
|
|
|
|
h, err := hyperkit.New("", "", "auto", disk)
|
|
if err != nil {
|
|
log.Fatalln("Error creating hyperkit: ", err)
|
|
}
|
|
|
|
h.Kernel = prefix + "-bzImage"
|
|
h.Initrd = prefix + "-initrd.img"
|
|
h.CPUs = cpus
|
|
h.Memory = mem
|
|
h.DiskSize = diskSz
|
|
|
|
err = h.Run(string(cmdline))
|
|
if err != nil {
|
|
log.Fatalf("Cannot run hyperkit: %v", err)
|
|
}
|
|
}
|
|
|
|
func getHome() string {
|
|
if usr, err := user.Current(); err == nil {
|
|
return usr.HomeDir
|
|
}
|
|
return os.Getenv("HOME")
|
|
}
|