Re: F38 proposal: Unified Kernel Support Phase 1 (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From the point of view of the workstation experience (with a laptop),
I see no discussion on how this may impact hibernation. Currently, I
have secure boot disabled essentially because I want my laptop to
automatically hibernate (and recover from that state) whenever it is
suspended for a number of hours. I would like to see a path forward
here with secure boot enabled.

Thanks,
Iñaki

On Tue, 20 Dec 2022 at 16:22, Ben Cotton <bcotton@xxxxxxxxxx> wrote:
>
> https://fedoraproject.org/wiki/Changes/Unified_Kernel_Support_Phase_1
>
> This document represents a proposed Change. As part of the Changes
> process, proposals are publicly announced in order to receive
> community feedback. This proposal will only be implemented if approved
> by the Fedora Engineering Steering Committee.
>
>
> == Summary ==
> Add support for unified kernels images to Fedora.
>
> == Owner ==
> * Name: [[User:kraxel| Gerd Hoffmann]]
> * Email: kraxel@xxxxxxxxxx
>
>
> == Detailed Description ==
> The goal is to move away from initrd images being generated on the
> installed machine.  They are generated while building the kernel
> package instead, then shipped as part of a unified kernel image.
>
> A unified kernel image is an all-in-one efi binary containing kernel,
> initrd, cmdline and signature.  The secure boot signature covers
> everything, specifically the initrd is included which is not the case
> when the initrd gets loaded as separate file from /boot.
>
> Main motivation for this move is to make the distro more robust and more secure.
>
> Switching the whole distro over to unified kernels quickly is not
> realistic though.  Too many features are depending on the current
> workflow with a host-specific initrd (and host-specific kernel command
> line), which is fundamentally incompatible with unified kernels where
> everybody will have the same initrd and command line. Thats why there
> is 'Phase 1' in title, so we can have more Phases in future releases
> 😃
>
> A host-specific initrd / command line is needed today for:
>
> * features needing optional dracut modules (initrd rebuild needed to
> enable them).
> * configuration / secrets baked into the initrd (booting from iscsi
> for example).
> * configuration being specified on the kernel command line.
> ** root filesystem being the most important one.
> [https://systemd.io/DISCOVERABLE_PARTITIONS/ Discoverable partitions]
> allow to remove this.
>
> Phase 1 goals (high priority):
>
> * Ship a unified kernel image as (optional) kernel sub-rpm.  Users can
> opt-in to use that kernel by installing the sub-rpm.  Initial focus is
> on booting virtual machines where we have a relatively small and well
> defined set of drivers / features needed.  Supporting modern physical
> machines with standard setup (i.e. boot from local sata/nvme storage)
> too should be easy.
> * Update kernel install scripts so unified kernels are installed and
> updated properly.
> * Add bootloader support for unified kernel images.  Add
> [https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images
> unified kernel bls support] to grub2, or support using systemd-boot,
> or both.
>
> Phase 1 goals (lower priority, might move to Phase 2):
>
> * Add proper discoverable partitions support to installers (anaconda,
> image builder, ...).
> ** Temporary workaround possible: set types using sfdisk in %post script.
> ** When using btrfs: configure 'root' subvolume as default volume.
> * Add proper systemd-boot support to installers.
> ** Temporary workaround possible: run 'bootctl install' in %post script.
> * Better measurement and remote attestation support.
> ** store kernel + initrd hashes somewhere (kernel-hashes.rpm ?) to
> allow pre-calculate TPM PCR values.
> ** avoid using grub2 (measures every config file line executed which
> is next to impossible to pre-calculate).
> * Switch cloud images to use unified kernels.
>
> Phase 2/3 goals (longer-term stuff which is not realistic to complete for F38).
>
> * Move away from using the kernel command line for configuration.
> * Move away from storing secrets in the initrd.
> * Handle dracut optional modules in a different way.
>
> systemd has some building blocks which can be used, although none of
> them are used by fedora today.
> [https://www.freedesktop.org/software/systemd/man/systemd-creds.html
> systemd credentials] can be used for secrets (also for configuration).
> The [https://www.freedesktop.org/software/systemd/man/systemd-stub.html
> unified kernel stub] can load credentials from the ESP.
>
> The unified kernel stub can also load
> [https://www.freedesktop.org/software/systemd/man/systemd-sysext.html
> extensions] from the ESP, which can possibly be used to replace
> optional dracut modules.
>
> == Feedback ==
>
>
> == Benefit to Fedora ==
> * Better secure boot support (specifically the initrd is covered by
> the signature).
> * Better confidential computing support (measurements are much more
> useful if we know what hashes to expect for the initrd).
> * More robust boot process (generating the initrd on the installed
> system is fragile, root cause for kernel bugs reported is simply a
> broken initrd sometimes).
>
> == Scope ==
> * Proposal owners:
> ** Update kernel build to create unified kernel sub-package.
> *** part one: [https://gitlab.com/cki-project/kernel-ark/-/merge_requests/2179
> PR#2179]
> *** part two: (wip)
> [https://gitlab.com/kraxel/kernel-ark/-/commits/unified/
> https://gitlab.com/kraxel/kernel-ark/-/commits/unified/]
>
> * Other developers:
> ** grub2: add unified kernel support
> *** wip code at [https://github.com/osteffenrh/grub2/
> https://github.com/osteffenrh/grub2/]
> ** installer(s): add support for discoverable partitions.
> *** [https://bugzilla.redhat.com/show_bug.cgi?id=1075288 Bug#1075288]
>
> * Release engineering: [https://pagure.io/releng/issues #Releng issue number]
> * Policies and guidelines: N/A (not needed for this Change)
> * Trademark approval: N/A (not needed for this Change)
> * Alignment with Objectives:
>
>
> == Upgrade/compatibility impact ==
>
> None (using unified kernel is opt-in for Phase 1).
>
> == How To Test ==
> Try on a existing (uefi) system:
> * make sure you are running fedora 37 or rawhide.
> * make sure your root filesystem has type "Linux root (x86-64)" (use
> `fdisk -l` to check).
> ** should that not be the case use the fdisk tag command ('t') to
> change the partition type.
> * when using btrfs: make sure the 'root' subvolume is set as default volume.
> * `dnf copr enable kraxel/unified.kernel`
> * `dnf update "grub2*"`
> * `dnf install kernel-unified-virt`
> * `reboot`
> You should find two entries in the grub2 boot menu, one for classing
> kernel with separate initrd and one for the unified kernel image.
> Both should boot fine.
>
> The https://gitlab.com/kraxel/fedora-uki project has kickstart files
> and helper scripts for generating virtual machine images.
> * image using grub2-efi:
> https://gitlab.com/kraxel/fedora-uki/-/raw/master/kickstart/fedora-uki-grub2.ks
> * image using systemd-boot:
> https://gitlab.com/kraxel/fedora-uki/-/raw/master/kickstart/fedora-uki-sdboot.ks
>
> Prebuilt virtual machine images are available from
> https://www.kraxel.org/fedora-uki/.
>
> == User Experience ==
>
>
> == Dependencies ==
>
>
> == Contingency Plan ==
> * Contingency mechanism:
> ** Probably none (unified kernel images are opt-in for Phase 1).
> ** In case we tried switching the cloud images to unified kernels:
> revert the kickstart config changes.
> * Contingency deadline:
> * Blocks release? No
>
> == Documentation ==
>
>
> == Release Notes ==
>
>
>
> --
> Ben Cotton
> He / Him / His
> Fedora Program Manager
> Red Hat
> TZ=America/Indiana/Indianapolis
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
> Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue



-- 
Iñaki Úcar
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux