Bootloader ISO EFI Support
parent
c3ea9c298c
commit
694c9cc0ef
|
@ -0,0 +1,7 @@
|
|||
set default="0"
|
||||
set timeout="1"
|
||||
|
||||
menuentry "Buildroot" {
|
||||
linux __KERNEL_PATH__ root=/dev/sr0 console=ttyS0,115200
|
||||
initrd __INITRD_PATH__
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
BOARD_DIR=$(dirname "$0")
|
||||
|
||||
# Detect boot strategy, EFI or BIOS
|
||||
if [ -d "$BINARIES_DIR/efi-part/" ]; then
|
||||
cp -f "$BOARD_DIR/grub-efi.cfg" "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg"
|
||||
else
|
||||
cp -f "$BOARD_DIR/grub-bios.cfg" "$TARGET_DIR/boot/grub/grub.cfg"
|
||||
|
||||
# Copy grub 1st stage to binaries, required for genimage
|
||||
cp -f "$TARGET_DIR/lib/grub/i386-pc/boot.img" "$BINARIES_DIR"
|
||||
fi
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
UUID=$(dumpe2fs "$BINARIES_DIR/rootfs.ext2" 2>/dev/null | sed -n 's/^Filesystem UUID: *\(.*\)/\1/p')
|
||||
sed -i "s/UUID_TMP/$UUID/g" "$BINARIES_DIR/efi-part/EFI/BOOT/grub.cfg"
|
||||
sed "s/UUID_TMP/$UUID/g" board/pc/genimage-efi.cfg > "$BINARIES_DIR/genimage-efi.cfg"
|
||||
support/scripts/genimage.sh -c "$BINARIES_DIR/genimage-efi.cfg"
|
|
@ -0,0 +1,42 @@
|
|||
# Architecture
|
||||
BR2_x86_64=y
|
||||
|
||||
# Toolchain
|
||||
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
|
||||
|
||||
# System
|
||||
BR2_SYSTEM_DHCP="eth0"
|
||||
|
||||
# Required tools to create bootable media
|
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_MTOOLS=y
|
||||
|
||||
# Bootloader
|
||||
BR2_TARGET_GRUB2=y
|
||||
BR2_TARGET_GRUB2_X86_64_EFI=y
|
||||
BR2_TARGET_GRUB2_BUILTIN_CONFIG="$(BR2_EXTERNAL_minimal_PATH)/board/iso/x86_64/grub-stub.cfg"
|
||||
BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop udf iso9660 search search_fs_file search_fs_uuid search_label"
|
||||
|
||||
# Filesystem / image
|
||||
BR2_TARGET_ROOTFS_CPIO=y
|
||||
BR2_TARGET_ROOTFS_CPIO_GZIP=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_minimal_PATH)/board/iso/x86_64/post-build.sh"
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_minimal_PATH)/board/iso/x86_64/post-image.sh"
|
||||
BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_minimal_PATH)/board/iso/x86_64/genimage.cfg"
|
||||
|
||||
# Linux headers same as kernel, a 4.19 series
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||
|
||||
# Kernel
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.182"
|
||||
BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
|
||||
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
|
||||
|
||||
BR2_CCACHE=y
|
||||
|
||||
# Packages
|
||||
BR2_PACKAGE_ACPID=y
|
|
@ -1,21 +1,37 @@
|
|||
# Configure building the minikube ISO.
|
||||
|
||||
# Architecture
|
||||
BR2_x86_64=y
|
||||
|
||||
BR2_CCACHE=y
|
||||
BR2_OPTIMIZE_2=y
|
||||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/patches"
|
||||
BR2_TOOLCHAIN_BUILDROOT_VENDOR="minikube"
|
||||
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||
|
||||
# Tool chain
|
||||
BR2_TOOLCHAIN_BUILDROOT_CXX=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_VENDOR="minikube"
|
||||
|
||||
# System
|
||||
BR2_SYSTEM_BIN_SH_BASH=y
|
||||
|
||||
BR2_GCC_ENABLE_LTO=y
|
||||
BR2_INIT_SYSTEMD=y
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||
|
||||
BR2_TARGET_GENERIC_HOSTNAME="minikube"
|
||||
BR2_TARGET_GENERIC_ISSUE="Welcome to minikube"
|
||||
BR2_TARGET_GENERIC_PASSWD_SHA512=y
|
||||
BR2_INIT_SYSTEMD=y
|
||||
BR2_ROOTFS_DEVICE_TABLE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/permissions"
|
||||
BR2_SYSTEM_BIN_SH_BASH=y
|
||||
|
||||
# Filesystem / image
|
||||
# BR2_TARGET_GENERIC_GETTY is not set
|
||||
BR2_ROOTFS_DEVICE_TABLE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/permissions"
|
||||
BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/users"
|
||||
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/rootfs-overlay"
|
||||
BR2_TARGET_ROOTFS_CPIO_GZIP=y
|
||||
BR2_TARGET_ROOTFS_ISO9660=y
|
||||
|
||||
# Linux Kernel
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.202"
|
||||
|
@ -23,40 +39,40 @@ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
|||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_LZ4=y
|
||||
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
|
||||
BR2_PACKAGE_GZIP=y
|
||||
BR2_PACKAGE_XZ=y
|
||||
BR2_PACKAGE_STRACE=y
|
||||
BR2_PACKAGE_SYSDIG=y
|
||||
BR2_PACKAGE_FINDUTILS=y
|
||||
BR2_PACKAGE_GIT=y
|
||||
BR2_PACKAGE_CIFS_UTILS=y
|
||||
BR2_PACKAGE_E2TOOLS=y
|
||||
BR2_PACKAGE_NFS_UTILS=y
|
||||
BR2_PACKAGE_SSHFS=y
|
||||
BR2_PACKAGE_XFSPROGS=y
|
||||
BR2_PACKAGE_PARTED=y
|
||||
BR2_PACKAGE_SYSSTAT=y
|
||||
BR2_PACKAGE_LUAJIT=y
|
||||
BR2_PACKAGE_LZ4=y
|
||||
BR2_PACKAGE_LZ4_PROGS=y
|
||||
BR2_PACKAGE_CA_CERTIFICATES=y
|
||||
BR2_PACKAGE_LIBOPENSSL_BIN=y
|
||||
BR2_PACKAGE_LIBCURL_CURL=y
|
||||
|
||||
# Packages
|
||||
BR2_PACKAGE_ACL=y
|
||||
BR2_PACKAGE_BRIDGE_UTILS=y
|
||||
BR2_PACKAGE_CA_CERTIFICATES=y
|
||||
BR2_PACKAGE_CIFS_UTILS=y
|
||||
BR2_PACKAGE_CONNTRACK_TOOLS=y
|
||||
BR2_PACKAGE_COREUTILS=y
|
||||
BR2_PACKAGE_E2TOOLS=y
|
||||
BR2_PACKAGE_EBTABLES=y
|
||||
BR2_PACKAGE_ETHTOOL=y
|
||||
BR2_PACKAGE_FINDUTILS=y
|
||||
BR2_PACKAGE_GIT=y
|
||||
BR2_PACKAGE_GZIP=y
|
||||
BR2_PACKAGE_HTOP=y
|
||||
BR2_PACKAGE_IPROUTE2=y
|
||||
BR2_PACKAGE_IPTABLES=y
|
||||
BR2_PACKAGE_RSYNC=y
|
||||
BR2_PACKAGE_SOCAT=y
|
||||
BR2_PACKAGE_SUDO=y
|
||||
BR2_PACKAGE_ACL=y
|
||||
BR2_PACKAGE_COREUTILS=y
|
||||
BR2_PACKAGE_HTOP=y
|
||||
BR2_PACKAGE_LIBCURL_CURL=y
|
||||
BR2_PACKAGE_LIBOPENSSL_BIN=y
|
||||
BR2_PACKAGE_LUAJIT=y
|
||||
BR2_PACKAGE_LZ4_PROGS=y
|
||||
BR2_PACKAGE_LZ4=y
|
||||
BR2_PACKAGE_NFS_UTILS=y
|
||||
BR2_PACKAGE_OPENVMTOOLS=y
|
||||
BR2_PACKAGE_PARTED=y
|
||||
BR2_PACKAGE_PROCPS_NG=y
|
||||
BR2_PACKAGE_PSMISC=y
|
||||
BR2_PACKAGE_RSYNC=y
|
||||
BR2_PACKAGE_SOCAT=y
|
||||
BR2_PACKAGE_SSHFS=y
|
||||
BR2_PACKAGE_STRACE=y
|
||||
BR2_PACKAGE_SUDO=y
|
||||
BR2_PACKAGE_SYSDIG=y
|
||||
BR2_PACKAGE_SYSSTAT=y
|
||||
BR2_PACKAGE_SYSTEMD_LOGIND=y
|
||||
BR2_PACKAGE_SYSTEMD_MACHINED=y
|
||||
BR2_PACKAGE_TAR=y
|
||||
|
@ -65,9 +81,50 @@ BR2_PACKAGE_UTIL_LINUX_LOSETUP=y
|
|||
BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y
|
||||
BR2_PACKAGE_UTIL_LINUX_NSENTER=y
|
||||
BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS=y
|
||||
BR2_TARGET_ROOTFS_CPIO_GZIP=y
|
||||
BR2_TARGET_ROOTFS_ISO9660=y
|
||||
BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/isolinux.cfg"
|
||||
BR2_PACKAGE_XFSPROGS=y
|
||||
BR2_PACKAGE_XZ=y
|
||||
|
||||
|
||||
# Tricky part is to figure out isolinux.
|
||||
# Replace with grub.cfg.
|
||||
# BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/isolinux.cfg"
|
||||
|
||||
BR2_TARGET_SYSLINUX=y
|
||||
BR2_PACKAGE_HOST_E2TOOLS=y
|
||||
BR2_PACKAGE_HOST_PYTHON=y
|
||||
|
||||
# ===
|
||||
|
||||
# Anders' diff from bios to efi boot.
|
||||
# --- pc_x86_64_bios_defconfig 2021-12-04 14:32:29.058592857 +0100
|
||||
# +++ pc_x86_64_efi_defconfig 2021-12-04 14:32:29.058592857 +0100
|
||||
|
||||
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
|
||||
|
||||
# Required tools to create bootable media
|
||||
# (The actual boot partition is a DOS disk, that's why the extra tools)
|
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y # +efi
|
||||
BR2_PACKAGE_HOST_GENIMAGE=y
|
||||
BR2_PACKAGE_HOST_MTOOLS=y # +efi
|
||||
|
||||
# Bootloader
|
||||
# (For minikube, we also need to replace "isolinux" with "grub2")
|
||||
BR2_TARGET_GRUB2=y
|
||||
BR2_TARGET_GRUB2_X86_64_EFI=y # +efi
|
||||
|
||||
# Filesystem / image
|
||||
BR2_TARGET_ROOTFS_EXT2=y
|
||||
BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
|
||||
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
# -BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
|
||||
# -BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg"
|
||||
|
||||
# Maybe we do not need this post-build script?
|
||||
BR2_ROOTFS_POST_BUILD_SCRIPT="board/pc/post-build.sh"
|
||||
|
||||
# What does this do and do we need it?
|
||||
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image-efi.sh" # +efi
|
||||
|
||||
# Linux headers same as kernel, a 4.19 series
|
||||
# BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y # already in mk.
|
|
@ -0,0 +1,73 @@
|
|||
BR2_x86_64=y
|
||||
BR2_CCACHE=y
|
||||
BR2_OPTIMIZE_2=y
|
||||
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/patches"
|
||||
BR2_TOOLCHAIN_BUILDROOT_VENDOR="minikube"
|
||||
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
|
||||
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y
|
||||
BR2_TOOLCHAIN_BUILDROOT_CXX=y
|
||||
BR2_GCC_ENABLE_LTO=y
|
||||
BR2_TARGET_GENERIC_HOSTNAME="minikube"
|
||||
BR2_TARGET_GENERIC_ISSUE="Welcome to minikube"
|
||||
BR2_TARGET_GENERIC_PASSWD_SHA512=y
|
||||
BR2_INIT_SYSTEMD=y
|
||||
BR2_ROOTFS_DEVICE_TABLE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/permissions"
|
||||
BR2_SYSTEM_BIN_SH_BASH=y
|
||||
# BR2_TARGET_GENERIC_GETTY is not set
|
||||
BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/users"
|
||||
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/rootfs-overlay"
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.202"
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/linux_defconfig"
|
||||
BR2_LINUX_KERNEL_LZ4=y
|
||||
BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
|
||||
BR2_PACKAGE_GZIP=y
|
||||
BR2_PACKAGE_XZ=y
|
||||
BR2_PACKAGE_STRACE=y
|
||||
BR2_PACKAGE_SYSDIG=y
|
||||
BR2_PACKAGE_FINDUTILS=y
|
||||
BR2_PACKAGE_GIT=y
|
||||
BR2_PACKAGE_CIFS_UTILS=y
|
||||
BR2_PACKAGE_E2TOOLS=y
|
||||
BR2_PACKAGE_NFS_UTILS=y
|
||||
BR2_PACKAGE_SSHFS=y
|
||||
BR2_PACKAGE_XFSPROGS=y
|
||||
BR2_PACKAGE_PARTED=y
|
||||
BR2_PACKAGE_SYSSTAT=y
|
||||
BR2_PACKAGE_LUAJIT=y
|
||||
BR2_PACKAGE_LZ4=y
|
||||
BR2_PACKAGE_LZ4_PROGS=y
|
||||
BR2_PACKAGE_CA_CERTIFICATES=y
|
||||
BR2_PACKAGE_LIBOPENSSL_BIN=y
|
||||
BR2_PACKAGE_LIBCURL_CURL=y
|
||||
BR2_PACKAGE_BRIDGE_UTILS=y
|
||||
BR2_PACKAGE_CONNTRACK_TOOLS=y
|
||||
BR2_PACKAGE_EBTABLES=y
|
||||
BR2_PACKAGE_ETHTOOL=y
|
||||
BR2_PACKAGE_IPROUTE2=y
|
||||
BR2_PACKAGE_IPTABLES=y
|
||||
BR2_PACKAGE_RSYNC=y
|
||||
BR2_PACKAGE_SOCAT=y
|
||||
BR2_PACKAGE_SUDO=y
|
||||
BR2_PACKAGE_ACL=y
|
||||
BR2_PACKAGE_COREUTILS=y
|
||||
BR2_PACKAGE_HTOP=y
|
||||
BR2_PACKAGE_OPENVMTOOLS=y
|
||||
BR2_PACKAGE_PROCPS_NG=y
|
||||
BR2_PACKAGE_PSMISC=y
|
||||
BR2_PACKAGE_SYSTEMD_LOGIND=y
|
||||
BR2_PACKAGE_SYSTEMD_MACHINED=y
|
||||
BR2_PACKAGE_TAR=y
|
||||
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
|
||||
BR2_PACKAGE_UTIL_LINUX_LOSETUP=y
|
||||
BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y
|
||||
BR2_PACKAGE_UTIL_LINUX_NSENTER=y
|
||||
BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS=y
|
||||
BR2_TARGET_ROOTFS_CPIO_GZIP=y
|
||||
BR2_TARGET_ROOTFS_ISO9660=y
|
||||
BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/isolinux.cfg"
|
||||
BR2_TARGET_SYSLINUX=y
|
||||
BR2_PACKAGE_HOST_E2TOOLS=y
|
||||
BR2_PACKAGE_HOST_PYTHON=y
|
|
@ -426,7 +426,7 @@ func (d *Driver) extractKernel(isoPath string) error {
|
|||
}{
|
||||
{"/boot/bzimage", "bzimage"},
|
||||
{"/boot/initrd", "initrd"},
|
||||
{"/isolinux/isolinux.cfg", "isolinux.cfg"},
|
||||
{"/grub/grub.cfg", "grub.cfg"},
|
||||
} {
|
||||
fullDestPath := d.ResolveStorePath(f.destPath)
|
||||
if err := ExtractFile(isoPath, f.pathInIso, fullDestPath); err != nil {
|
||||
|
|
Loading…
Reference in New Issue