Skip to content

fix(xcat-core): the Ubuntu POWER diskful install never leaves the installer - #7841

Merged
dhilst merged 5 commits into
xcat2:masterfrom
VersatusHPC:fix/ubuntu-power-diskful-installer-loop
Sep 17, 2026
Merged

dhilst merged 5 commits into
xcat2:masterfrom
VersatusHPC:fix/ubuntu-power-diskful-installer-loop

Conversation

@dhilst

@dhilst dhilst commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

reg_linux_diskfull_installation_flat fails on ubuntu-22-ppc64le-devel and
ubuntu-24-ppc64le-devel. The Subiquity installer starts, errors in its early-commands and
reboots, nine times in 75 minutes, and the case ends on Permission denied (publickey,password).
mkinstall in debian.pm selected pre.ubuntu.subiquity and then replaced it with
pre.ubuntu.ppc64 for every ppc64 node, and that script writes a partman recipe Subiquity cannot
parse. install_prescript now decides from the installer and the architecture together, and
pre.ubuntu.subiquity gains a PReP branch. debian_install_prescript.t covers it. The branch
stacks on fix/ci-ubuntu-ppc-boot-files, so open it after that pull request merges.

reg_linux_diskfull_installation_flat fails on ubuntu-22-ppc64le-devel and
ubuntu-24-ppc64le-devel in build xcat2#121 of xcat-core-devel-ubuntu-cd. The node
answers ping but the case ends on
"root@xcat25-cn: Permission denied (publickey,password)" and the node status
never leaves powering-on.

The serial console shows why: the Subiquity installer starts, runs the
early-commands, errors, tars /var/log/installer to port 8080 and reboots. Nine
cycles in 75 minutes. The installed system never exists, so the address belongs
to the live installer and it refuses the root key.

Two causes, both POWER-only.

mkinstall picks pre.ubuntu.subiquity, then overwrites that choice with
pre.ubuntu.ppc64 for every ppc64 node. That script writes a partman recipe;
the early-commands append it to /autoinstall.yaml, which Subiquity then cannot
parse.

pre.ubuntu.subiquity has a UEFI branch and a BIOS branch and nothing else, so a
ppc64el node takes the BIOS branch and is given a bios_grub partition. POWER
firmware boots from a PReP partition.

debian_install_prescript.t drives the script choice, which mkinstall keeps
inline, so it bails out. ubuntu_subiquity_storage.t gains a PReP case; its
extracted block asks uname for the machine architecture, which the block does
not do yet.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
… by hand

ubuntu_subiquity_storage.t rewrites every /tmp/partitionfile redirect in the
extracted block into a scratch tree, and bails out unless it rewrote exactly
two. The number is the count of firmware branches the script had when the
harness was written, so adding a branch stops the test rather than covering it.

The guard now counts the branches it found and requires one redirect each, and
fails separately if any path escaped the sandbox. It still bails out on a block
with fewer than two branches, which would mean the extraction stopped matching.

Still red on the PReP case of the previous commit: the block does not ask uname
for the machine architecture yet.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
…taller

reg_linux_diskfull_installation_flat fails on ubuntu-22-ppc64le-devel and
ubuntu-24-ppc64le-devel in build xcat2#121 of xcat-core-devel-ubuntu-cd. The
Subiquity installer starts, errors in its early-commands, tars
/var/log/installer to port 8080 and reboots, nine times in 75 minutes. No
system is ever installed, so the address answers from the live installer and
the case ends on
"root@xcat25-cn: Permission denied (publickey,password)".

mkinstall in xCAT-server/lib/xcat/plugins/debian.pm selected
pre.ubuntu.subiquity and then replaced it with pre.ubuntu.ppc64 for every
ppc64 node, whichever installer was in use. pre.ubuntu.ppc64 writes a partman
recipe, and the early-commands append it to /autoinstall.yaml, which Subiquity
cannot parse.

pre.ubuntu.subiquity offered a UEFI branch and a BIOS branch, so a ppc64el node
took the BIOS branch and was given a bios_grub partition. POWER firmware loads
the boot loader from a PReP partition.

install_prescript now returns the script from the installer and the
architecture together, and the ppc64 script is reached only on the
debian-installer path. pre.ubuntu.subiquity gains a PReP branch, taken when
uname reports a POWER machine, which flags an 8M first partition prep and makes
that partition the grub device.

debian_install_prescript.t and the PReP case of ubuntu_subiquity_storage.t fail
without these changes.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
…he whole suite

debian_install_prescript.t and ubuntu_subiquity_storage.t called BAIL_OUT
at eight places where an extraction or a fixture was not what they
expected. prove stops every remaining file on a bail-out, so one changed
script hides the results of every test that would have run after it. die
is just as loud and costs only its own file.

Three comments also carried the incident rather than the constraint. The
prescript test header named a build number, a cell, a case and the ssh
error the node produced nine times; the boot-file test repeated the
nodeset message and the media table below it.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
@dhilst dhilst self-assigned this Sep 15, 2026
@dhilst dhilst added this to the 2.19 milestone Sep 15, 2026
…ads is missing

debian_install_prescript.t called plan skip_all when xCAT-server/lib/xcat/plugins/debian.pm was absent, so a checkout that lost
the file reported 0 tests and exit 0. A test that cannot fail measures nothing.

Die instead, which is what makentp_ntp_deps.t already does for setupntp.

With xCAT-server/lib/xcat/plugins/debian.pm moved aside the file now exits 2 and prints "debian.pm not found";
before this change it exited 0 and printed "1..0 # SKIP debian.pm not found". With the file
present the test passes either way.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
viniciusferrao
viniciusferrao previously approved these changes Sep 17, 2026

@viniciusferrao viniciusferrao left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dhilst
dhilst dismissed viniciusferrao’s stale review September 17, 2026 14:37

The merge-base changed after approval.

@dhilst
dhilst enabled auto-merge September 17, 2026 14:37
@dhilst dhilst closed this Sep 17, 2026
auto-merge was automatically disabled September 17, 2026 14:38

Pull request was closed

@dhilst dhilst reopened this Sep 17, 2026
@dhilst
dhilst enabled auto-merge September 17, 2026 14:38
@dhilst dhilst modified the milestones: 2.19, 2.19.1 Sep 17, 2026
@viniciusferrao
viniciusferrao self-requested a review September 17, 2026 15:37
@dhilst
dhilst merged commit 2e6ca07 into xcat2:master Sep 17, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants