|
| 1 | +FROM quay.io/fedora/fedora-bootc-base-uki:42 AS base |
| 2 | + |
| 3 | +FROM base as kernel |
| 4 | + |
| 5 | +ARG COMPOSEFS_FSVERITY |
| 6 | + |
| 7 | +RUN --mount=type=secret,id=key \ |
| 8 | + --mount=type=secret,id=cert <<EOF |
| 9 | + set -eux |
| 10 | + |
| 11 | + mkdir -p /etc/kernel /etc/dracut.conf.d |
| 12 | + { |
| 13 | + printf "composefs=${COMPOSEFS_FSVERITY} root=UUID=910678ff-f77e-4a7d-8d53-86f2ac47a823 rw" |
| 14 | + printf " selinux=1 enforcing=0 audit=0" |
| 15 | + printf " console=tty0 console=ttyS0,115000n" |
| 16 | + # printf " console=ttyS0,115000n rd.systemd.debug_shell=1 rd.systemd.default_debug_tty=tty0" |
| 17 | + printf "\n" |
| 18 | + } > /etc/kernel/cmdline |
| 19 | + |
| 20 | + rm -f "/etc/yum.repos.d/fedora-cisco-openh264.repo" |
| 21 | + dnf install -y systemd-ukify sbsigntools systemd-boot-unsigned |
| 22 | + |
| 23 | + kver=$(cd /usr/lib/modules && echo *) |
| 24 | + mkdir -p "/boot/EFI/Linux" |
| 25 | + mkdir -p "/boot/EFI/Linux/$kver.efi.extra.d" |
| 26 | + |
| 27 | + ukify build \ |
| 28 | + --linux "/usr/lib/modules/$kver/vmlinuz" \ |
| 29 | + --initrd "/usr/lib/modules/$kver/initramfs.img" \ |
| 30 | + --uname="${kver}" \ |
| 31 | + --cmdline "@/etc/kernel/cmdline" \ |
| 32 | + --os-release "@/etc/os-release" \ |
| 33 | + --signtool sbsign \ |
| 34 | + --secureboot-private-key "/run/secrets/key" \ |
| 35 | + --secureboot-certificate "/run/secrets/cert" \ |
| 36 | + --measure \ |
| 37 | + --json pretty \ |
| 38 | + --output "/boot/EFI/Linux/$kver.efi" |
| 39 | + |
| 40 | + ukify build \ |
| 41 | + --cmdline "ignition.firstboot ignition.platform.id=qemu" \ |
| 42 | + --signtool sbsign \ |
| 43 | + --secureboot-private-key "/run/secrets/key" \ |
| 44 | + --secureboot-certificate "/run/secrets/cert" \ |
| 45 | + --output "/boot/EFI/Linux/$kver.efi.extra.d/ignition.addon.efi" |
| 46 | + |
| 47 | + # ukify build \ |
| 48 | + # --cmdline "rd.luks.uuid=luks-8ec9cda3-6b77-45d7-bb56-a95cd9e83234" \ |
| 49 | + # --signtool sbsign \ |
| 50 | + # --secureboot-private-key "/run/secrets/key" \ |
| 51 | + # --secureboot-certificate "/run/secrets/cert" \ |
| 52 | + # --output "/boot/EFI/Linux/$kver.efi.extra.d/luks.addon.efi" |
| 53 | + |
| 54 | + sbsign \ |
| 55 | + --key "/run/secrets/key" \ |
| 56 | + --cert "/run/secrets/cert" \ |
| 57 | + "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" \ |
| 58 | + --output "/boot/systemd-bootx64.efi" |
| 59 | +EOF |
| 60 | + |
| 61 | +FROM base as final |
| 62 | + |
| 63 | +RUN --mount=type=bind,from=kernel,target=/_mount/kernel <<EOF |
| 64 | + kver=$(cd /usr/lib/modules && echo *) |
| 65 | + mkdir -p /boot/EFI/Linux |
| 66 | + # We put the UKI in /boot for now due to composefs verity not being the |
| 67 | + # same due to mtime of /usr/lib/modules being changed |
| 68 | + cp -r /_mount/kernel/boot/* /boot/ |
| 69 | +EOF |
| 70 | + |
| 71 | +FROM base as final-final |
| 72 | +COPY --from=final /boot /boot |
0 commit comments