ISO from the same build as the template: plan (decision 0052) #21
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Keel-Linux/buildtasks#21
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decision 0052: every release ships a
.tar.zstand a bootable.isofrom the same build. The boot layer this builds on is #20 (with Keel-Linux/common#47 and Keel-Linux/keel#89). The ISO builder is not implemented yet: this issue is the plan. Until it exists, testing pre-releases ship the.tar.zstonly (point 4).What exists today
share/product.mk) hascdrootandproduct.isotargets. They squashroot.patchedintolive/10root.squashfs, copy the kernel and initrd intolive/, and write the ISO with xorriso and isolinux, which boots under BIOS only. Arun-genisoimage-uefirecipe exists (-e efi.img -isohybrid-gpt-basdat), but nothing calls it and no cdroot contains anefi.img.gfxboot-turnkey,generic). There is no EFI tree.make product.iso, clicksnap screenshots and publishing to TurnKey's buckets. It knows nothing about layers, and Keel will not use it as it is.bin/iso-machine-id-checkcan be reused as it is./dev/kvmpresent. xorriso, mksquashfs, isohybrid and grub-mkrescue are installed. qemu-system-x86, ovmf, grub-efi-amd64-bin and the signed shim/grub are not.How the ISO is made from the same build
bt-layer --boot APPbuildsAPP-booton top of theAPPlayer that was just built (#20).APP-bootwith the other layers. It keyscans the tarball (release_refuse_key_files) and verifies it like any layer.keel assemble APP-boot --rootfs R, without--template. R is the template's rootfs plus the boot layer, with the kernel kept. The template comes from the same stagedAPPchain, and keel refuses it if it has a kernel.bt-iso-layer APP R, a thin wrapper over the fab recipes:mksquashfs R live/10root.squashfs -comp xz -no-sparse, with timestamps fixed toSOURCE_DATE_EPOCH;live/vmlinuzandlive/initrd.imgfromR/boot;isohdpfx.bin, from a newcdroots/keeltree;efi.imgFAT image withEFI/BOOT/BOOTX64.EFI= Debian'sshimx64.efi.signed,grubx64.efi.signedand agrub.cfgthat loads the live kernel. Secure Boot works with Debian's own signed chain, so no key of ours is needed.shim-signedandgrub-efi-amd64-signedjoinplans/keel-boot, so tkl-installer can install UEFI systems too;xorriso -as mkisofs ... -eltorito-alt-boot -e efi.img -isohybrid-gpt-basdatgives a hybrid ISO that boots from CD or USB under BIOS and UEFI.debian-13-keel-APP_VERSION_amd64.iso, next to the template.QEMU boot test (release gate)
qemu-system-x86andovmfon the build host, or on the dedicated runner VM if CI runs it.-serial stdio, and aconsole=ttyS0boot entry:OVMF_VARS_4M.ms.fd);Signing and keyscan
.sha512and.sha512.ascfrom the same signing step as the templates, and is listed in the release MANIFEST.APP-boot, is already scanned as a tarball;keyscanovertar -C R -cf - .beforemksquashfs, then check thatunsquashfs -llsof the squashfs in the ISO lists the same tree.bin/iso-machine-id-checkruns on the finished ISO.efi.imgand the cdroot hold only bootloaders and config. They are listed and checked for*.key, the same as everything else.How long it adds
Measured locally:
mksquashfs -comp xzof the 904 MB core rootfs with its kernel took 32 s on 24 threads and gave 383 MB. Estimates per appliance on the 8-core host:That is about 10-15 min per appliance. For the 13 appliances in
conf/appliancesit comes to about 2.5 h if run one after another, or about 1.5 h if the install check runs only for core and the live boots run for every appliance.Steps
cdroots/keel: isolinux menu plus a GRUB EFI tree.plans/keel-boot: add shim-signed and grub-efi-amd64-signed.bt-iso-layerand its tests (a small ISO, as tests/machine-id already does).APP-boot, assemble, the ISO, the gate, signing.