support UKI
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"path"
|
||||
@@ -75,10 +76,7 @@ func (ws wsHost) register(rws *restful.WebService, alterRB func(*restful.RouteBu
|
||||
// metal/local HDD upgrades
|
||||
b("boot.tar").
|
||||
Produces(mime.TAR).
|
||||
Doc("Get the " + ws.hostDoc + "'s /boot archive (ie: for metal upgrades)"),
|
||||
b("boot-efi.tar").
|
||||
Produces(mime.TAR).
|
||||
Doc("Get the " + ws.hostDoc + "'s /boot archive (ie: for metal upgrades)"),
|
||||
Doc("Get the " + ws.hostDoc + "'s /boot archive"),
|
||||
|
||||
// read-only ISO support
|
||||
b("boot.iso").
|
||||
@@ -98,6 +96,9 @@ func (ws wsHost) register(rws *restful.WebService, alterRB func(*restful.RouteBu
|
||||
b("initrd").
|
||||
Produces(mime.OCTET).
|
||||
Doc("Get the " + ws.hostDoc + "'s initial RAM disk (ie: for netboot)"),
|
||||
b("uki").
|
||||
Produces(mime.OCTET).
|
||||
Doc("Get the " + ws.hostDoc + "'s Unified Kernel Image"),
|
||||
|
||||
// - bootstrap config
|
||||
b("bootstrap-config").
|
||||
@@ -169,6 +170,23 @@ func renderHost(w http.ResponseWriter, r *http.Request, what string, host *local
|
||||
return
|
||||
}
|
||||
|
||||
cmdline := r.FormValue("cmdline")
|
||||
|
||||
if s := r.FormValue("serial"); s != "" {
|
||||
if cmdline != "" {
|
||||
cmdline += " "
|
||||
}
|
||||
cmdline += "console=ttyS" + s + ",115200"
|
||||
}
|
||||
|
||||
_, uki := r.Form["uki"]
|
||||
|
||||
withUki := func(callback func(out io.Writer, ctx *renderContext, uki bool, cmdline string) (err error)) func(io.Writer, *renderContext) error {
|
||||
return func(out io.Writer, ctx *renderContext) error {
|
||||
return callback(out, ctx, uki, cmdline)
|
||||
}
|
||||
}
|
||||
|
||||
switch what {
|
||||
case "config":
|
||||
err = renderConfig(w, r, ctx, false)
|
||||
@@ -182,32 +200,31 @@ func renderHost(w http.ResponseWriter, r *http.Request, what string, host *local
|
||||
err = renderKernel(w, r, ctx)
|
||||
case "initrd":
|
||||
err = renderCtx(w, r, ctx, what, buildInitrd)
|
||||
case "uki":
|
||||
err = renderCtx(w, r, ctx, what, withUki(buildUki))
|
||||
|
||||
case "bootstrap.tar":
|
||||
err = renderCtx(w, r, ctx, what, buildBootstrap)
|
||||
|
||||
case "boot.img":
|
||||
err = renderCtx(w, r, ctx, what, buildBootImg)
|
||||
err = renderCtx(w, r, ctx, what, withUki(buildBootImg))
|
||||
case "boot.img.gz":
|
||||
err = renderCtx(w, r, ctx, what, buildBootImgGZ)
|
||||
case "boot.img.lz4":
|
||||
err = renderCtx(w, r, ctx, what, buildBootImgLZ4)
|
||||
err = renderCtx(w, r, ctx, what, withUki(buildBootImgGZ))
|
||||
case "boot.qcow2":
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("qcow2"))
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("qcow2", uki, cmdline))
|
||||
case "boot.qed":
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("qed"))
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("qed", uki, cmdline))
|
||||
case "boot.vdi":
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vdi"))
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vdi", uki, cmdline))
|
||||
case "boot.vmdk":
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vmdk"))
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vmdk", uki, cmdline))
|
||||
case "boot.vpc":
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vpc"))
|
||||
err = renderCtx(w, r, ctx, what, qemuImgBootImg("vpc", uki, cmdline))
|
||||
case "boot.iso":
|
||||
err = renderCtx(w, r, ctx, what, buildBootISO)
|
||||
|
||||
case "boot.tar":
|
||||
err = renderCtx(w, r, ctx, what, buildBootTar)
|
||||
case "boot-efi.tar":
|
||||
err = renderCtx(w, r, ctx, what, buildBootEFITar)
|
||||
err = renderCtx(w, r, ctx, what, withUki(buildBootTar))
|
||||
|
||||
// boot v2
|
||||
case "bootstrap-config":
|
||||
|
||||
Reference in New Issue
Block a user