2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-22 23:58:13 +00:00
Commit Graph

176 Commits

Author SHA1 Message Date
Daniel Hilst cd249ac28e Merge pull request #7843 from VersatusHPC/fix/ubuntu-netboot-initrd-firmware
fix(xcat-core): grub2 cannot load the Ubuntu 26.04 ppc64el netboot initrd
2026-09-24 01:40:18 -03:00
Daniel Hilst 5554b79c2d fix(xcat-core): the initrd firmware step reads the root image only
The step that fills lib/firmware in the Ubuntu netboot initrd asked modinfo
about $rootimg_dir/$module and looked a firmware name up under lib/firmware.
The copy step beside it takes a module from $customdir or $pathtofiles first,
and the kernel looks a firmware name up under updates/<kernel>, updates/,
<kernel>/ and lib/firmware. So a custom driver reached the initrd with no
firmware, even when the root image carried it, and a firmware override was left
out of the initrd altogether.

initrd_firmware_files now takes the module directories the copy step searches
and the kernel release. It resolves each module in that order before asking
modinfo, and keeps every firmware file that exists in the four directories the
kernel searches, so the override still wins on the node.

ubuntu_genimage_initrd_firmware.t covers both: its two new cases are red on the
commit before this one.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-17 07:38:47 -03:00
Daniel Hilst 3fcc781fdd fix(xcat-core): grub2 cannot load the Ubuntu 26.04 ppc64el netboot initrd
The ubuntu-26.04-ppc64el diskless node never starts its kernel. SLOF reports
W3411 and E3406 and falls through to disk. The node fetches the kernel and the
initrd in under a minute and fails six minutes later, with no network activity in
between: grub2 has the payload and cannot start it.

genimage copies the whole lib/firmware tree of the root image into the initrd.
That tree is 666 MB on Ubuntu 26.04, which takes the initrd to 719 MB. A 687 MB
initrd boots the same kernel on the same node; a 719 MB one does not.

The firmware copy now takes only the firmware that the drivers in the initrd ask
for, which modinfo reports for each module. The root image keeps its whole tree,
so the node that boots is unchanged.

ubuntu_genimage_initrd_firmware.t drives the firmware step over a root image whose
firmware tree holds files no driver asks for. It fails on the previous commit.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-14 07:54:23 -03:00
Daniel Hilst b7be80d450 fix(xcat-core): the Ubuntu ppc64el netboot image has no dig
genimage returns 2 with "Failed to find usr/bin/dig" for
ubuntu22.04 and ubuntu24.04 on ppc64el, so packimage writes no initrd.gz
and the diskless compute node never boots.

xCAT-server/share/xcat/netboot/ubuntu had a ppc64el package list for
20.04 and 26.04 only. imgutils::get_profile_def_filename then falls back
to compute.pkglist, which installs no dig, no cpio and no chrony.

Add the 22.04 and 24.04 ppc64el lists, and the ppc64le spelling each
release already carries. Both take the content of the 26.04 ppc64el list:
the ppc64el images build their initrd with mkinitrd, so they install
bind9-dnsutils and leave out the dracut packages the x86_64 lists take.

ubuntu_ppc64el_pkglists.t fails without these files.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-14 07:30:16 -03:00
Vinícius Ferrão f1b044f2a8 fix(genimage): take the netboot mirror from the ports archive off amd64
archive.ubuntu.com publishes amd64 and i386 only, so debootstrap could not
find a single package for a ppc64el or riscv64 netboot image and genimage
failed on every architecture except x86. The default mirror is now the
ports archive for those architectures. site.ubuntu_apt_mirror still
overrides it, for a local mirror that serves every architecture.

Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-09-08 17:02:04 -03:00
Vinícius Ferrão 7d161b822b feat(xCAT-server): add the riscv64 Ubuntu package lists
24.04 and 26.04 had no riscv64 package list, so a diskless image or an install
for the architecture fell back to the generic list and reached debootstrap
without a kernel or the tools the boot scripts call.

The lists hold the same packages as their x86_64 counterparts. Every one of
them is published for riscv64 in noble and resolute, main or universe.

Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-09-08 17:02:03 -03:00
Vinícius Ferrão 75fa389d33 feat(genimage): add the riscv64 resolver libraries to the netboot image
The image carries the name service libraries of its architecture, and riscv64
matched neither the x86_64 nor the ppc64el branch. It fell through to the
generic path, which looks for lib/libnss_dns.so.2, so a riscv64 image shipped
without a resolver and the node could not resolve any name.

