enki/pkg/constants/constants.go
Dimitris Karakasilis e195fa0d62
Change default system console to tty1
because when 2 are defined, it seems that the last one becomes the
"default", at least as far as systemd is concerned.

This should allow us to read the kairos logs using journalctl.

See more here: https://github.com/kairos-io/packages/pull/544

Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me>
2023-11-22 09:16:16 +02:00

125 lines
6.0 KiB
Go

package constants
import (
"fmt"
"os"
"path/filepath"
)
const (
GrubDefEntry = "Kairos"
EfiLabel = "COS_GRUB"
ISOLabel = "COS_LIVE"
MountBinary = "/usr/bin/mount"
EfiFs = "vfat"
IsoRootFile = "rootfs.squashfs"
IsoEFIPath = "/boot/uefi.img"
BuildImgName = "elemental"
EfiBootPath = "/EFI/BOOT"
GrubEfiImagex86 = "/usr/share/grub2/x86_64-efi/grub.efi"
GrubEfiImageArm64 = "/usr/share/grub2/arm64-efi/grub.efi"
GrubEfiImagex86Dest = EfiBootPath + "/bootx64.efi"
GrubEfiImageArm64Dest = EfiBootPath + "/bootaa64.efi"
GrubCfg = "grub.cfg"
GrubPrefixDir = "/boot/grub2"
GrubEfiCfg = "search --no-floppy --file --set=root " + IsoKernelPath +
"\nset prefix=($root)" + GrubPrefixDir +
"\nconfigfile $prefix/" + GrubCfg
GrubFont = "/usr/share/grub2/unicode.pf2"
GrubBootHybridImg = "/usr/share/grub2/i386-pc/boot_hybrid.img"
SyslinuxFiles = "/usr/share/syslinux/isolinux.bin " +
"/usr/share/syslinux/menu.c32 " +
"/usr/share/syslinux/chain.c32 " +
"/usr/share/syslinux/mboot.c32"
IsoLoaderPath = "/boot/x86_64/loader"
GrubCfgTemplate = `search --no-floppy --file --set=root /boot/kernel
set default=0
set timeout=10
set timeout_style=menu
set linux=linux
set initrd=initrd
if [ "${grub_cpu}" = "x86_64" -o "${grub_cpu}" = "i386" -o "${grub_cpu}" = "arm64" ];then
if [ "${grub_platform}" = "efi" ]; then
if [ "${grub_cpu}" != "arm64" ]; then
set linux=linuxefi
set initrd=initrdefi
fi
fi
fi
if [ "${grub_platform}" = "efi" ]; then
echo "Please press 't' to show the boot menu on this console"
fi
set font=($root)/boot/${grub_cpu}/loader/grub2/fonts/unicode.pf2
if [ -f ${font} ];then
loadfont ${font}
fi
menuentry "%s" --class os --unrestricted {
echo Loading kernel...
$linux ($root)/boot/kernel cdroot root=live:CDLABEL=%s rd.live.dir=/ rd.live.squashimg=rootfs.squashfs rd.live.overlay.overlayfs console=ttyS0 console=tty1 rd.cos.disable
echo Loading initrd...
$initrd ($root)/boot/initrd
}
if [ "${grub_platform}" = "efi" ]; then
hiddenentry "Text mode" --hotkey "t" {
set textmode=true
terminal_output console
}
fi`
GrubBiosTarget = "i386-pc"
GrubI386BinDir = "/usr/share/grub2/i386-pc"
GrubBiosImg = GrubI386BinDir + "/core.img"
GrubBiosCDBoot = GrubI386BinDir + "/cdboot.img"
GrubEltoritoImg = GrubI386BinDir + "/eltorito.img"
//TODO this list could be optimized
GrubModules = "ext2 iso9660 linux echo configfile search_label search_fs_file search search_fs_uuid " +
"ls normal gzio png fat gettext font minicmd gfxterm gfxmenu all_video xfs btrfs lvm luks " +
"gcry_rijndael gcry_sha256 gcry_sha512 crypto cryptodisk test true loadenv part_gpt " +
"part_msdos biosdisk vga vbe chain boot"
IsoHybridMBR = "/boot/x86_64/loader/boot_hybrid.img"
IsoBootCatalog = "/boot/x86_64/boot.catalog"
IsoBootFile = "/boot/x86_64/loader/eltorito.img"
// These paths are arbitrary but coupled to grub.cfg
IsoKernelPath = "/boot/kernel"
IsoInitrdPath = "/boot/initrd"
// Default directory and file fileModes
DirPerm = os.ModeDir | os.ModePerm
FilePerm = 0666
NoWriteDirPerm = 0555 | os.ModeDir
TempDirPerm = os.ModePerm | os.ModeSticky | os.ModeDir
ArchAmd64 = "amd64"
Archx86 = "x86_64"
ArchArm64 = "arm64"
)
// GetDefaultSquashfsOptions returns the default options to use when creating a squashfs
func GetDefaultSquashfsOptions() []string {
return []string{"-b", "1024k"}
}
func GetXorrisoBooloaderArgs(root string) []string {
args := []string{
"-boot_image", "grub", fmt.Sprintf("bin_path=%s", IsoBootFile),
"-boot_image", "grub", fmt.Sprintf("grub2_mbr=%s/%s", root, IsoHybridMBR),
"-boot_image", "grub", "grub2_boot_info=on",
"-boot_image", "any", "partition_offset=16",
"-boot_image", "any", fmt.Sprintf("cat_path=%s", IsoBootCatalog),
"-boot_image", "any", "cat_hidden=on",
"-boot_image", "any", "boot_info_table=on",
"-boot_image", "any", "platform_id=0x00",
"-boot_image", "any", "emul_type=no_emulation",
"-boot_image", "any", "load_size=2048",
"-append_partition", "2", "0xef", filepath.Join(root, IsoEFIPath),
"-boot_image", "any", "next",
"-boot_image", "any", "efi_path=--interval:appended_partition_2:all::",
"-boot_image", "any", "platform_id=0xef",
"-boot_image", "any", "emul_type=no_emulation",
}
return args
}