Skip to content

Commit 20cd54d

Browse files
committed
qemu: experimental support for PPC64LE
Signed-off-by: Akihiro Suda <[email protected]>
1 parent 612d0d7 commit 20cd54d

27 files changed

+135
-26
lines changed

Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ config GUESTAGENT_ARCH_S390X
3737
Build lima-guestagent for "s390x" Arch
3838
default y
3939

40+
config GUESTAGENT_ARCH_PPC64LE
41+
bool "guestagent Arch: ppc64le"
42+
help
43+
Build lima-guestagent for "ppc64le" Arch
44+
default y
45+
4046
config GUESTAGENT_COMPRESS
4147
bool "guestagent compress"
4248
help

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ LINUX_GUESTAGENT_PATH_COMMON = _output/share/lima/lima-guestagent.Linux-
273273
# How to add architecture specific guestagent:
274274
# 1. Add the architecture to GUESTAGENT_ARCHS
275275
# 2. Add ENVS_$(*_GUESTAGENT_PATH_COMMON)<arch> to set GOOS, GOARCH, and other necessary environment variables
276-
LINUX_GUESTAGENT_ARCHS = aarch64 armv7l riscv64 s390x x86_64
276+
LINUX_GUESTAGENT_ARCHS = aarch64 armv7l ppc64le riscv64 s390x x86_64
277277

278278
ifeq ($(CONFIG_GUESTAGENT_OS_LINUX),y)
279279
ALL_GUESTAGENTS_NOT_COMPRESSED += $(addprefix $(LINUX_GUESTAGENT_PATH_COMMON),$(LINUX_GUESTAGENT_ARCHS))
@@ -321,6 +321,7 @@ additional-guestagents: $(ADDITIONAL_GUESTAGENTS)
321321
# environment variables for linx-guestagent. these variable are used for checking force build.
322322
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)aarch64 = CGO_ENABLED=0 GOOS=linux GOARCH=arm64
323323
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)armv7l = CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7
324+
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)ppc64le = CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le
324325
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)riscv64 = CGO_ENABLED=0 GOOS=linux GOARCH=riscv64
325326
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)s390x = CGO_ENABLED=0 GOOS=linux GOARCH=s390x
326327
ENVS_$(LINUX_GUESTAGENT_PATH_COMMON)x86_64 = CGO_ENABLED=0 GOOS=linux GOARCH=amd64

cmd/limactl/editflags/editflags.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ func RegisterCreate(cmd *cobra.Command, commentPrefix string) {
7373
registerEdit(cmd, commentPrefix)
7474
flags := cmd.Flags()
7575

76-
flags.String("arch", "", commentPrefix+"Machine architecture (x86_64, aarch64, riscv64, armv7l, s390x)") // colima-compatible
76+
flags.String("arch", "", commentPrefix+"Machine architecture (x86_64, aarch64, riscv64, armv7l, s390x, ppc64le)") // colima-compatible
7777
_ = cmd.RegisterFlagCompletionFunc("arch", func(*cobra.Command, []string, string) ([]string, cobra.ShellCompDirective) {
78-
return []string{"x86_64", "aarch64", "riscv64", "armv7l", "s390x"}, cobra.ShellCompDirectiveNoFileComp
78+
return []string{"x86_64", "aarch64", "riscv64", "armv7l", "s390x", "ppc64le"}, cobra.ShellCompDirectiveNoFileComp
7979
})
8080

8181
flags.String("containerd", "", commentPrefix+"containerd mode (user, system, user+system, none)")

config.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ CONFIG_GUESTAGENT_OS_LINUX=y
22
CONFIG_GUESTAGENT_ARCH_X8664=y
33
CONFIG_GUESTAGENT_ARCH_AARCH64=y
44
CONFIG_GUESTAGENT_ARCH_ARMV7L=y
5+
CONFIG_GUESTAGENT_ARCH_PPC64LE=y
56
CONFIG_GUESTAGENT_ARCH_RISCV64=y
67
CONFIG_GUESTAGENT_ARCH_S390X=y
78
CONFIG_GUESTAGENT_COMPRESS=n

hack/inject-cmdline-to-template.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ case "${arch}" in
2626
amd64 | x86_64) arch=x86_64 ;;
2727
aarch64 | arm64) arch=aarch64 ;;
2828
armv7l | armhf) arch=armv7l ;;
29+
ppc64el | ppc64le) arch=ppc64le ;;
30+
s390x) arch=s390x ;;
2931
riscv64) arch=riscv64 ;;
3032
*)
3133
echo "Unsupported arch: ${arch}" >&2

hack/update-template.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ function limayaml_arch() {
8484
arch=${arch/amd64/x86_64}
8585
arch=${arch/arm64/aarch64}
8686
arch=${arch/armhf/armv7l}
87+
arch=${arch/ppc64el/ppc64le}
8788
echo "${arch}"
8889
}
8990

pkg/limatmpl/locator.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ var archKeywords = map[string]limayaml.Arch{
139139
"arm64": limayaml.AARCH64,
140140
"armhf": limayaml.ARMV7L,
141141
"armv7l": limayaml.ARMV7L,
142+
"ppc64el": limayaml.PPC64LE,
143+
"ppc64le": limayaml.PPC64LE,
142144
"riscv64": limayaml.RISCV64,
143145
"s390x": limayaml.S390X,
144146
"x86_64": limayaml.X8664,

pkg/limayaml/defaults.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ func defaultCPUType() CPUType {
7777
AARCH64: "max",
7878
ARMV7L: "max",
7979
X8664: defaultX8664,
80+
PPC64LE: "max",
8081
RISCV64: "max",
8182
S390X: "max",
8283
}
@@ -1095,6 +1096,8 @@ func NewArch(arch string) Arch {
10951096
}
10961097
logrus.Warnf("Unknown arm: %d", arm)
10971098
return arch
1099+
case "ppc64le":
1100+
return PPC64LE
10981101
case "riscv64":
10991102
return RISCV64
11001103
case "s390x":
@@ -1283,9 +1286,10 @@ func IsNativeArch(arch Arch) bool {
12831286
nativeX8664 := arch == X8664 && runtime.GOARCH == "amd64"
12841287
nativeAARCH64 := arch == AARCH64 && runtime.GOARCH == "arm64"
12851288
nativeARMV7L := arch == ARMV7L && runtime.GOARCH == "arm" && goarm() == 7
1289+
nativePPC64LE := arch == PPC64LE && runtime.GOARCH == "ppc64le"
12861290
nativeRISCV64 := arch == RISCV64 && runtime.GOARCH == "riscv64"
12871291
nativeS390X := arch == S390X && runtime.GOARCH == "s390x"
1288-
return nativeX8664 || nativeAARCH64 || nativeARMV7L || nativeRISCV64 || nativeS390X
1292+
return nativeX8664 || nativeAARCH64 || nativeARMV7L || nativePPC64LE || nativeRISCV64 || nativeS390X
12891293
}
12901294

12911295
func unique(s []string) []string {

pkg/limayaml/defaults_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ func TestFillDefault(t *testing.T) {
5050
t.Skipf("unsupported GOARM: %d", arm)
5151
}
5252
arch = ARMV7L
53+
case "ppc64le":
54+
arch = PPC64LE
5355
case "riscv64":
5456
arch = RISCV64
5557
case "s390x":
@@ -340,6 +342,7 @@ func TestFillDefault(t *testing.T) {
340342
AARCH64: "arm64",
341343
ARMV7L: "armhf",
342344
X8664: "amd64",
345+
PPC64LE: "ppc64le",
343346
RISCV64: "riscv64",
344347
S390X: "s390x",
345348
},
@@ -559,6 +562,7 @@ func TestFillDefault(t *testing.T) {
559562
AARCH64: "uber-arm",
560563
ARMV7L: "armv8",
561564
X8664: "pentium",
565+
PPC64LE: "power10",
562566
RISCV64: "sifive-u54",
563567
S390X: "z14",
564568
},

pkg/limayaml/limayaml.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const (
7676
X8664 Arch = "x86_64"
7777
AARCH64 Arch = "aarch64"
7878
ARMV7L Arch = "armv7l"
79+
PPC64LE Arch = "ppc64le"
7980
RISCV64 Arch = "riscv64"
8081
S390X Arch = "s390x"
8182

@@ -91,7 +92,7 @@ const (
9192

9293
var (
9394
OSTypes = []OS{LINUX}
94-
ArchTypes = []Arch{X8664, AARCH64, ARMV7L, RISCV64, S390X}
95+
ArchTypes = []Arch{X8664, AARCH64, ARMV7L, PPC64LE, RISCV64, S390X}
9596
MountTypes = []MountType{REVSSHFS, NINEP, VIRTIOFS, WSLMount}
9697
VMTypes = []VMType{QEMU, VZ, WSL2}
9798
)

pkg/limayaml/validate.go

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,8 @@ func validateFileObject(f File, fieldName string) error {
3535
}
3636
// f.Location does NOT need to be accessible, so we do NOT check os.Stat(f.Location)
3737
}
38-
switch f.Arch {
39-
case X8664, AARCH64, ARMV7L, RISCV64, S390X:
40-
default:
41-
return fmt.Errorf("field `arch` must be %q, %q, %q, %q, or %q; got %q", X8664, AARCH64, ARMV7L, RISCV64, S390X, f.Arch)
38+
if !slices.Contains(ArchTypes, f.Arch) {
39+
return fmt.Errorf("field `arch` must be one of %v; got %q", ArchTypes, f.Arch)
4240
}
4341
if f.Digest != "" {
4442
if !f.Digest.Algorithm().Available() {
@@ -77,12 +75,9 @@ func Validate(y *LimaYAML, warn bool) error {
7775
default:
7876
return fmt.Errorf("field `os` must be %q; got %q", LINUX, *y.OS)
7977
}
80-
switch *y.Arch {
81-
case X8664, AARCH64, ARMV7L, RISCV64, S390X:
82-
default:
83-
return fmt.Errorf("field `arch` must be %q, %q, %q, %q or %q; got %q", X8664, AARCH64, ARMV7L, RISCV64, S390X, *y.Arch)
78+
if !slices.Contains(ArchTypes, *y.Arch) {
79+
return fmt.Errorf("field `arch` must be one of %v; got %q", ArchTypes, *y.Arch)
8480
}
85-
8681
switch *y.VMType {
8782
case QEMU:
8883
// NOP
@@ -125,10 +120,7 @@ func Validate(y *LimaYAML, warn bool) error {
125120
}
126121

127122
for arch := range y.CPUType {
128-
switch arch {
129-
case AARCH64, X8664, ARMV7L, RISCV64, S390X:
130-
// these are the only supported architectures
131-
default:
123+
if !slices.Contains(ArchTypes, arch) {
132124
return fmt.Errorf("field `cpuType` uses unsupported arch %q", arch)
133125
}
134126
}
@@ -589,7 +581,7 @@ func warnExperimental(y *LimaYAML) {
589581
logrus.Warn("`mountType: virtiofs` on Linux is experimental")
590582
}
591583
switch *y.Arch {
592-
case RISCV64, ARMV7L, S390X:
584+
case RISCV64, ARMV7L, S390X, PPC64LE:
593585
logrus.Warnf("`arch: %s ` is experimental", *y.Arch)
594586
}
595587
if y.Video.Display != nil && strings.Contains(*y.Video.Display, "vnc") {

pkg/qemu/qemu.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,8 @@ func Cmdline(ctx context.Context, cfg Config) (exe string, args []string, err er
540540
}
541541
}
542542
}
543-
if !strings.Contains(string(features.CPUHelp), strings.Split(cpu, ",")[0]) {
543+
// `qemu-system-ppc64 -help` does not show "max", but it is actually accepted
544+
if cpu != "max" && !strings.Contains(string(features.CPUHelp), strings.Split(cpu, ",")[0]) {
544545
return "", nil, fmt.Errorf("cpu %q is not supported by %s", cpu, exe)
545546
}
546547
args = appendArgsIfNoConflict(args, "-cpu", cpu)
@@ -587,6 +588,9 @@ func Cmdline(ctx context.Context, cfg Config) (exe string, args []string, err er
587588
case limayaml.ARMV7L:
588589
machine := "virt,accel=" + accel
589590
args = appendArgsIfNoConflict(args, "-machine", machine)
591+
case limayaml.PPC64LE:
592+
machine := "pseries,accel=" + accel
593+
args = appendArgsIfNoConflict(args, "-machine", machine)
590594
case limayaml.S390X:
591595
machine := "s390-ccw-virtio,accel=" + accel
592596
args = appendArgsIfNoConflict(args, "-machine", machine)
@@ -602,7 +606,7 @@ func Cmdline(ctx context.Context, cfg Config) (exe string, args []string, err er
602606
logrus.Warnf("field `firmware.legacyBIOS` is not supported for architecture %q, ignoring", *y.Arch)
603607
legacyBIOS = false
604608
}
605-
noFirmware := *y.Arch == limayaml.S390X || legacyBIOS
609+
noFirmware := *y.Arch == limayaml.PPC64LE || *y.Arch == limayaml.S390X || legacyBIOS
606610
if !noFirmware {
607611
var firmware string
608612
firmwareInBios := runtime.GOOS == "windows"
@@ -876,7 +880,7 @@ func Cmdline(ctx context.Context, cfg Config) (exe string, args []string, err er
876880
args = append(args, "-device", "virtio-keyboard-pci")
877881
args = append(args, "-device", "virtio-"+input+"-pci")
878882
args = append(args, "-device", "qemu-xhci,id=usb-bus")
879-
case limayaml.AARCH64, limayaml.ARMV7L, limayaml.S390X:
883+
case limayaml.AARCH64, limayaml.ARMV7L, limayaml.PPC64LE, limayaml.S390X:
880884
if features.VersionGEQ7 {
881885
args = append(args, "-device", "virtio-gpu")
882886
args = append(args, "-device", "virtio-keyboard-pci")
@@ -1093,10 +1097,14 @@ func VirtiofsdCmdline(cfg Config, mountIndex int) ([]string, error) {
10931097

10941098
// qemuArch returns the arch string used by qemu.
10951099
func qemuArch(arch limayaml.Arch) string {
1096-
if arch == limayaml.ARMV7L {
1100+
switch arch {
1101+
case limayaml.ARMV7L:
10971102
return "arm"
1103+
case limayaml.PPC64LE:
1104+
return "ppc64"
1105+
default:
1106+
return arch
10981107
}
1099-
return arch
11001108
}
11011109

11021110
// qemuEdk2 returns the arch string used by `/usr/local/share/qemu/edk2-*-code.fd`.

pkg/sshutil/sshutil.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,5 +425,5 @@ func detectAESAcceleration() bool {
425425
logrus.Warn("Failed to detect CPU features. Assuming that AES acceleration is not available.")
426426
return false
427427
}
428-
return cpu.ARM.HasAES || cpu.ARM64.HasAES || cpu.S390X.HasAES || cpu.X86.HasAES
428+
return cpu.ARM.HasAES || cpu.ARM64.HasAES || cpu.PPC64.IsPOWER8 || cpu.S390X.HasAES || cpu.X86.HasAES
429429
}

templates/_images/almalinux-8.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ images:
1313
arch: s390x
1414
digest: sha256:7f8866a4247ad57c81f5d2c5a0fa64940691f9df1e858a1510d34a0de008eb16
1515

16+
- location: https://repo.almalinux.org/almalinux/8.10/cloud/ppc64le/images/AlmaLinux-8-GenericCloud-8.10-20240819.ppc64le.qcow2
17+
arch: ppc64le
18+
digest: sha256:01acccc74009ebe8ddb13ea6a313479b85a372cb5b898f9090a12a2bd2d62520
19+
1620
# Fallback to the latest release image.
1721
# Hint: run `limactl prune` to invalidate the cache
1822

@@ -25,6 +29,9 @@ images:
2529
- location: https://repo.almalinux.org/almalinux/8/cloud/s390x/images/AlmaLinux-8-GenericCloud-latest.s390x.qcow2
2630
arch: s390x
2731

32+
- location: https://repo.almalinux.org/almalinux/8/cloud/ppc64le/images/AlmaLinux-8-GenericCloud-latest.ppc64le.qcow2
33+
arch: ppc64le
34+
2835
mountTypesUnsupported: [9p]
2936

3037
cpuType:

templates/_images/almalinux-9.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ images:
1111
arch: s390x
1212
digest: sha256:9948ea1c5ee1c6497bde5cec18c71c5f9e50861af4c0f1400c1af504eee2b995
1313

14+
- location: https://repo.almalinux.org/almalinux/9.5/cloud/ppc64le/images/AlmaLinux-9-GenericCloud-9.5-20241120.ppc64le.qcow2
15+
arch: ppc64le
16+
digest: sha256:24feab47c4a89f7d3bda58001dde59ea74904b25edbb68a207f39277c0772522
17+
1418
# Fallback to the latest release image.
1519
# Hint: run `limactl prune` to invalidate the cache
1620

@@ -23,4 +27,7 @@ images:
2327
- location: https://repo.almalinux.org/almalinux/9/cloud/s390x/images/AlmaLinux-9-GenericCloud-latest.s390x.qcow2
2428
arch: s390x
2529

30+
- location: https://repo.almalinux.org/almalinux/9/cloud/ppc64le/images/AlmaLinux-9-GenericCloud-latest.ppc64le.qcow2
31+
arch: ppc64le
32+
2633
mountTypesUnsupported: [9p]

templates/_images/centos-stream-10.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ images:
1010
- location: "https://cloud.centos.org/centos/10-stream/s390x/images/CentOS-Stream-GenericCloud-10-20250429.0.s390x.qcow2"
1111
arch: "s390x"
1212
digest: "sha256:d102c9ee9c1ff72d93f349ab30980c6901be5f85083ef2bfd5a882f164fcb692"
13+
- location: "https://cloud.centos.org/centos/10-stream/ppc64le/images/CentOS-Stream-GenericCloud-10-20250429.0.ppc64le.qcow2"
14+
arch: "ppc64le"
15+
digest: "sha256:75157ca6cdf43ad755f99904219c4b4285126df194ed38d558cd5de0f8f1cd97"
16+
1317
# Fallback to the latest release image.
1418
# Hint: run `limactl prune` to invalidate the cache
1519

@@ -22,6 +26,9 @@ images:
2226
- location: https://cloud.centos.org/centos/10-stream/s390x/images/CentOS-Stream-GenericCloud-10-latest.s390x.qcow2
2327
arch: s390x
2428

29+
- location: https://cloud.centos.org/centos/10-stream/ppc64le/images/CentOS-Stream-GenericCloud-10-latest.ppc64le.qcow2
30+
arch: ppc64le
31+
2532
mountTypesUnsupported: [9p]
2633

2734
firmware:

templates/_images/centos-stream-9.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ images:
1010
- location: "https://cloud.centos.org/centos/9-stream/s390x/images/CentOS-Stream-GenericCloud-9-20250428.0.s390x.qcow2"
1111
arch: "s390x"
1212
digest: "sha256:ec270d96ac73e1fe28587df500fd1602c8d80a7bddf354e25b7d2b91a936993c"
13+
- location: "https://cloud.centos.org/centos/9-stream/ppc64le/images/CentOS-Stream-GenericCloud-9-20250428.0.ppc64le.qcow2"
14+
arch: "ppc64le"
15+
digest: "sha256:926da7012700e4c4f4ef04643baaee9c0ac7293bcdb4acdb8982266b8fe9a908"
16+
1317
# Fallback to the latest release image.
1418
# Hint: run `limactl prune` to invalidate the cache
1519

@@ -22,6 +26,9 @@ images:
2226
- location: https://cloud.centos.org/centos/9-stream/s390x/images/CentOS-Stream-GenericCloud-9-latest.s390x.qcow2
2327
arch: s390x
2428

29+
- location: https://cloud.centos.org/centos/9-stream/ppc64le/images/CentOS-Stream-GenericCloud-9-latest.ppc64le.qcow2
30+
arch: ppc64le
31+
2532
mountTypesUnsupported: [9p]
2633

2734
firmware:

templates/_images/debian-11.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ images:
77
- location: "https://cloud.debian.org/images/cloud/bullseye/20250429-2097/debian-11-genericcloud-arm64-20250429-2097.qcow2"
88
arch: "aarch64"
99
digest: "sha512:f27fa0af9ab5edd232d8d418daa755ffe27d6382b25208f01c4959444c7968629e91f9ea112cbffc49ec29536dab02f30edcdacfdff588ccad16a99a572bba0f"
10+
- location: "https://cloud.debian.org/images/cloud/bullseye/20250429-2097/debian-11-genericcloud-ppc64el-20250429-2097.qcow2"
11+
arch: "ppc64le"
12+
digest: "sha512:ab23cc83b58f0d63450277d6d94a173ea2503ee0594c535a4432eca130cd5d06a646b24bae8bdcf633e73e2fc4dfeaffac9c5ec213c7267f3f8db048d256e85f"
13+
1014
# Fallback to the latest release image.
1115
# Hint: run `limactl prune` to invalidate the cache
1216

@@ -16,6 +20,9 @@ images:
1620
- location: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-arm64.qcow2
1721
arch: aarch64
1822

23+
- location: https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-ppc64el.qcow2
24+
arch: ppc64le
25+
1926
mountTypesUnsupported: [9p]
2027

2128
# debian-11 seems incompatible with vz

templates/_images/debian-12.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ images:
77
- location: "https://cloud.debian.org/images/cloud/bookworm/20250428-2096/debian-12-genericcloud-arm64-20250428-2096.qcow2"
88
arch: "aarch64"
99
digest: "sha512:a669b9b82fc3afc8c9ef84c7e9a38ffdec060b51b47fe33a66f2b65d0da9a742f9645a4fa24b5c8cb4e5a37123a0ae4ad810410c4160a6f6825c7189c296f5ec"
10+
- location: "https://cloud.debian.org/images/cloud/bookworm/20250428-2096/debian-12-genericcloud-ppc64el-20250428-2096.qcow2"
11+
arch: "ppc64le"
12+
digest: "sha512:a40a41d341e5e76ff189ffcc172a510617f1af46bb2a08e54b1570cd594e99c69912640b007a0581232c6e3a22e7a3d38de3babf70aced68ba902726146ee628"
13+
1014
# Fallback to the latest release image.
1115
# Hint: run `limactl prune` to invalidate the cache
1216

@@ -16,4 +20,7 @@ images:
1620
- location: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-arm64.qcow2
1721
arch: aarch64
1822

23+
- location: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-ppc64el.qcow2
24+
arch: ppc64le
25+
1926
mountTypesUnsupported: [9p]

templates/_images/rocky-9.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ images:
77
arch: aarch64
88
digest: sha256:5443bcc0507fadc3d7bd3e8d266135ab8db6966c703216933f824164fd3252f1
99

10+
- location: https://dl.rockylinux.org/pub/rocky/9.5/images/ppc64le/Rocky-9-GenericCloud-Base-9.5-20241118.0.ppc64le.qcow2
11+
arch: ppc64le
12+
digest: sha256:814a5b80bacb370baa705766de40c4c96e44cc7fa03fcb6f41c8dfbc89aa971a
13+
1014
# Fallback to the latest release image.
1115
# Hint: run `limactl prune` to invalidate the cache
1216

@@ -16,4 +20,7 @@ images:
1620
- location: https://dl.rockylinux.org/pub/rocky/9/images/aarch64/Rocky-9-GenericCloud.latest.aarch64.qcow2
1721
arch: aarch64
1822

23+
- location: https://dl.rockylinux.org/pub/rocky/9/images/ppc64le/Rocky-9-GenericCloud.latest.ppc64le.qcow2
24+
arch: ppc64le
25+
1926
mountTypesUnsupported: [9p]

0 commit comments

Comments
 (0)