#!/bin/sh

ROOTDIR=/var/lib/tiu/root

device=
while getopts ":d:o:" arg
do
    case $arg in
	d)
	    device="$OPTARG"
	    ;;
	o)
	    logfile="$OPTARG"
	    ;;
	?)
	    printf "Usage: %s: -d device -o logfile\n" "$0"
            exit 2
	    ;;
    esac
done

. $(dirname $0)/logging

if [ -z "$device" ]; then
    printf "Usage: %s: -d device -o logfile\n" "$0"
    exit 2
fi

# We need some files outside /usr
# /etc/grub.d contains scripts which belongs to /usr/libexec
run "cp -av ${ROOTDIR}/usr/share/factory/etc/grub.d ${ROOTDIR}/etc/"
# Create input variables for grub.cfg
run "mkdir -p ${ROOTDIR}/etc/default"
run "cp -av ${ROOTDIR}/usr/share/factory/etc/default/grub ${ROOTDIR}/etc/default/grub"

# Install the kernel
for i in "${ROOTDIR}"/usr/lib/modules/* ; do
    KVER=$(basename "$i")
    for f in .vmlinuz.hmac System.map sysctl.conf vmlinuz; do
        run "cp -a \"${ROOTDIR}/usr/lib/modules/$KVER/$f\" \"${ROOTDIR}/boot/$f-$KVER\""
    done
    run "chroot ${ROOTDIR} dracut --kver \"$KVER\""
done

# we need /etc/os-release already now
run "ln -sf ../usr/lib/os-release ${ROOTDIR}/etc/os-release"
run "sed -i -e 's|GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT=\"rw quiet systemd.show_status=1 mitigations=auto \\\\\$ignition_firstboot\"|g' ${ROOTDIR}/etc/default/grub"
run "echo -e 'SUSE_BTRFS_SNAPSHOT_BOOTING=\"true\"\nGRUB_DISABLE_OS_PROBER=\"true\"' >> ${ROOTDIR}/etc/default/grub"
if [ -d /sys/firmware/efi ]; then
	run "echo 'LOADER_TYPE=\"grub2-efi\"' > ${ROOTDIR}/etc/sysconfig/bootloader"
	run "echo 'SECURE_BOOT=\"yes\"' >> ${ROOTDIR}/etc/sysconfig/bootloader"
else
	run "echo 'LOADER_TYPE=\"grub2\"' > ${ROOTDIR}/etc/sysconfig/bootloader"
fi
run "echo -e \"${device}\nactivate\" > ${ROOTDIR}/etc/default/grub_installdevice"
run "chroot ${ROOTDIR} pbl --config --install"
