mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-21 18:11:35 +00:00
Merge pull request #158 from justincormack/tar-kernel-initrd
Add a "tar-kernel-initrd" output format
This commit is contained in:
commit
9abca80507
@ -32,6 +32,16 @@ var outFuns = map[string]func(string, []byte, int) error{
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
"tar-kernel-initrd": func(base string, image []byte, size int) error {
|
||||||
|
kernel, initrd, cmdline, err := tarToInitrd(image)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Error converting to initrd: %v", err)
|
||||||
|
}
|
||||||
|
if err := outputKernelInitrdTarball(base, kernel, initrd, cmdline); err != nil {
|
||||||
|
return fmt.Errorf("Error writing kernel+initrd tarball output: %v", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
"iso-bios": func(base string, image []byte, size int) error {
|
"iso-bios": func(base string, image []byte, size int) error {
|
||||||
err := outputIso(bios, base+".iso", image)
|
err := outputIso(bios, base+".iso", image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -293,3 +303,48 @@ func outputKernelInitrd(base string, kernel []byte, initrd []byte, cmdline strin
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func outputKernelInitrdTarball(base string, kernel []byte, initrd []byte, cmdline string) error {
|
||||||
|
log.Debugf("output kernel/initrd tarball: %s %s", base, cmdline)
|
||||||
|
log.Infof(" %s", base+"-initrd.tar")
|
||||||
|
f, err := os.Create(base + "-initrd.tar")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
tw := tar.NewWriter(f)
|
||||||
|
hdr := &tar.Header{
|
||||||
|
Name: "kernel",
|
||||||
|
Mode: 0644,
|
||||||
|
Size: int64(len(kernel)),
|
||||||
|
}
|
||||||
|
if err := tw.WriteHeader(hdr); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := tw.Write(kernel); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
hdr = &tar.Header{
|
||||||
|
Name: "initrd.img",
|
||||||
|
Mode: 0644,
|
||||||
|
Size: int64(len(initrd)),
|
||||||
|
}
|
||||||
|
if err := tw.WriteHeader(hdr); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := tw.Write(initrd); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
hdr = &tar.Header{
|
||||||
|
Name: "cmdline",
|
||||||
|
Mode: 0644,
|
||||||
|
Size: int64(len(cmdline)),
|
||||||
|
}
|
||||||
|
if err := tw.WriteHeader(hdr); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := tw.Write([]byte(cmdline)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return tw.Close()
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user