Ubuntu keeps them in lib/riscv64-linux-gnu, confirmed in the 24.04.4 riscv64
server filesystem.

Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-09-08 17:02:03 -03:00
Vinícius Ferrão 84598e7c8c fix(ubuntu): drop package names current releases no longer carry
The shared Ubuntu lists serve every release and architecture without a list
of its own, and ospkgs hands the whole list to one apt-get install, so one
unknown name loses every package on it. ntp and ntpdate are gone from 26.04.
libodbc1 is the unixODBC runtime name up to 22.04. libvirt-bin is gone from
20.04 on and qemu-kvm from 22.04 on.

The shared lists keep ntp and ntpdate, so releases up to 24.04 keep the
daemon they had. 26.04 gets release lists that carry chrony. unixodbc
replaces libodbc1 on every release, and the odbcsetup postscript keeps its
runtime. The service lists add libdbd-pg-perl beside libdbd-mysql-perl, as a
service node may run the xCAT database on PostgreSQL. libvirt-daemon-system
with libvirt-clients replaces libvirt-bin from 18.04 on; 12.04, 14.04 and
16.04 keep kvm lists with the old names.

qemu-kvm was a transitional name for the emulator of the host architecture,
and no current release has one name for that. Per-architecture kvm lists
name the native one: qemu-system-x86 on x86_64, qemu-system-ppc on ppc64el,
qemu-system-misc on 24.04 riscv64, with ppc64le linked to ppc64el as the
other lists do. The shared kvm lists fall back to
qemu-system, which carries every emulator, so an architecture without a list
of its own still gets one. On 26.04 riscv64 libvirt-daemon-system depends on
qemu-kvm or qemu-system and nothing provides qemu-kvm, so apt installs that
fallback there whatever the list names. Every kvm list names qemu-utils:
ospkgs installs without recommends, and libvirt needs qemu-img for the qcow2
volumes kvm.pm creates.
2026-09-08 11:42:31 -03:00
Vinícius Ferrão 1efeef4895 refactor(genimage): take the debootstrap architecture from the shared mapping
genimage translated one architecture for debootstrap, x86_64 to amd64, and
compared against a bareword rather than a string, which only resolves because
the script does not enable strict subs.

Read the name from xCAT::Utils, which genimage already loads. Every
architecture reaches debootstrap with the name it does today.
2026-09-03 19:44:14 -03:00
Daniel Hilst 067eda810e fix(xcat-core): configure a server-capable NTP daemon on Ubuntu MNs
Add xCAT::NTP::Backend, a selector for the NTP daemon xCAT configures, in the same
spirit as xCAT::DHCP::Backend. It honours site.ntpbackend, defaults per distro family
(EL7+/SLES15+ chrony, older ntpd, Ubuntu/Debian chrony), and downgrades to whichever
of chrony/ntpd is actually installed rather than installing a second daemon. makentp
selects through it instead of probing /usr/sbin/chronyd directly, so the choice is one
unit-tested code path.

Guarantee the daemon at install time: the xcat metapackage now Depends on
"chrony | ntp" and the xCAT rpm Requires "(chrony or ntp)". Both sit beside the
existing service dependencies the metapackage already declares -- isc-dhcp-server|kea,
apache2, nfs-kernel-server -- because an MN that cannot serve time cannot serve its
compute nodes, and Ubuntu's default systemd-timesyncd is a client only.

Stop requiring hwclock in setupntp. It only persists the already-stepped system clock
to the RTC, and Ubuntu 24.04 moved it to util-linux-extra, absent on minimal images --
so a fatal check_exec_or_exit aborted the entire NTP setup, including the clock step
that does not use it. Use it when present, log and continue when not, and pull
util-linux-extra through Recommends and the diskless pkglist so it usually is.

