%global debug_package %{nil} %global limine_version 12.6.0 Name: nabu-boot-integration Version: 2.0.0 Release: 11.test%{?dist} Summary: Unified UKI infrastructure for Xiaomi Pad 5 (nabu) License: MIT AND BSD-2-Clause URL: https://copr.fedorainfracloud.org/coprs/mcc45tr/nabu-linux/ Source0: %{name}-%{version}.tar.zst BuildRequires: coreutils BuildRequires: cpio BuildRequires: dracut BuildRequires: systemd-rpm-macros BuildRequires: zstd Requires: binutils Requires: cpio Requires: dracut Requires: kbd-misc Requires: systemd-ukify Recommends: xiaomi-nabu-firmware Requires: zstd Provides: nabu-uki-config = %{version}-%{release} Obsoletes: nabu-uki-config < %{version}-%{release} Provides: nabu-fedora-boot = %{version}-%{release} Obsoletes: nabu-fedora-boot < %{version}-%{release} %description Shared Nabu UKI, initramfs, console and kernel-install integration. Boot-manager EFI installation is supplied by exactly one of the systemd-boot, rEFInd or Limine selector subpackages. Authorized Nabu firmware is recommended but not redistributed by this package; UKI generation fails closed when it is absent. %package -n nabu-boot-systemd Summary: systemd-boot selector and automatic ESP integration for Nabu Requires: %{name} = %{version}-%{release} Requires: systemd-boot-unsigned Provides: nabu-boot-manager = 2.0.0.3 Provides: nabu-systemd-boot-config = %{version}-%{release} Obsoletes: nabu-systemd-boot-config < %{version}-%{release} Conflicts: nabu-boot-refind Conflicts: nabu-boot-limine Conflicts: nabu-refind-config Conflicts: nabu-limine-config %description -n nabu-boot-systemd Selects systemd-boot, installs its AArch64 EFI binary and synchronizes the current Nabu UKI plus the verified Android-return entry on the mounted ESP. %package -n nabu-boot-refind Summary: rEFInd selector and automatic ESP integration for Nabu Requires: %{name} = %{version}-%{release} Requires: rEFInd Provides: nabu-boot-manager = 2.0.0.2 Provides: nabu-refind-config = %{version}-%{release} Obsoletes: nabu-refind-config < %{version}-%{release} Conflicts: nabu-boot-systemd Conflicts: nabu-boot-limine Conflicts: nabu-systemd-boot-config Conflicts: nabu-limine-config %description -n nabu-boot-refind Selects rEFInd, installs Fedora's AArch64 EFI binary and synchronizes the current Nabu UKI plus the verified Android-return entry on the mounted ESP. %package -n nabu-boot-limine Summary: Limine selector and automatic ESP integration for Nabu License: MIT AND BSD-2-Clause Requires: %{name} = %{version}-%{release} Provides: nabu-boot-manager = 2.0.0.1 Provides: nabu-limine-config = %{version}-%{release} Obsoletes: nabu-limine-config < %{version}-%{release} Conflicts: nabu-boot-systemd Conflicts: nabu-boot-refind Conflicts: nabu-systemd-boot-config Conflicts: nabu-refind-config %description -n nabu-boot-limine Selects Limine and installs the official Limine %{limine_version} AArch64 UEFI binary with a generated Nabu UKI and verified Android-return configuration. %prep %autosetup %build %check bash -n payload/usr/bin/nabu-regenerate-uki grep -Fq 'plymouth.enable=0' payload/usr/bin/nabu-regenerate-uki grep -Fq 'systemd.show_status=yes' payload/usr/bin/nabu-regenerate-uki grep -Fq 'systemd.log_level=info' payload/usr/bin/nabu-regenerate-uki grep -Fq 'rd.udev.log_level=info' payload/usr/bin/nabu-regenerate-uki grep -Fq 'no_console_suspend' payload/usr/bin/nabu-regenerate-uki grep -Fq 'ignore_loglevel' payload/usr/bin/nabu-regenerate-uki grep -Fq 'log_buf_len=8M' payload/usr/bin/nabu-regenerate-uki grep -Fq '/usr/lib/senemos-nabu/verbose-uki.d' payload/usr/bin/nabu-regenerate-uki grep -Fq '/usr/lib/senemos-nabu/uki-version.d' payload/usr/bin/nabu-regenerate-uki grep -Fq 'Fedora Rawhide (SENEMOS%s %s)' manager/nabu-configure-boot-manager grep -Fq 'canonical_major > fallback_major' manager/nabu-configure-boot-manager bash -n payload/usr/libexec/senemos-nabu/sanitize-initramfs bash -n manager/nabu-configure-boot-manager bash tests/test-sanitize-initramfs.sh bash tests/test-boot-manager.sh printf '%s %s\n' \ 1824330fe1966d4d3a45933a0619b8104a22e0ffedfa6a5c5c133f9868e8d4c6 \ manager/limine-%{limine_version}-BOOTAA64.EFI | sha256sum -c - %install cp -a payload/etc payload/usr %{buildroot}/ install -Dm0755 manager/nabu-configure-boot-manager \ %{buildroot}%{_bindir}/nabu-configure-boot-manager install -Dm0644 manager/loader.conf \ %{buildroot}%{_datadir}/nabu/bootloader/systemd-boot/loader.conf install -Dm0644 manager/android.conf \ %{buildroot}%{_datadir}/nabu/bootloader/systemd-boot/android.conf install -Dm0644 manager/systemd-boot.selected \ %{buildroot}%{_prefix}/lib/nabu-boot/managers/systemd-boot.selected install -Dm0644 manager/refind.selected \ %{buildroot}%{_prefix}/lib/nabu-boot/managers/refind.selected install -Dm0644 manager/limine.selected \ %{buildroot}%{_prefix}/lib/nabu-boot/managers/limine.selected install -Dm0644 manager/limine-%{limine_version}-BOOTAA64.EFI \ %{buildroot}%{_datadir}/nabu/bootloader/limine/BOOTAA64.EFI %posttrans -p /usr/bin/bash latest_nabu_kernel="$(find /usr/lib/modules -mindepth 1 -maxdepth 1 -type d -name '*nabu*' -printf '%%f\n' 2>/dev/null | sort -V | tail -n1)" if [[ -n "$latest_nabu_kernel" && -s "/boot/vmlinuz-${latest_nabu_kernel}" ]]; then /usr/bin/nabu-regenerate-uki "$latest_nabu_kernel" || \ printf 'Warning: automatic Nabu UKI regeneration failed for %s\n' "$latest_nabu_kernel" >&2 fi %posttrans -n nabu-boot-systemd -p /usr/bin/bash /usr/bin/nabu-configure-boot-manager systemd-boot || \ printf 'Warning: systemd-boot ESP configuration was deferred or failed.\n' >&2 %posttrans -n nabu-boot-refind -p /usr/bin/bash /usr/bin/nabu-configure-boot-manager refind || \ printf 'Warning: rEFInd ESP configuration was deferred or failed.\n' >&2 %posttrans -n nabu-boot-limine -p /usr/bin/bash /usr/bin/nabu-configure-boot-manager limine || \ printf 'Warning: Limine ESP configuration was deferred or failed.\n' >&2 %files %license LICENSE %config(noreplace) %{_sysconfdir}/kernel/nabu-uki.conf %config(noreplace) %{_sysconfdir}/systemd/ukify.conf %config(noreplace) %{_sysconfdir}/vconsole.conf %{_bindir}/nabu-configure-boot-manager %{_bindir}/nabu-regenerate-uki %{_prefix}/lib/senemos-nabu/ %{_libexecdir}/senemos-nabu/ %{_prefix}/lib/dracut/modules.d/95nabu-dtb/ %{_prefix}/lib/kernel/install.d/95-nabu-uki.install %dir %{_prefix}/lib/nabu-boot %dir %{_prefix}/lib/nabu-boot/managers %files -n nabu-boot-systemd %{_prefix}/lib/nabu-boot/managers/systemd-boot.selected %{_datadir}/nabu/bootloader/systemd-boot/ %files -n nabu-boot-refind %{_prefix}/lib/nabu-boot/managers/refind.selected %files -n nabu-boot-limine %license manager/LICENSE-limine-BSD-2-Clause %{_prefix}/lib/nabu-boot/managers/limine.selected %{_datadir}/nabu/bootloader/limine/ %changelog * Thu Aug 27 2026 SENEMOS Project - 2.0.0-11.test - Keep a validated lower-major fallback as the default when a higher-major Nabu candidate is installed. - Apply the same conservative ordering to systemd-boot, rEFInd and Limine without modifying or removing the Android-return entry. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-10.test - Keep the kernel console active through suspend in diagnostic UKIs. - Preserve an 8 MiB kernel log and ignore console log-level suppression. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-8.test - Brand canonical and fallback EFI entries from the kernel major and release. - Name the entries SENEMOS7 v0.0.9.0 and SENEMOS6 v1.4.0.9. - Read future mainline product versions from an RPM-owned per-kernel marker. - Accept both new branded UKIs and legacy names during atomic migration. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-7.test - Honor a kernel-package-owned verbose marker during every UKI regeneration. - Preserve diagnostic arguments across RPM post-transaction hook ordering. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-6.test - Add an explicit per-UKI verbose diagnostic mode without changing fallback. - Remove quiet/Plymouth arguments and expose systemd plus udev boot status. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-5.test - Add an explicit fallback UKI installation mode without replacing canonical. - Synchronize canonical, fallback and Android entries for every boot manager. - Protect the non-target UKI slot during atomic replacement and space checks. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-4.test - Generate a hardware-scoped initramfs on a running Xiaomi Nabu device. - Keep generic initramfs generation for offline image construction. - Retain mandatory firmware, ownership and ESP-space fail-closed gates. * Thu Aug 27 2026 SENEMOS Project - 2.0.0-3.test - Preserve the UKI referenced by fallback.conf during canonical replacement. - Pass the freshly generated UKI explicitly to boot-manager synchronization. - Avoid version-sort ambiguity between v1.x fallback and Linux 7.x UKI names. * Tue Aug 25 2026 SENEMOS Project - 2.0.0-2.test - Keep authorized Xiaomi firmware as a weak dependency so the public COPR graph remains solvable without redistributing proprietary payloads. - Retain the runtime initramfs gate that refuses a UKI missing Nabu firmware. * Sun Aug 23 2026 SENEMOS Project - 2.0.0-1.test - Merge the shared UKI and ESP integration into one package. - Add mutually exclusive, automatically configured systemd-boot, rEFInd and Limine selectors while preserving Android EFI assets.