Documentation ¶
Index ¶
- func BootedFrom(runner v1.Runner, label string) bool
- func CalcFileChecksum(fs v1.FS, fileName string) (string, error)
- func ChrootedCallback(cfg *v1.Config, path string, bindMounts map[string]string, ...) error
- func ConcatFiles(fs v1.FS, sources []string, target string) (err error)
- func CopyFile(fs v1.FS, source string, target string) error
- func CosignVerify(fs v1.FS, runner v1.Runner, image string, publicKey string, debug bool) (string, error)
- func CreateDirStructure(fs v1.FS, target string) error
- func CreateRAWFile(fs v1.FS, filename string, size uint) error
- func CreateSquashFS(runner v1.Runner, logger v1.Logger, source string, destination string, ...) error
- func DirSize(fs v1.FS, path string) (int64, error)
- func DirSizeMB(fs v1.FS, path string) (uint, error)
- func Exists(fs v1.FS, path string) (bool, error)
- func FindFileWithPrefix(fs v1.FS, path string, prefixes ...string) (string, error)
- func GetAllPartitions() (v1.PartitionList, error)
- func GetDeviceByLabel(runner v1.Runner, label string, attempts int) (string, error)
- func GetFullDeviceByLabel(runner v1.Runner, label string, attempts int) (*v1.Partition, error)
- func GetPartitionFS(partition string) (string, error)
- func GetSource(config *v1.Config, source string, destination string) error
- func GetTempDir(config *v1.Config, suffix string) string
- func IdentifySourceSystem(vfs v1.FS, path string) (string, error)
- func IsDir(fs v1.FS, path string) (bool, error)
- func IsHTTPURI(uri string) (bool, error)
- func IsLocalURI(uri string) (bool, error)
- func IsMounted(config *v1.Config, part *v1.Partition) (bool, error)
- func LoadEnvFile(fs v1.FS, file string) (map[string]string, error)
- func MkdirAll(fs v1.FS, name string, mode os.FileMode) (err error)
- func RawDiskToFixedVhd(diskFile *os.File)
- func Reboot(runner v1.Runner, delay time.Duration) error
- func RunStage(cfg *v1.Config, stage string, strict bool, cloudInitPaths ...string) error
- func Shutdown(runner v1.Runner, delay time.Duration) error
- func SyncData(log v1.Logger, runner v1.Runner, fs v1.FS, source string, target string, ...) error
- func TempDir(fs v1.FS, dir, prefix string) (name string, err error)
- func TempFile(fs v1.FS, dir, pattern string) (f *os.File, err error)
- func ValidContainerReference(ref string) bool
- func ValidTaggedContainerReference(ref string) bool
- func WalkDirFs(fs v1.FS, root string, fn fs.WalkDirFunc) error
- type Chroot
- type CleanJob
- type CleanStack
- type Grub
- func (g Grub) ClearBootEntry() error
- func (g Grub) CreateBootEntry(shimName string, relativeTo string, efiVariables eleefi.Variables) error
- func (g Grub) DoEFIEntries(shimName, efiDir string, clearBootEntries bool) error
- func (g Grub) Install(target, rootDir, bootDir, grubConf string, efi bool, stateLabel string, ...) (err error)
- func (g Grub) InstallBIOS(target, rootDir, bootDir string) error
- func (g Grub) InstallConfig(rootDir, bootDir, grubConf string) error
- func (g Grub) InstallEFI(rootDir, bootDir, efiDir, deviceLabel string) (string, error)
- func (g Grub) SetPersistentVariables(grubEnvFile string, vars map[string]string) error
- type VHDHeader
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BootedFrom ¶
BootedFrom will check if we are booting from the given label
func CalcFileChecksum ¶
CalcFileChecksum opens the given file and returns the sha256 checksum of it.
func ChrootedCallback ¶
func ChrootedCallback(cfg *v1.Config, path string, bindMounts map[string]string, callback func() error) error
ChrootedCallback runs the given callback in a chroot environment
func ConcatFiles ¶
ConcatFiles Copies source files to target file using Fs interface. Source files are concatenated into target file in the given order. If target is a directory source is copied into that directory using 1st source name file. The result keeps the file mode of the 1st source.
func CopyFile ¶
CopyFile Copies source file to target file using Fs interface. If target is directory source is copied into that directory using source name file. File mode is preserved
func CosignVerify ¶
func CosignVerify(fs v1.FS, runner v1.Runner, image string, publicKey string, debug bool) (string, error)
CosignVerify runs a cosign validation for the give image and given public key. If no key is provided then it attempts a keyless validation (experimental feature).
func CreateDirStructure ¶
CreateDirStructure creates essentials directories under the root tree that might not be present within a container image (/dev, /run, etc.)
func CreateRAWFile ¶ added in v1.1.0
CreateRAWFile creates raw file of the given size in MB
func CreateSquashFS ¶
func CreateSquashFS(runner v1.Runner, logger v1.Logger, source string, destination string, options []string) error
CreateSquashFS creates a squash file at destination from a source, with options TODO: Check validity of source maybe?
func FindFileWithPrefix ¶
FindFileWithPrefix looks for a file in the given path matching one of the given prefixes. Returns the found file path including the given path. It does not check subfolders recusively
func GetAllPartitions ¶
func GetAllPartitions() (v1.PartitionList, error)
GetAllPartitions returns all partitions in the system for all disks
func GetDeviceByLabel ¶
GetDeviceByLabel will try to return the device that matches the given label. attempts value sets the number of attempts to find the device, it waits a second between attempts.
func GetFullDeviceByLabel ¶
GetFullDeviceByLabel works like GetDeviceByLabel, but it will try to get as much info as possible from the existing partition and return a v1.Partition object
func GetPartitionFS ¶
GetPartitionFS gets the FS of a partition given
func GetSource ¶
GetSource copies given source to destination, if source is a local path it simply copies files, if source is a remote URL it tries to download URL to destination.
func GetTempDir ¶
GetTempDir returns the dir for storing related temporal files It will respect TMPDIR and use that if exists, fallback to try the persistent partition if its mounted and finally the default /tmp/ dir suffix is what is appended to the dir name elemental-suffix. If empty it will randomly generate a number
func IdentifySourceSystem ¶
IdentifySourceSystem tries to find the os-release file in a given dir and identify the system based on the data in there
func IsHTTPURI ¶
IsHTTPURI returns true if the uri has "http" or "https" scheme, returns false otherwise. Error is not nil only if the url can't be parsed.
func IsLocalURI ¶
IsLocalURI returns true if the uri has "file" scheme or no scheme and URI is not prefixed with a domain (container registry style). Returns false otherwise. Error is not nil only if the url can't be parsed.
func LoadEnvFile ¶
LoadEnvFile will try to parse the file given and return a map with the kye/values
func RawDiskToFixedVhd ¶
RawDiskToFixedVhd will write the proper header to a given os.File to convert it from a simple raw disk to a Fixed VHD RawDiskToFixedVhd makes no effort into opening/closing/checking if the file exists
func SyncData ¶
func SyncData(log v1.Logger, runner v1.Runner, fs v1.FS, source string, target string, excludes ...string) error
SyncData rsync's source folder contents to a target folder content, both are expected to exist before hand.
func ValidContainerReference ¶
ValidContainerReferece returns true if the given string matches a container registry reference, false otherwise
func ValidTaggedContainerReference ¶
ValidTaggedContainerReferece returns true if the given string matches a container registry reference including a tag, false otherwise.
Types ¶
type Chroot ¶
type Chroot struct {
// contains filtered or unexported fields
}
Chroot represents the struct that will allow us to run commands inside a given chroot
func (*Chroot) Prepare ¶
Prepare will mount the defaultMounts as bind mounts, to be ready when we run chroot
func (*Chroot) RunCallback ¶
RunCallback runs the given callback in a chroot environment
func (*Chroot) SetExtraMounts ¶
Sets additional bind mounts for the chroot enviornment. They are represented in a map where the key is the path outside the chroot and the value is the path inside the chroot.
type CleanStack ¶
type CleanStack struct {
// contains filtered or unexported fields
}
Stack is a basic LIFO stack that resizes as needed.
func (*CleanStack) Cleanup ¶
func (clean *CleanStack) Cleanup(err error) error
Cleanup runs the whole cleanup stack. In case of error it runs all jobs and returns the first error occurrence.
func (*CleanStack) Pop ¶
func (clean *CleanStack) Pop() CleanJob
Pop removes and returns a node from the stack in last to first order.
type Grub ¶
type Grub struct {
// contains filtered or unexported fields
}
Grub is the struct that will allow us to install grub to the target device
func (Grub) ClearBootEntry ¶
ClearBootEntry will go over the BootXXXX efi vars and remove any that matches our name Used in install as we re-create the partitions, so the UUID of those partitions is no longer valid for the old entry And we don't want to leave a broken entry around
func (Grub) CreateBootEntry ¶
func (g Grub) CreateBootEntry(shimName string, relativeTo string, efiVariables eleefi.Variables) error
CreateBootEntry will create an entry in the efi vars for our shim and set it to boot first in the bootorder
func (Grub) DoEFIEntries ¶
DoEFIEntries creates clears any previous entry if requested and creates a new one with the given shim name.
func (Grub) Install ¶
func (g Grub) Install(target, rootDir, bootDir, grubConf string, efi bool, stateLabel string, disableBootEntry bool, clearBootEntries bool) (err error)
Install installs grub into the device, copy the config file and add any extra TTY to grub
func (Grub) InstallBIOS ¶
InstallBIOS runs grub2-install for legacy BIOS firmware
func (Grub) InstallConfig ¶
InstallConfig installs grub configuraton files to the expected location. rootDir is the root of the OS image, bootDir is the folder grub read the configuration from, usually state partition mountpoint
func (Grub) InstallEFI ¶
InstallEFI installs EFI binaries into the EFI location
type VHDHeader ¶
type VHDHeader struct { Cookie [8]byte // Cookies are used to uniquely identify the original creator of the hard disk image Features [4]byte // This is a bit field used to indicate specific feature support. // Can be 0x00000000 (no features), 0x00000001 (Temporary, candidate for deletion on shutdown) or 0x00000002 (Reserved) FileFormatVersion [4]byte // Divided into a major/minor version and matches the version of the specification used in creating the file. DataOffset [8]byte // For fixed disks, this field should be set to 0xFFFFFFFF. Timestamp [4]byte // Sstores the creation time of a hard disk image. This is the number of seconds since January 1, 2000 12:00:00 AM in UTC/GMT. CreatorApplication [4]byte // Used to document which application created the hard disk. CreatorVersion [4]byte // This field holds the major/minor version of the application that created the hard disk image. CreatorHostOS [4]byte // This field stores the type of host operating system this disk image is created on. OriginalSize [8]byte // This field stores the size of the hard disk in bytes, from the perspective of the virtual machine, at creation time. Info only CurrentSize [8]byte // This field stores the current size of the hard disk, in bytes, from the perspective of the virtual machine. DiskGeometry [4]byte // This field stores the cylinder, heads, and sectors per track value for the hard disk. DiskType [4]byte // Fixed = 2, Dynamic = 3, Differencing = 4 Checksum [4]byte // This field holds a basic checksum of the hard disk footer. It is just a one’s complement of the sum of all the bytes in the footer without the checksum field. UniqueID [16]byte // This is a 128-bit universally unique identifier (UUID). SavedState [1]byte // This field holds a one-byte flag that describes whether the system is in saved state. If the hard disk is in the saved state the value is set to 1 Reserved [427]byte // This field contains zeroes. }