Disable systemd-timesyncd there too. It ships as part of systemd rather than a
time-daemon package, so nothing displaces it, and it keeps disciplining the clock
against the daemon being configured.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-09-01 18:57:18 -03:00
Vinícius Ferrão 801677d447 genimage: include available Mellanox InfiniBand drivers 2026-08-28 14:30:43 -03:00
Vinícius Ferrão c6c7df99bd genimage: resolve Mellanox defaults from target kernel
Resolve optional Mellanox network drivers against the target image's selected kernel. Keep real mlx_en modules, fall back to mlx4_en, include available mlx5_core, and omit missing defaults without changing explicitly requested netdrivers.
2026-08-28 12:48:17 -03:00
Daniel Hilst c2f3de2289 fix(xcat-core): make xCAT work on Ubuntu 26.04 (resolute)
Promote bind9 from Recommends to Depends on the xcat and xcatsn metapackages. bind9 is
required by makedns, so it must be a hard dependency regardless of the system's APT
recommendation policy -- xCAT manages the cluster DNS through makedns/named, which
makes a DNS server as essential to a management or a service node as the DHCP backend
already declared beside it ("isc-dhcp-server | kea"). As a Recommends it was installed
only while that policy asked for it: an Ubuntu 26.04 management node came up with no
/usr/sbin/named and makedns failing with "failed to start named".

Strip only a trailing third component when deriving the debootstrap suite in the
Ubuntu netboot genimage. The previous s/\.\d+$// also removed the minor from a
two-part osvers, so an initial release with no point-release ISO -- ubuntu26.04, but
equally an initial-release 18.04/20.04/22.04 -- reached debootstrap as a bare major.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-08-24 18:15:41 -03:00
Vinícius Ferrão 7d59ccaccb fix(netboot): allow the rootfs image to be downloaded over HTTPS
The diskless/statelite xcatroot scripts only recognize an http:// rootfs
image URL; an https:// imgurl falls through to the "unsupported" path even
though the download itself already uses wget/curl on the full $imgurl, both
of which handle TLS.

Accept xhttps alongside xhttp in the protocol test. Applied to every current
xcatroot variant (rh dracut/dracut_033/dracut_047/dracut_105 stateless and
statelite, plus fedora, sles and ubuntu), so HTTPS works uniformly rather
than only on the three rh scripts the original touched.

Recovered from the unmerged lenovobuild branch (original 751bce24, extended
to the dracut generations and distros that postdate it).

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-22 00:49:04 -03:00
Daniel Hilst 3a5cbef630 fix(xcat-server): stop Ubuntu diskless images carrying the builder's identity
The Ubuntu netboot image inherited the build host's /etc/hostname --
genimage's chroot shares the build host's UTS namespace, so /etc/hostname
ended up as the MN's name and every diskless node booted as that name
instead of its own ("hostname poisoning"). xCAT keys on IP/MAC so
provisioning still succeeds, but the node's local identity (hostname,
prompt, syslog) is wrong and N nodes share one name. The image also
shipped no netplan, so systemd-networkd-wait-online failed. In
compute.postinstall, clear /etc/hostname so each node takes its name at
boot from DHCP (udhcpc option host-name) / xCAT, and drop in a DHCP
netplan (optional, dhcp-identifier mac) so systemd-networkd configures the
boot NIC. Ubuntu-only.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-06-24 14:20:27 -03:00
Daniel Hilst 03e1559989 fix(xcat-server): default the Ubuntu apt mirror for netboot and Subiquity
The Ubuntu live-server ISO copycds imports is not a complete apt pool, so
both Ubuntu install paths fail without an external mirror: the netboot
genimage's debootstrap from the ISO-only pkgdir cannot resolve packages,
and the Subiquity diskful install (Template.pm) fell back to the airgapped
file:///cdrom config. Default site.ubuntu_apt_mirror to
http://archive.ubuntu.com/ubuntu when unset (overridable for local/geo/
ports mirrors). In the Ubuntu genimage, when pkgdir has no http mirror,
build the debootstrap source and chroot sources.list from that mirror with
the codename derived from osvers and the release/-updates/-security pockets
(main + universe) -- the compute pkglist needs universe (busybox-static,
dracut*) and the security-updated openssh. Ubuntu-only; EL netboot
(netboot/rh) and copycds/packimage are untouched.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-06-24 14:20:27 -03:00
Vinícius Ferrão 7b20bbd187 Guard Ubuntu live media package sources 2026-05-05 21:40:04 -03:00
Vinícius Ferrão 023beff053 Add Ubuntu 26.04 provisioning support 2026-05-01 11:13:45 -03:00
Vinícius Ferrão 1babd7b0e4 fix: improve Ubuntu LTS provisioning support 2026-04-29 18:19:12 -03:00
Markus Hilger 2643c1edd6 Remove useless executable bit 2024-05-07 16:19:25 +02:00
Mark Gurevich 3b0442797c Support for xCAT installation on Ubuntu20 2022-09-21 10:02:27 -04:00
Markus Hilger be8297e4c9 Fix warnings of newer dracut versions
dracut: WARNING: <key>+=" <values> ": <values> should have surrounding white spaces!
dracut: WARNING: This will lead to unwanted side effects! Please fix the configuration file.

