Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package agama-installer for openSUSE:Factory
checked in at 2026-10-24 22:03:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/agama-installer (Old)
and /work/SRC/openSUSE:Factory/.agama-installer.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "agama-installer"
Sat Oct 24 22:03:43 2026 rev:43 rq:1387138 version:25.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/agama-installer/agama-installer.changes
2026-09-22 15:49:09.268080202 +0200
+++
/work/SRC/openSUSE:Factory/.agama-installer.new.2252680/agama-installer.changes
2026-10-24 22:04:34.678478210 +0200
@@ -1,0 +2,48 @@
+Thu Oct 22 09:44:07 UTC 2026 - José Iván López González <[email protected]>
+
+- Version 25
+
+-------------------------------------------------------------------
+Wed Oct 7 12:53:02 UTC 2026 - Josef Reidinger <[email protected]>
+
+- Rename "Check Installation Medium" into "Check Medium & Install"
+ to make it more clear (bsc#1283085)
+
+-------------------------------------------------------------------
+Mon Oct 5 14:34:04 UTC 2026 - Ladislav Slezák <[email protected]>
+
+- Improved self-update cleanup to disable the added self-update
+ repositories also when the self-update fails or crashes.
+ (bsc#1254163)
+
+-------------------------------------------------------------------
+Wed Sep 30 12:48:23 UTC 2026 - Imobach Gonzalez Sosa <[email protected]>
+
+- Reduce the installer image footprint by dropping unnecessary
+ transitive YaST dependencies pulled in by agama-yast
+ (gh#agama-project/agama#4001, gh#agama-project/agama#4003,
+ gh#agama-project/agama#4004).
+
+-------------------------------------------------------------------
+Mon Sep 28 08:50:52 UTC 2026 - Andreas Schwab <[email protected]>
+
+- Add support for riscv64 (gh#agama-project/agama#3867)
+
+-------------------------------------------------------------------
+Thu Sep 24 14:03:15 UTC 2026 - Michal Filka <[email protected]>
+
+- bsc#1282603
+ - switched from 16.1 to 16.2 in kiwi build config
+
+-------------------------------------------------------------------
+Fri Sep 18 08:43:24 UTC 2026 - Santiago Zarate <[email protected]>
+
+- Set default bootloader for MicroOS to systemd-boot (bsc#1277929)
+
+-------------------------------------------------------------------
+Wed Sep 16 11:50:51 UTC 2026 - Josef Reidinger <[email protected]>
+
+- Add experimental support for 32 bit architectures which are in
+ TW ports (bsc#1266309)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ agama-installer.kiwi ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old 2026-10-24 22:04:35.836526675 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new 2026-10-24 22:04:35.839526800 +0200
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- OBS-ExclusiveArch: aarch64 ppc64le x86_64 s390x -->
+<!-- OBS-ExclusiveArch: aarch64 ppc64le riscv64 x86_64 s390x i586 armv6hl
armv7hl -->
<!-- OBS-Profiles: @BUILD_FLAVOR@ -->
<!-- OBS-Milestone: %current_milestone -->
@@ -12,14 +12,14 @@
<profiles>
<!-- use at most 16 characters for the profile name, it is used in the
ISO Volume ID -->
<!-- which is limited to max. 32 characters -->
- <profile name="Leap_16.1" description="openSUSE Leap image"
import="true" />
+ <profile name="Leap_16.2" description="openSUSE Leap image"
import="true" />
<profile name="openSUSE" description="openSUSE multiproduct image"
import="true" />
<!-- TODO: add SPx in the future -->
- <profile name="SUSE_SLE_16.1" description="SLE-based image"
import="true" />
- <profile name="SUSE_SLE_NV_16.1" description="SLE-based image for
NVIDIA" import="true" />
+ <profile name="SUSE_SLE_16.2" description="SLE-based image"
import="true" />
+ <profile name="SUSE_SLE_NV_16.2" description="SLE-based image for
NVIDIA" import="true" />
</profiles>
<preferences>
- <version>24.0.0</version>
+ <version>25.0.0</version>
<packagemanager>zypper</packagemanager>
<locale>en_US</locale>
<keytable>us</keytable>
@@ -31,30 +31,41 @@
ignored as the fix_bootconfig script automatically checks which theme is
present, but keep the option here otherwise a text mode boot menu is
displayed -->
- <preferences profiles="openSUSE,Leap_16.1">
+ <preferences profiles="openSUSE,Leap_16.2">
<bootloader-theme>openSUSE</bootloader-theme>
</preferences>
- <preferences profiles="SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
+ <preferences profiles="SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
<bootloader-theme>SLE</bootloader-theme>
</preferences>
<!-- the ISO Volume ID is set by the fix_bootconfig script -->
- <preferences arch="ppc64le" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+ <preferences arch="ppc64le" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
<type image="iso" flags="dmsquash" firmware="ofw" mediacheck="true"
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
<bootloader name="grub2" console="serial" timeout="10"/>
</type>
</preferences>
<!-- SLES for NVIDIA is aarch64 only, but to simplify the kiwi config
share the definition
with the x86_64 products -->
- <preferences arch="aarch64,x86_64"
profiles="openSUSE,SUSE_SLE_16.1,SUSE_SLE_NV_16.1,Leap_16.1">
+ <preferences arch="aarch64,x86_64"
profiles="openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2,Leap_16.2">
<type image="iso" flags="dmsquash" firmware="uefi" mediacheck="true"
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
<bootloader name="grub2" timeout="10"/>
</type>
</preferences>
- <preferences arch="s390x" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+ <!-- experimental support for 32-bit and armv architectures, i686 is
needed for kiwi in OBS as sometimes it builds on newer definition -->
+ <preferences arch="i586,i686,armv6hl,armv7hl,armv6l,armv7l"
profiles="openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2,Leap_16.2">
+ <type image="iso" flags="dmsquash" mediacheck="true" publisher="SUSE
LLC" editbootconfig="fix_bootconfig">
+ <bootloader name="grub2" timeout="10"/>
+ </type>
+ </preferences>
+ <preferences arch="s390x" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
<type image="iso" flags="dmsquash" mediacheck="true" publisher="SUSE
LLC" editbootconfig="fix_bootconfig">
<bootloader name="custom" />
</type>
</preferences>
+ <preferences arch="riscv64" profiles="openSUSE">
+ <type image="iso" flags="dmsquash" firmware="efi" mediacheck="true"
publisher="SUSE LLC" editbootconfig="fix_bootconfig">
+ <bootloader name="grub2" timeout="10"/>
+ </type>
+ </preferences>
<users>
<!-- the password is configured during boot -->
<user password="!*" home="/root" name="root" groups="root"/>
@@ -75,10 +86,12 @@
<package name="vim-data"/>
<package name="grub2"/>
<package name="grub2-arm64-efi" arch="aarch64"/>
+ <package name="grub2-arm-efi" arch="armv6hl,armv7hl,armv6l,armv7l"/>
<package name="grub2-x86_64-efi" arch="x86_64"/>
- <package name="grub2-i386-pc" arch="x86_64"/>
+ <package name="grub2-i386-pc" arch="x86_64,i586,i686"/>
<package name="grub2-s390x-emu" arch="s390x" />
<package name="grub2-powerpc-ieee1275" arch="ppc64le"/>
+ <package name="grub2-riscv64-efi" arch="riscv64"/>
<package name="syslinux" arch="x86_64"/>
<package name="openssh"/>
<package name="iproute2"/>
@@ -117,7 +130,7 @@
<package name="jq"/>
<package name="yast2-schema"/>
<package name="qrencode"/>
- <package name="qemu-guest-agent" />
+ <package name="qemu-guest-agent"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
<package name="aaa_base-extras"/>
<!-- to work correctly with the fips=1 boot parameter -->
<package name="libopenssl-3-fips-provider"/>
@@ -131,54 +144,54 @@
<!-- image cleanup tool -->
<package name="image-janitor"/>
<!-- plymouth bsc#1248507 -->
- <package name="plymouth" arch="aarch64,x86_64,ppc64le" />
- <package name="plymouth-dracut" arch="aarch64,x86_64,ppc64le" />
+ <package name="plymouth" arch="aarch64,x86_64,ppc64le,riscv64" />
+ <package name="plymouth-dracut" arch="aarch64,x86_64,ppc64le,riscv64"
/>
<!-- and s390 specific plymouth bsc#1248507 -->
<package name="blog-plymouth" arch="s390x" />
</packages>
<!-- the kernel packages -->
- <packages type="image" profiles="openSUSE,SUSE_SLE_16.1,Leap_16.1">
+ <packages type="image" profiles="openSUSE,SUSE_SLE_16.2,Leap_16.2">
<package name="kernel-default"/>
</packages>
- <packages type="image" profiles="SUSE_SLE_NV_16.1">
+ <packages type="image" profiles="SUSE_SLE_NV_16.2">
<package name="kernel-nvidia"/>
<package name="kernel-firmware-nvidia"/>
</packages>
- <packages type="image" profiles="Leap_16.1">
+ <packages type="image" profiles="Leap_16.2">
<package name="kernel-default-extra"/>
<package name="kernel-default-optional"/>
</packages>
<!-- packages for local installation (desktop, browser, etc.) -->
- <packages type="image"
profiles="Leap_16.1,openSUSE,SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
- <package name="bluez-firmware"/>
+ <packages type="image"
profiles="Leap_16.2,openSUSE,SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
+ <package name="bluez-firmware"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
<!-- for openQA to run their puppeteer tests, just injecting a *.js
file -->
- <package name="nodejs(engine)"/>
- <package name="fontconfig"/>
- <package name="fonts-config"/>
- <package name="xauth"/>
- <package name="MozillaFirefox"/>
- <package name="gdm-systemd"/>
- <package name="gnome-shell"/>
- <package name="gnome-session-wayland"/>
- <package name="gnome-kiosk"/>
- <package name="spice-vdagent"/>
+ <package name="nodejs(engine)"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="fontconfig"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="fonts-config"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="xauth" arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="MozillaFirefox"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="gdm-systemd"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="gnome-shell"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="gnome-session-wayland"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="gnome-kiosk"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
+ <package name="spice-vdagent"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
</packages>
<!-- common packages for openSUSE Tumbleweed and Leap distributions -->
- <packages type="image" profiles="Leap_16.1,openSUSE">
+ <packages type="image" profiles="Leap_16.2,openSUSE">
<package name="agama-products-opensuse"/>
- <package name="grub2-branding-openSUSE" arch="aarch64,x86_64"/>
- <package name="MozillaFirefox-branding-openSUSE"/>
+ <package name="grub2-branding-openSUSE" arch="aarch64,x86_64,riscv64"/>
+ <package name="MozillaFirefox-branding-openSUSE"
arch="aarch64,x86_64,ppc64le,s390x,riscv64"/>
<package name="openSUSE-build-key"/>
<package name="patterns-openSUSE-base"/>
<package name="staging-build-key"/>
- <package name="plymouth-branding-openSUSE"
arch="aarch64,x86_64,ppc64le" />
+ <package name="plymouth-branding-openSUSE"
arch="aarch64,x86_64,ppc64le,riscv64" />
</packages>
<!-- additional packages for the Leap distributions -->
- <packages type="image" profiles="Leap_16.1">
+ <packages type="image" profiles="Leap_16.2">
<package name="openSUSE-repos-Leap"/>
</packages>
<!-- additional packages for the openSUSE Tumbleweed distribution -->
@@ -186,18 +199,18 @@
<package name="openSUSE-repos-Tumbleweed"/>
</packages>
<!-- common packages for all SLE distributions -->
- <packages type="image" profiles="SUSE_SLE_16.1,SUSE_SLE_NV_16.1">
+ <packages type="image" profiles="SUSE_SLE_16.2,SUSE_SLE_NV_16.2">
<package name="grub2-branding-SLE" arch="aarch64,x86_64"/>
<package name="patterns-base-base"/>
<package name="suse-build-key"/>
- <package name="MozillaFirefox-branding-SLE"/>
+ <package name="MozillaFirefox-branding-SLE"
arch="aarch64,x86_64,ppc64le,s390x"/>
</packages>
<!-- SLES specific packages -->
- <packages type="image" profiles="SUSE_SLE_16.1">
+ <packages type="image" profiles="SUSE_SLE_16.2">
<package name="agama-products-sle"/>
</packages>
<!-- SLES for NVIDIA specific packages -->
- <packages type="image" profiles="SUSE_SLE_NV_16.1">
+ <packages type="image" profiles="SUSE_SLE_NV_16.2">
<package name="agama-sles-nvidia-product"/>
<package name="agama-sles-nvidia-branding"/>
</packages>
@@ -208,17 +221,17 @@
<package name="ca-certificates"/>
<package name="ca-certificates-mozilla"/>
</packages>
- <packages type="bootstrap" profiles="Leap_16.1">
+ <packages type="bootstrap" profiles="Leap_16.2">
<package name="Leap-release"/>
</packages>
<packages type="bootstrap" profiles="openSUSE">
<package name="openSUSE-release"/>
<package name="openSUSE-release-ftp"/>
</packages>
- <packages type="bootstrap" profiles="SUSE_SLE_16.1">
+ <packages type="bootstrap" profiles="SUSE_SLE_16.2">
<package name="SLES-release"/>
</packages>
- <packages type="bootstrap" profiles="SUSE_SLE_NV_16.1">
+ <packages type="bootstrap" profiles="SUSE_SLE_NV_16.2">
<package name="SLES_NVIDIA-release"/>
</packages>
</image>
++++++ _multibuild_sles_nvidia ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old 2026-10-24 22:04:35.910529772 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new 2026-10-24 22:04:35.913529897 +0200
@@ -1,4 +1,4 @@
<multibuild>
- <flavor>SUSE_SLE_NV_16.1</flavor>
+ <flavor>SUSE_SLE_NV_16.2</flavor>
</multibuild>
++++++ config-cdroot.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.aarch64 new/fix_bootconfig.aarch64
--- old/fix_bootconfig.aarch64 2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.aarch64 2026-10-22 15:36:49.000000000 +0200
@@ -99,7 +99,7 @@
echo Loading initrd...
initrd (\$root)/boot/aarch64/loader/initrd
}
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
set gfxpayload=keep
echo Loading kernel...
linux (\$root)/boot/aarch64/loader/linux mediacheck=1 plymouth.enable=0
\${isoboot}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.i586 new/fix_bootconfig.i586
--- old/fix_bootconfig.i586 1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.i586 2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,176 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+ echo "fix_bootconfig.i586: image dir \"$dst\" not found"
+ exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch=ix86
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+ theme="SLE"
+else
+ theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+ isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+if [ "\${grub_platform}" = "efi" ]; then
+ echo "Please press 't' to show the boot menu on this console"
+fi
+set gfxmode=auto
+set font=(\$root)/boot/$arch/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+ loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+ loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+ loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+ loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+ loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+ set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if serial port is successfully configured allow input/output to it as well
+if serial --unit=0 --speed=9600; then
+ terminal_input console serial
+ terminal_output gfxterm serial
+ set extra_output=serial
+ # this detects that a serial port is present but that does not mean a
serial
+ # console is attached there so we cannot for example disable plymouth
+else
+ terminal_input console
+ terminal_output gfxterm
+fi
+
+if [ "\${grub_platform}" != "efi" ]; then
+ # classic BIOS boot, try booting from MBR from the first disk
+ menuentry "Boot from Hard Disk" --class os --unrestricted {
+ insmod file
+
+ # check if the first disk contains a valid boot sector
+ if file --is-x86-bios-bootsector (hd0)+1; then
+ chainloader (hd0)+1
+ else
+ echo "The first disk does not seem to be bootable."
+ echo ""
+ echo "If you are sure the system can boot from hard disk"
+ echo "then remove the installation medium and reboot the machine."
+ echo ""
+ echo "Press Enter to return ..."
+ read -s
+ fi
+ }
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot} splash=silent
\${plymouth} \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot} ide=nodma apm=off
noresume edd=off nomodeset 3 \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux mediacheck=1 plymouth.enable=0
\${isoboot} \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot}
$RESCUE_SYSTEM_BOOT_SETTINGS
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+ set textmode=true
+ set plymouth="plymouth.enable=0"
+ terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+ echo "Enter the new root password for the installer live system:"
+ read -s live_password
+ echo "Retype the password again:"
+ read -s live_password_confirmed
+
+ if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+ echo "ERROR: The passwords do not match!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ if [ -z "\${live_password}" ]; then
+ echo "ERROR: The password cannot be empty!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ set live_options="live.password=\${live_password}"
+ fi
+ fi
+}
+
+if [ "\${grub_platform}" = "efi" ]; then
+ menuentry "UEFI Firmware Settings" {
+ fwsetup --is-supported
+ if [ "\$?" = 0 ]; then
+ fwsetup
+ else
+ echo "Your firmware doesn't support setup menu entry from a boot
loader"
+ echo "Press Enter to return ..."
+ read -s
+ fi
+ }
+fi
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.i686 new/fix_bootconfig.i686
--- old/fix_bootconfig.i686 1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.i686 2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,176 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+ echo "fix_bootconfig.i586: image dir \"$dst\" not found"
+ exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch="ix86"
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+ theme="SLE"
+else
+ theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+ isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+if [ "\${grub_platform}" = "efi" ]; then
+ echo "Please press 't' to show the boot menu on this console"
+fi
+set gfxmode=auto
+set font=(\$root)/boot/$arch/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+ loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+ loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+ loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+ loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+ loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+ set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if serial port is successfully configured allow input/output to it as well
+if serial --unit=0 --speed=9600; then
+ terminal_input console serial
+ terminal_output gfxterm serial
+ set extra_output=serial
+ # this detects that a serial port is present but that does not mean a
serial
+ # console is attached there so we cannot for example disable plymouth
+else
+ terminal_input console
+ terminal_output gfxterm
+fi
+
+if [ "\${grub_platform}" != "efi" ]; then
+ # classic BIOS boot, try booting from MBR from the first disk
+ menuentry "Boot from Hard Disk" --class os --unrestricted {
+ insmod file
+
+ # check if the first disk contains a valid boot sector
+ if file --is-x86-bios-bootsector (hd0)+1; then
+ chainloader (hd0)+1
+ else
+ echo "The first disk does not seem to be bootable."
+ echo ""
+ echo "If you are sure the system can boot from hard disk"
+ echo "then remove the installation medium and reboot the machine."
+ echo ""
+ echo "Press Enter to return ..."
+ read -s
+ fi
+ }
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot} splash=silent
\${plymouth} \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot} ide=nodma apm=off
noresume edd=off nomodeset 3 \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux mediacheck=1 plymouth.enable=0
\${isoboot} \${live_options}
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/$arch/loader/linux \${isoboot}
$RESCUE_SYSTEM_BOOT_SETTINGS
+ echo Loading initrd...
+ initrd (\$root)/boot/$arch/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+ set textmode=true
+ set plymouth="plymouth.enable=0"
+ terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+ echo "Enter the new root password for the installer live system:"
+ read -s live_password
+ echo "Retype the password again:"
+ read -s live_password_confirmed
+
+ if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+ echo "ERROR: The passwords do not match!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ if [ -z "\${live_password}" ]; then
+ echo "ERROR: The password cannot be empty!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ set live_options="live.password=\${live_password}"
+ fi
+ fi
+}
+
+if [ "\${grub_platform}" = "efi" ]; then
+ menuentry "UEFI Firmware Settings" {
+ fwsetup --is-supported
+ if [ "\$?" = 0 ]; then
+ fwsetup
+ else
+ echo "Your firmware doesn't support setup menu entry from a boot
loader"
+ echo "Press Enter to return ..."
+ read -s
+ fi
+ }
+fi
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.ppc64le new/fix_bootconfig.ppc64le
--- old/fix_bootconfig.ppc64le 2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.ppc64le 2026-10-22 15:36:49.000000000 +0200
@@ -42,7 +42,7 @@
initrd /boot/ppc64le/loader/initrd
}
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
echo 'Loading kernel...'
linux /boot/ppc64le/loader/linux mediacheck=1 plymouth.enable=0
echo 'Loading initrd...'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.riscv64 new/fix_bootconfig.riscv64
--- old/fix_bootconfig.riscv64 1970-01-01 01:00:00.000000000 +0100
+++ new/fix_bootconfig.riscv64 2026-10-22 15:36:49.000000000 +0200
@@ -0,0 +1,152 @@
+#! /bin/bash
+
+# Custom menu to ensure that we boot correctly
+# from local disk on UEFI
+# https://github.com/openSUSE/agama/issues/1609
+# KIWI config
+
+set -e
+
+dst="$1"
+
+if [ ! -d "$dst" ]; then
+ echo "fix_bootconfig.riscv64: image dir \"$dst\" not found"
+ exit 1
+fi
+
+# KIWI config which should normally be inherited
+# from a parent process in our case xorriso
+# but that's not the case.
+test -f $dst/.profile && . $dst/.profile
+
+arch=$(uname -m)
+profile=$(echo "$kiwi_profiles" | tr "_" " ")
+label="$profile ($arch)"
+
+if [ -d "$dst/boot/grub2/themes/SLE" ]; then
+ theme="SLE"
+else
+ theme="openSUSE"
+fi
+
+#
+# Create grub.cfg
+#
+cat >$dst/boot/grub2/grub.cfg <<XXX
+# Agama generated grub2 config file
+insmod serial
+insmod read
+
+set btrfs_relative_path="y"
+export btrfs_relative_path
+set default=0
+if [ -n "\${iso_path}" ]; then
+ isoboot="iso-scan/filename=\${iso_path}"
+fi
+set timeout=60
+set timeout_style=menu
+echo "Please press 't' to show the boot menu on this console"
+set gfxmode=auto
+set font=(\$root)/boot/riscv64/loader/grub2/fonts/unicode.pf2
+set ascii_font=grub2/themes/$theme/ascii.pf2
+set sans_bold_14_font=grub2/themes/$theme/DejaVuSans-Bold14.pf2
+set sans_10_font=grub2/themes/$theme/DejaVuSans10.pf2
+set sans_12_font=grub2/themes/$theme/DejaVuSans12.pf2
+if [ -f \${font} ];then
+ loadfont \${font}
+fi
+if [ -f (\$root)/boot/\${ascii_font} ];then
+ loadfont (\$root)/boot/\${ascii_font}
+fi
+if [ -f (\$root)/boot/\${sans_bold_14_font} ];then
+ loadfont (\$root)/boot/\${sans_bold_14_font}
+fi
+if [ -f (\$root)/boot/\${sans_10_font} ];then
+ loadfont (\$root)/boot/\${sans_10_font}
+fi
+if [ -f (\$root)/boot/\${sans_12_font} ];then
+ loadfont (\$root)/boot/\${sans_12_font}
+fi
+if [ -f (\$root)/boot/grub2/themes/$theme/theme.txt ];then
+ set theme=(\$root)/boot/grub2/themes/$theme/theme.txt
+fi
+
+# if the first serial port is successfully configured allow input/output to it
as well
+if serial --unit=0 --speed=9600; then
+ terminal_input console serial
+ terminal_output gfxterm serial
+ set extra_output=serial
+ # this detects that a serial port is present but that does not mean a
serial
+ # console is attached there so we cannot for example disable plymouth
+else
+ terminal_input console
+ terminal_output gfxterm
+fi
+
+menuentry "Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/riscv64/loader/linux \${isoboot} splash=silent
\${plymouth}
+ echo Loading initrd...
+ initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Failsafe -- Install $label" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/riscv64/loader/linux \${isoboot} ide=nodma apm=off
noresume edd=off nomodeset 3
+ echo Loading initrd...
+ initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Check Medium & Install" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/riscv64/loader/linux mediacheck=1 plymouth.enable=0
\${isoboot}
+ echo Loading initrd...
+ initrd (\$root)/boot/riscv64/loader/initrd
+}
+menuentry "Rescue System" --class os --unrestricted {
+ set gfxpayload=keep
+ echo Loading kernel...
+ linux (\$root)/boot/riscv64/loader/linux \${isoboot}
$RESCUE_SYSTEM_BOOT_SETTINGS
+ echo Loading initrd...
+ initrd (\$root)/boot/riscv64/loader/initrd
+}
+
+hiddenentry "Text mode" --hotkey "t" {
+ set textmode=true
+ set plymouth="plymouth.enable=0"
+ terminal_output console \${extra_output}
+}
+
+hiddenentry "Set Live system password" --hotkey "p" {
+ echo "Enter root password for the installer live system:"
+ read -s live_password
+ echo "Confirm password:"
+ read -s live_password_confirmed
+
+ if [ "\${live_password}" != "\${live_password_confirmed}" ]; then
+ echo "ERROR: The passwords do not match!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ if [ -z "\${live_password}" ]; then
+ echo "ERROR: The password cannot be empty!"
+ echo "Press Enter to return ..."
+ read -s
+ else
+ set live_options="live.password=\${live_password}"
+ fi
+ fi
+}
+
+menuentry "UEFI Firmware Settings" {
+ fwsetup --is-supported
+ if [ "\$?" = 0 ]; then
+ fwsetup
+ else
+ echo "Your firmware doesn't support setup menu entry from a boot
loader"
+ echo "Press Enter to return ..."
+ read -s
+ fi
+}
+XXX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/fix_bootconfig.x86_64 new/fix_bootconfig.x86_64
--- old/fix_bootconfig.x86_64 2026-09-21 16:43:04.000000000 +0200
+++ new/fix_bootconfig.x86_64 2026-10-22 15:36:49.000000000 +0200
@@ -119,7 +119,7 @@
echo Loading initrd...
initrd (\$root)/boot/x86_64/loader/initrd
}
-menuentry "Check Installation Medium" --class os --unrestricted {
+menuentry "Check Medium & Install" --class os --unrestricted {
set gfxpayload=keep
echo Loading kernel...
linux (\$root)/boot/x86_64/loader/linux mediacheck=1 plymouth.enable=0
\${isoboot} \${live_options}
++++++ config.sh ++++++
--- /var/tmp/diff_new_pack.vsWBUi/_old 2026-10-24 22:04:35.989533078 +0200
+++ /var/tmp/diff_new_pack.vsWBUi/_new 2026-10-24 22:04:35.992533204 +0200
@@ -83,16 +83,20 @@
systemctl enable live-self-update.service
systemctl enable checkmedia.service
-systemctl enable qemu-guest-agent.service
+test -f /usr/lib/systemd/system/qemu-guest-agent.service && systemctl enable
qemu-guest-agent.service
systemctl enable setup-systemd-proxy-env.path
test -f /usr/lib/systemd/system/gdm.service && systemctl enable gdm.service
test -f /usr/lib/systemd/system/spice-vdagentd.service && systemctl enable
spice-vdagentd.service
systemctl enable zramswap
# set the default target
+arch=$(uname -m)
if [[ "$kiwi_profiles" == *MINI* ]]; then
# the MINI images do not include graphical environment
systemctl set-default multi-user.target
+elif [[ "$arch" == armv* || "$arch" == i?86 ]]; then
+ # experimental support for these architectures (no Firefox, etc)
+ systemctl set-default multi-user.target
else
systemctl set-default graphical.target
fi
@@ -101,10 +105,6 @@
systemctl disable snapper-cleanup.timer
systemctl disable snapper-timeline.timer
-# disable unused services
-systemctl disable YaST2-Firstboot.service
-systemctl disable YaST2-Second-Stage.service
-
# Prevent premature activation of LVM (bsc#1246133)
systemctl mask lvm2-monitor.service
sed -i 's:# event_activation = 1:event_activation = 0:' /etc/lvm/lvm.conf
++++++ live-root.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/usr/bin/live-self-update new/usr/bin/live-self-update
--- old/usr/bin/live-self-update 2026-09-21 16:43:04.000000000 +0200
+++ new/usr/bin/live-self-update 2026-10-22 15:36:49.000000000 +0200
@@ -15,6 +15,11 @@
REG_REPO_FILE="$RUN_DIR/reg_repos"
OSR="/etc/os-release"
ARCH=$(uname -m)
+# backup of the original resolv.conf (relative to the root directory)
+RESOLV_BACKUP="/etc/resolv.conf.self-update-orig"
+
+# the added self-update repositories
+self_update_repos=()
# do the cleanup at the end, trap ensures it runs even if something fails
trap cleanup_chroot EXIT
@@ -90,17 +95,39 @@
mount -o bind /sys "$NEWROOT"/sys
mount -o bind /proc "$NEWROOT"/proc
mount -o bind /dev "$NEWROOT"/dev
- [ -f /run/NetworkManager/resolv.conf ] && cp
/run/NetworkManager/resolv.conf "$NEWROOT"/etc/resolv.conf
+ if [ -f /run/NetworkManager/resolv.conf ]; then
+ # keep the original file (or symlink), it is restored in cleanup_chroot()
+ if [ -e "$NEWROOT$RESOLV_BACKUP" ] || [ -L "$NEWROOT$RESOLV_BACKUP" ];
then
+ rm -f "$NEWROOT$RESOLV_BACKUP"
+ fi
+ if [ -e "$NEWROOT"/etc/resolv.conf ] || [ -L "$NEWROOT"/etc/resolv.conf
]; then
+ mv "$NEWROOT"/etc/resolv.conf "$NEWROOT$RESOLV_BACKUP"
+ fi
+ cp /run/NetworkManager/resolv.conf "$NEWROOT"/etc/resolv.conf
+ fi
fi
# remove any existing self-update repositories, probably left-overs from the
previous run
rm -f "$NEWROOT"/etc/zypp/repos.d/self-update-*.repo
}
+# Disable the self update repositories (keep them for debugging purposes)
+disable_update_repos() {
+ local repo
+
+ for repo in "${self_update_repos[@]}"; do
+ # do not abort the cleanup when disabling fails ("set -e" is active)
+ run_command zypper modifyrepo --disable "$repo" || \
+ warning "Disabling repository $repo failed"
+ done
+}
+
# Revert the changes done by prepare_chroot() and restore the system to the
-# original state, called from bash "trap" handler
+# original state, disable the added self-update repos, called from bash "trap"
handler
cleanup_chroot() {
local result="$?"
+ disable_update_repos
+
if [ "$result" != "0" ]; then
error "Error: Self update failed! (exit status: $result)"
else
@@ -111,12 +138,19 @@
echo "$result" > "$RESULT_FILE"
if [ -n "$NEWROOT" ]; then
- rm -f "$NEWROOT"/etc/resolv.conf
- # do not fail if not mounted
- findmnt "$NEWROOT"/run > /dev/null && umount "$NEWROOT"/run
- findmnt "$NEWROOT"/sys > /dev/null && umount "$NEWROOT"/sys
- findmnt "$NEWROOT"/proc > /dev/null && umount "$NEWROOT"/proc
- findmnt "$NEWROOT"/dev > /dev/null && umount "$NEWROOT"/dev
+ local dir
+ # restore the original resolv.conf if it was replaced
+ if [ -e "$NEWROOT$RESOLV_BACKUP" ] || [ -L "$NEWROOT$RESOLV_BACKUP" ]; then
+ rm -f "$NEWROOT"/etc/resolv.conf
+ mv "$NEWROOT$RESOLV_BACKUP" "$NEWROOT"/etc/resolv.conf || \
+ warning "Restoring resolv.conf failed"
+ fi
+ for dir in run sys proc dev; do
+ # do not fail if not mounted, do not abort the cleanup if unmounting
fails
+ if findmnt "$NEWROOT/$dir" > /dev/null; then
+ umount "$NEWROOT/$dir" || warning "Unmounting $NEWROOT/$dir failed"
+ fi
+ done
fi
# return the original exit value
@@ -149,12 +183,15 @@
read_os_release
local query
-
query="$server/connect/repositories/installer?identifier=$NAME&version=$VERSION_ID&arch=$ARCH"
- info "Running query $query...."
+ query="$server/connect/repositories/installer"
+ info "Running query $query (identifier=$NAME, version=$VERSION_ID,
arch=$ARCH)...."
+ # the query parameters are URL-encoded by curl (the values may contain
spaces)
local curl_options
curl_options=(--silent --globoff --location --retry 3 --retry-connrefused \
- --connect-timeout 20 --max-time 10 --fail --show-error --output
"$RESPONSE_FILE")
+ --connect-timeout 20 --max-time 30 --fail --show-error --output
"$RESPONSE_FILE" \
+ --get --data-urlencode "identifier=$NAME" --data-urlencode
"version=$VERSION_ID" \
+ --data-urlencode "arch=$ARCH")
if grep -q "\binst.self_update_ssl=0\b" /run/agama/cmdline.d/agama.conf;
then
warning "Disabling SSL check for $server"
@@ -186,7 +223,8 @@
add_update_repos() {
milestone "Adding self update repositories..."
# add the self-update repositories
- while read -r update_url; do
+ # also process the last line if it is missing the trailing newline
+ while read -r update_url || [ -n "$update_url" ]; do
if [ -n "$update_url" ]; then
local repo
repo="self-update-$index"
@@ -212,7 +250,8 @@
zypper_options+=("--no-gpgcheck")
fi
- run_command zypper addrepo "${zypper_options[@]}" -f "$update_url"
"$repo"
+ # do not let zypper read (and swallow) the rest of the repository list
+ run_command zypper addrepo "${zypper_options[@]}" -f "$update_url"
"$repo" < /dev/null
self_update_repos+=("$repo")
((++index))
fi
@@ -224,6 +263,9 @@
# contain a hardcoded version (the fallback URL should work with SLES-16.0,
# SLES-16.1, SLES-16.2...)
read_fallback_repos() {
+ # the variables might not be loaded yet (no registration server defined)
+ read_os_release
+
# Substituting $arch pattern with the architecture of the current system.
# Substituting these variables with the /etc/os-release content:
# $os_release_name => NAME
@@ -232,10 +274,17 @@
# $os_release_version_id => VERSION_ID
# IMPORTANT NOTE: the "VERSION_ID" replacement must happen *before*
# the "VERSION" replacement because it partially matches that string!
- sed -e "s/\$os_release_name/$NAME/g" -e "s/\$os_release_id/$ID/g" \
- -e "s/\$os_release_version_id/$VERSION_ID/g" \
- -e "s/\$os_release_version/$VERSION/g" \
- -e "s/\$arch/$ARCH/g" "$CONFIG_FALLBACK_FILE" > "$FALLBACK_REPOS_FILE"
+ sed -e "s/\$os_release_name/$(sed_escape "$NAME")/g" \
+ -e "s/\$os_release_id/$(sed_escape "$ID")/g" \
+ -e "s/\$os_release_version_id/$(sed_escape "$VERSION_ID")/g" \
+ -e "s/\$os_release_version/$(sed_escape "$VERSION")/g" \
+ -e "s/\$arch/$(sed_escape "$ARCH")/g" "$CONFIG_FALLBACK_FILE" >
"$FALLBACK_REPOS_FILE"
+}
+
+# escape the characters which are special in the sed replacement part
+# $1 - the string to escape
+sed_escape() {
+ printf '%s' "$1" | sed -e 's/[\/&]/\\&/g'
}
# Applies all the updates
@@ -243,7 +292,6 @@
# Reads the URL of the updates from $AGAMA_DUD_INFO and process each one.
install_updates() {
index=0
- self_update_repos=()
if [ -f "$REPO_FILE" ]; then
prepare_chroot
@@ -281,8 +329,14 @@
zypper_options="--gpg-auto-import-keys"
fi
+ # refuse to continue without a self-update repository
+ if [ ${#self_update_repos[@]} -eq 0 ]; then
+ milestone "No self-update repository found, skipping self-update"
+ exit 0
+ fi
+
milestone "Loading repositories..."
- run_command zypper $zypper_options refresh "${self_update_repos[@]}"
+ run_command zypper --non-interactive $zypper_options refresh
"${self_update_repos[@]}"
# build the list of repository options passed to zypper
repo_options=()
@@ -299,10 +353,7 @@
# delete the repository caches, not needed anymore, saves space in RAM disk
run_command zypper clean --all
- # disable the self update repositories (keep them for debugging purposes)
- for repo in "${self_update_repos[@]}"; do
- run_command zypper modifyrepo --disable "$repo"
- done
+ # the self update repositories are disabled in the cleanup handler
}
# add a query parameter to URL