Documentation
¶
Overview ¶
This package is a small go "library" (read: exec wrapper) around the mksquashfs binary that provides some useful primitives.
Index ¶
- Constants
- func ConfirmExistingVerityDeviceHash(devicePath string, rootHash string) error
- func ExtractSingleSquash(squashFile string, extractDir string, storageType string) error
- func GenerateSquashfsMediaType(comp SquashfsCompression, verity VerityMetadata) string
- func GuestMount(squashFile string, mountpoint string) error
- func HostMount(squashfs string, mountpoint string, rootHash string) error
- func IsSquashfsMediaType(mediaType string) bool
- func MakeSquashfs(tempdir string, rootfs string, eps *ExcludePaths, verity VerityMetadata) (io.ReadCloser, string, string, error)
- func Mount(squashfs, mountpoint, rootHash string) error
- func Umount(mountpoint string) error
- type ExcludePaths
- type SquashfsCompression
- type VerityMetadata
Constants ¶
const ( BaseMediaTypeLayerSquashfs = "application/vnd.stacker.image.layer.squashfs" GzipCompression SquashfsCompression = "gzip" ZstdCompression SquashfsCompression = "zstd" VerityMetadataPresent VerityMetadata = true VerityMetadataMissing VerityMetadata = false )
const VerityRootHashAnnotation = "io.stackeroci.stacker.squashfs_verity_root_hash"
Variables ¶
This section is empty.
Functions ¶
func ExtractSingleSquash ¶
func GenerateSquashfsMediaType ¶
func GenerateSquashfsMediaType(comp SquashfsCompression, verity VerityMetadata) string
func GuestMount ¶
Mount a filesystem as container root, without host root privileges. We do this using squashfuse.
func IsSquashfsMediaType ¶
func MakeSquashfs ¶
func MakeSquashfs(tempdir string, rootfs string, eps *ExcludePaths, verity VerityMetadata) (io.ReadCloser, string, string, error)
Types ¶
type ExcludePaths ¶
type ExcludePaths struct {
// contains filtered or unexported fields
}
ExcludePaths represents a list of paths to exclude in a squashfs listing. Users should do something like filepath.Walk() over the whole filesystem, calling AddExclude() or AddInclude() based on whether they want to include or exclude a particular file. Note that if e.g. /usr is excluded, then everyting underneath is also implicitly excluded. The AddExclude()/AddInclude() methods do the math to figure out what is the correct set of things to exclude or include based on what paths have been previously included or excluded.
func NewExcludePaths ¶
func NewExcludePaths() *ExcludePaths
func (*ExcludePaths) AddExclude ¶
func (eps *ExcludePaths) AddExclude(p string)
func (*ExcludePaths) AddInclude ¶
func (eps *ExcludePaths) AddInclude(orig string, isDir bool)
func (*ExcludePaths) String ¶
func (eps *ExcludePaths) String() (string, error)
type SquashfsCompression ¶
type SquashfsCompression string
type VerityMetadata ¶
type VerityMetadata bool
func HasVerityMetadata ¶
func HasVerityMetadata(mediaType string) VerityMetadata