Skip to content

Commit

Permalink
create_disk: Use bootupd to install uefi if configured
Browse files Browse the repository at this point in the history
See https://github.com/coreos/bootupd
and coreos/fedora-coreos-tracker#510

Basically in order to handle *updates*, bootupd also
takes care of installation.  For example this also generates a JSON
file with the versions.

In order to sanely "ratchet" this change, only use bootupd if
we find the ostree deployment is using it.
  • Loading branch information
cgwalters committed Sep 14, 2020
1 parent d1e79c3 commit 9efeb0a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 6 deletions.
26 changes: 20 additions & 6 deletions src/create_disk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,7 @@ fi
# be overridden below
bootloader_backend=none

# Helper to install UEFI on supported architectures
install_uefi() {
install_uefi_without_bootupd() {
# See also https://github.com/ostreedev/ostree/pull/1873#issuecomment-524439883
# In the future it'd be better to get this stuff out of the OSTree commit and
# change our build process to download+extract it separately.
Expand All @@ -351,7 +350,21 @@ install_uefi() {
done
)
done
}

install_uefi() {
if test -d ${deploy_root}/usr/lib/bootupd/updates; then
# https://github.com/coreos/fedora-coreos-tracker/issues/510
# See also https://github.com/ostreedev/ostree/pull/1873#issuecomment-524439883
/usr/libexec/bootupd install --src-root=${deploy_root} ${rootfs}
else
install_uefi_without_bootupd
fi
# We have a "static" grub config file that basically configures grub to look
# in the partition labeled "boot".
local target_efi="$rootfs/boot/efi"
local grubefi=$(find "${target_efi}/EFI/" -maxdepth 1 -type d | grep -v BOOT)
local vendor_id="${grubefi##*/}"
local vendordir="${target_efi}/EFI/${vendor_id}"
mkdir -p "${vendordir}"
cat > ${vendordir}/grub.cfg << 'EOF'
Expand All @@ -360,8 +373,10 @@ set prefix=($prefix)
configfile $prefix/grub2/grub.cfg
boot
EOF
}

# copy the grub config and any other files we might need
# copy the grub config and any other files we might need
install_grub_cfg() {
mkdir -p $rootfs/boot/grub2
cp -v $grub_script $rootfs/boot/grub2/grub.cfg
}
Expand All @@ -379,6 +394,7 @@ x86_64)
--boot-directory $rootfs/boot \
$disk
fi
install_grub_cfg
;;
aarch64)
# Our aarch64 is UEFI only.
Expand All @@ -387,9 +403,7 @@ aarch64)
ppc64le)
# to populate PReP Boot, i.e. support pseries
grub2-install --target=powerpc-ieee1275 --boot-directory $rootfs/boot --no-nvram "${disk}${PREPPN}"
mkdir -p $rootfs/boot/grub2
# copy the grub config and any other files we might need
cp $grub_script $rootfs/boot/grub2/grub.cfg
install_grub_cfg
;;
s390x)
bootloader_backend=zipl
Expand Down
2 changes: 2 additions & 0 deletions src/vmdeps.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ python3 python3-gobject-base buildah podman skopeo iptables iptables-libs

# luks
cryptsetup
# How we install/update bootloaders
bootupd
# filesystems/storage
gdisk xfsprogs e2fsprogs dosfstools btrfs-progs

0 comments on commit 9efeb0a

Please sign in to comment.