dracut commit: https://github.com/dracutdevs/dracut/commit/dfe2247a43d6a216d9af533825c9a103e3b056cd
2022-05-18 11:54:57 +02:00
Mark Gurevich c0f1c51ba6 Add diskless package lists for Ubuntu20 2022-04-07 16:33:09 -04:00
Mark Gurevich 1c88d50163 Improve genimage message 2020-06-01 14:29:12 -04:00
Mark Gurevich 7fab544d98 Ubuntu support for squashfs 2020-05-07 14:35:26 -04:00
cxhong e542c012c9 Remove ldd messages from ubuntu genimage command 2020-05-06 15:24:36 -04:00
Mark Gurevich a9e059d90f Do not use modinfo to test module availability 2020-05-04 16:23:42 -04:00
Mark Gurevich a002157251 Use overlay mount type for squashfs diskless images 2020-04-22 16:03:29 -04:00
Gᴏɴɢ Jie ae3bf7b314 Revert "For Ubuntu 18.04.2, change back to use the original linux-image-generic kernel" 2019-05-23 15:41:52 +08:00
GONG Jie 7f2d26d0e0 For Ubuntu 18.04.2, change back to use the original linux-image-generic kernel 2019-05-23 15:07:46 +08:00
yangsong 2c522a10db Merge pull request #6315 from neo954/ubuntu16.04.5
Revised package list file for Ubuntu16.04.5
2019-05-22 17:23:16 +08:00
GONG Jie 2e9022208a Diskless package list file for Ubuntu 16.04.5 2019-05-14 17:40:23 +08:00
GONG Jie 2273f7f145 Remove compute.ubuntu16.04.pkglist 2019-05-14 17:40:03 +08:00
GONG Jie bedca476a0 Add kernel module tg3 to diskless initrd image for ppc64el 2019-05-14 13:47:35 +08:00
GONG Jie ad1df10c74 Add pkglist files for Ubuntu 18.04.2 2019-05-07 13:53:18 +08:00
Mark Gurevich ac6f514ca9 Undo verify packaging command PR 6216 2019-04-12 13:24:49 -04:00
Mark Gurevich 54a55a4d0d Verify debootstrap command can be executed 2019-04-10 14:26:33 -04:00
yangsong a60c79e0c1 support site.httpport in ubuntu diskless (#5865) 2018-12-04 11:14:19 +08:00
Yuan Bai b117be552a refine tag prefix xcat.deployment for sles/ubuntu provision (#5831)
* refine tag prefix xcat.deployment for sles/ubuntu provision
2018-11-23 10:00:02 +08:00
Yuan Bai cfdce8a7a5 fix 5733 genimage in ubuntu16.04.5 failure (#5781) 2018-11-09 14:12:56 +08:00
Gᴏɴɢ Jie f7a3372a49 Still need the busybox cpio workaround in Ubuntu 18.04.1 (#5562) 2018-08-28 14:23:29 +08:00
GONG Jie 8caa0f2290 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/genimage 2017-12-31 23:59:59 +00:00
GONG Jie 5f07d0f7f6 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/dracut/xcatroot 2017-12-31 23:59:59 +00:00
GONG Jie 2a3a62077c Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/dracut/install.netboot 2017-12-31 23:59:59 +00:00
GONG Jie 2364a70df5 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu16.04.pkglist 2017-12-31 23:59:59 +00:00
GONG Jie 0c2737a28f Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu14.04.pkglist 2017-12-31 23:59:59 +00:00
GONG Jie fc0540a620 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu12.04.2.pkglist 2017-12-31 23:59:59 +00:00
GONG Jie e8f125d5d6 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.ubuntu12.04.1.pkglist 2017-12-31 23:59:59 +00:00
GONG Jie 6424996b80 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.postinstall 2017-12-31 23:59:59 +00:00
GONG Jie 57bba34896 Remove trailing spaces in file xCAT-server/share/xcat/netboot/ubuntu/compute.pkglist 2017-12-31 23:59:59 +00:00