Loading...
// SPDX-License-Identifier: GPL-2.0+
/*
 * This contains the various components needed to boot Ubuntu 24.04 Desktop. It
 * provides a description of the process, similar to a grub.cfg file.
 */

&boot_ctl {
	compatible = "bootctl,ubuntu-desktop", "bootctl,logic";

	options {
		/* use persistent storage for variables */
		persist-state;

		/* store a default OS in the persistent storage */
		default-os;

		/* timeout in seconds before booting a default OS */
		timeout = <5>;

		/* skip timeout if boot was successful */
		skip-timeout-on-success;

		/* track boot success / failure in state */
		track-success;

		/* auto-boot the default OS after a timeout */
		// autoboot;

		/* measure loaded images, etc. */
#if !defined(CONFIG_QEMU) && !defined(CONFIG_EFI_APP)
		measure;
#endif

		/* use TKey for unlocking encrypted volumes */
#ifdef CONFIG_SANDBOX
		tkey;
#endif

		/* restrict labels to boot (separated by space) */
#ifdef CONFIG_QEMU
		labels = "virtio";
#endif
#ifdef CONFIG_SANDBOX
		labels = "mmc usb";
#endif
	};

	measure {
		compatible = "bootctl,simple-measure";

		tpm-log-size = <0x10000>;

		/*
		 * should we use compatible strings for each subnode? That might
		 * provide more flexibility for expansion
		 */

		os {
			method = "tpm-pcr";
			pcr-number = <6>;
			algos = "sha256";
		};

		initrd {
			method = "tpm-pcr";
			pcr-number = <9>;
			algos = "sha256";
		};

		fdt {
			method = "tpm-pcr";
			pcr-number = <8>;
			algos = "sha256";
		};

		cmdline {
			method = "tpm-pcr";
			pcr-number = <8>;
			algos = "sha256";
			optional;
		};
	};

	oslist-extlinux {
		compatible = "bootctl,extlinux-oslist";

		/* indicates the filesystems needed to access extlinux */
		filesystems {
			ext4 {
				/* add enabled options here? */
			};

			fat {
			};
		};
	};

#ifndef CONFIG_SANDBOX
	oslist-efi {
		compatible = "bootctl,efifile-oslist";

		/* indicates the filesystems needed to access EFI files */
		filesystems {
			fat {
			};
		};
	};
#endif

	state {
		compatible = "bootctl,simple-state", "bootctl,state";

		/* revisit, as we may want to reference the hardware device */
#ifdef CONFIG_SANDBOX
		location = "hostfs", "0";
		filename = "bootctl.ini";
#else
		location = "efi", "1:5";
		filename = "/boot/bootctl/bootctl.ini";
#endif
	};

	ui-multi {
		compatible = "bootctl,multiboot-ui", "bootctl,simple-ui",
			"bootctl,ui";
		graphical = "if-available";
		textual = "if-available";
#ifdef CANONICAL_LOGO
		logo = /incbin/("/home/sglass/u/boot/bootctl/canonical.bmp");
#endif
	};

	ui-simple {
		compatible = "bootctl,simple-ui", "bootctl,ui";
		graphical = "if-available";
		textual = "if-available";
	};

};