Documentation
¶
Overview ¶
Package build contains helper functions for building kernels/images.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LinuxKernelImage ¶
Types ¶
type BuildParams ¶
type ImageDetails ¶
Information that is returned from the Image function.
func Image ¶
func Image(params Params) (details ImageDetails, err error)
Image creates a disk image for the specified OS/ARCH/VM. Kernel is taken from KernelDir, userspace system is taken from UserspaceDir. If CmdlineFile is not empty, contents of the file are appended to the kernel command line. If SysctlFile is not empty, contents of the file are appended to the image /etc/sysctl.conf. Output is stored in OutputDir and includes (everything except for image is optional):
- image: the image
- key: ssh key for the image
- kernel: kernel for injected boot
- initrd: initrd for injected boot
- kernel.config: actual kernel config used during build
- obj/: directory with kernel object files (this should match KernelObject specified in sys/targets, e.g. vmlinux for linux)
The returned structure contains a kernel ID that will be the same for kernels with the same runtime behavior, and different for kernels with different runtime behavior. Binary equal builds, or builds that differ only in e.g. debug info, have the same ID. The ID may be empty if OS implementation does not have a way to calculate such IDs. Also that structure provides a compiler ID field that contains the name and the version of the compiler/toolchain that was used to build the kernel. The CompilerID field is not guaranteed to be non-empty.
type InfraError ¶
func (InfraError) Error ¶
func (e InfraError) Error() string
type KernelError ¶
type KernelError struct {
Report []byte
Output []byte
Recipients vcs.Recipients
// contains filtered or unexported fields
}
func (*KernelError) Error ¶
func (err *KernelError) Error() string
type Params ¶
type Params struct {
TargetOS string
TargetArch string
VMType string
KernelDir string
OutputDir string
Compiler string
Make string
Linker string
Ccache string
UserspaceDir string
CmdlineFile string
SysctlFile string
Config []byte
Tracer debugtracer.DebugTracer
BuildCPUs int // If 0, all CPUs will be used.
Build json.RawMessage
}
Params is input arguments for the Image and Clean functions.
type SectionHashes ¶
type SectionHashes struct {
Text map[string]string `json:"text"`
Data map[string]string `json:"data"` // Merged .data and .rodata.
}
func ElfSymbolHashes ¶
func ElfSymbolHashes(bin string) (SectionHashes, error)
ElfSymbolHashes returns a map of sha256 hashes per section per symbol contained in the elf file. It's best to call it on vmlinux.o since PCs in the binary code are not patched yet.