|  | 
|  | 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