mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 09:16:29 +00:00
output: Add support for CPU ucode to the kernel+initrd format
This prepends 'ucode.cpio' to the initrd if present. Padding should not be necessary as the ucode.cpio should be padded to the right size. Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
This commit is contained in:
parent
1d24454438
commit
5d5a13526b
@ -27,12 +27,11 @@ const (
|
|||||||
|
|
||||||
var outFuns = map[string]func(string, io.Reader, int) error{
|
var outFuns = map[string]func(string, io.Reader, int) error{
|
||||||
"kernel+initrd": func(base string, image io.Reader, size int) error {
|
"kernel+initrd": func(base string, image io.Reader, size int) error {
|
||||||
kernel, initrd, cmdline, _, err := tarToInitrd(image)
|
kernel, initrd, cmdline, ucode, err := tarToInitrd(image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error converting to initrd: %v", err)
|
return fmt.Errorf("Error converting to initrd: %v", err)
|
||||||
}
|
}
|
||||||
// TODO: Handle ucode
|
err = outputKernelInitrd(base, kernel, initrd, cmdline, ucode)
|
||||||
err = outputKernelInitrd(base, kernel, initrd, cmdline)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error writing kernel+initrd output: %v", err)
|
return fmt.Errorf("Error writing kernel+initrd output: %v", err)
|
||||||
}
|
}
|
||||||
@ -317,15 +316,29 @@ func outputRPi3(image, filename string, filesystem io.Reader) error {
|
|||||||
return dockerRun(filesystem, output, true, image)
|
return dockerRun(filesystem, output, true, image)
|
||||||
}
|
}
|
||||||
|
|
||||||
func outputKernelInitrd(base string, kernel []byte, initrd []byte, cmdline string) error {
|
func outputKernelInitrd(base string, kernel []byte, initrd []byte, cmdline string, ucode []byte) error {
|
||||||
log.Debugf("output kernel/initrd: %s %s", base, cmdline)
|
log.Debugf("output kernel/initrd: %s %s", base, cmdline)
|
||||||
log.Infof(" %s %s %s", base+"-kernel", base+"-initrd.img", base+"-cmdline")
|
|
||||||
err := ioutil.WriteFile(base+"-initrd.img", initrd, os.FileMode(0644))
|
if len(ucode) != 0 {
|
||||||
if err != nil {
|
log.Infof(" %s ucode+%s %s", base+"-kernel", base+"-initrd.img", base+"-cmdline")
|
||||||
return err
|
if err := ioutil.WriteFile(base+"-initrd.img", ucode, os.FileMode(0644)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
f, err := os.OpenFile(base+"-initrd.img", os.O_APPEND|os.O_WRONLY, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
if _, err = f.Write(initrd); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
log.Infof(" %s %s %s", base+"-kernel", base+"-initrd.img", base+"-cmdline")
|
||||||
|
if err := ioutil.WriteFile(base+"-initrd.img", initrd, os.FileMode(0644)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile(base+"-kernel", kernel, os.FileMode(0644))
|
if err := ioutil.WriteFile(base+"-kernel", kernel, os.FileMode(0644)); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return ioutil.WriteFile(base+"-cmdline", []byte(cmdline), os.FileMode(0644))
|
return ioutil.WriteFile(base+"-cmdline", []byte(cmdline), os.FileMode(0644))
|
||||||
|
Loading…
Reference in New Issue
Block a user