github.com/jlowellwofford/u-root@v1.0.0/pkg/boot/boot.go (about)

     1  // Copyright 2018 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package boot
     6  
     7  import (
     8  	"log"
     9  
    10  	"github.com/u-root/u-root/pkg/cpio"
    11  )
    12  
    13  // OSImage represents a bootable OS package.
    14  type OSImage interface {
    15  	// ExecutionInfo prints information about the OS image. A user should
    16  	// be able to use the kexec command line tool to execute the OSImage
    17  	// given the printed information.
    18  	ExecutionInfo(log *log.Logger)
    19  
    20  	// Execute kexec's the OS image: it loads the OS image into memory and
    21  	// jumps to the kernel's entry point.
    22  	Execute() error
    23  
    24  	// Pack writes the OS image to the modules directory of sw and the
    25  	// package type to package_type of sw.
    26  	Pack(sw cpio.RecordWriter) error
    27  }
    28  
    29  var (
    30  	osimageMap = map[string]func(*cpio.Archive) (OSImage, error){
    31  		"linux": func(a *cpio.Archive) (OSImage, error) {
    32  			return NewLinuxImageFromArchive(a)
    33  		},
    34  		"multiboot": newMultibootImage,
    35  	}
    36  )