From 108f97c77dc0250d0bf18843f14a61b3e133b5e4 Mon Sep 17 00:00:00 2001 From: bra-fsn Date: Thu, 12 Nov 2026 21:16:34 +0100 Subject: [PATCH 1/5] sys-kernel/coreos-modules: Enable CONFIG_GVE for arm64 Move CONFIG_GVE=m from the amd64 defconfig to commonconfig so the Google virtual NIC driver is also built for arm64. All GCE arm64 machine types (T2A, C4A, ...) only offer gVNIC, so without the driver there is no network in the initrd and Ignition cannot fetch its config. Signed-off-by: bra-fsn --- .../sys-kernel/coreos-modules/files/amd64_defconfig-6.18 | 1 - .../sys-kernel/coreos-modules/files/commonconfig-6.18 | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.18 b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.18 index 87b981ac6d6..63ebf02ea7a 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.18 +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/amd64_defconfig-6.18 @@ -48,7 +48,6 @@ CONFIG_FPROBE=y CONFIG_FUNCTION_PROFILER=y CONFIG_GART_IOMMU=y CONFIG_GET_FREE_REGION=y -CONFIG_GVE=m CONFIG_HANGCHECK_TIMER=m CONFIG_HARDLOCKUP_DETECTOR=y CONFIG_HID=m diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.18 b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.18 index 5dde04eec61..0ce0f7f00b4 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.18 +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/files/commonconfig-6.18 @@ -232,6 +232,7 @@ CONFIG_GPIOLIB=y CONFIG_GPIO_SYSFS=y CONFIG_GRO_CELLS=y CONFIG_GTP=m +CONFIG_GVE=m CONFIG_HARDENED_USERCOPY=y CONFIG_HIDRAW=y CONFIG_HID_APPLE=m From e6384688053b122aa1cdb1b0ce0fb5d51c648372 Mon Sep 17 00:00:00 2001 From: bra-fsn Date: Thu, 12 Nov 2026 21:16:34 +0100 Subject: [PATCH 2/5] sys-kernel/coreos-{kernel,modules}: Revbump and add GCE rules on arm64 Bump coreos-modules and coreos-kernel so the kernel config change is not masked by already built binary packages, as only the config files changed and not the package version. Install app-admin/google-guest-configs for all architectures instead of amd64 only. It provides the dracut module with the GCE disk naming udev rules, which are needed on arm64 as well, since GCE arm64 machine types expose their disks over NVMe. Signed-off-by: bra-fsn --- ...ernel-6.18.58.ebuild => coreos-kernel-6.18.58-r1.ebuild} | 6 ++---- ...ules-6.18.58.ebuild => coreos-modules-6.18.58-r1.ebuild} | 0 2 files changed, 2 insertions(+), 4 deletions(-) rename sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/{coreos-kernel-6.18.58.ebuild => coreos-kernel-6.18.58-r1.ebuild} (98%) rename sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/{coreos-modules-6.18.58.ebuild => coreos-modules-6.18.58-r1.ebuild} (100%) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58-r1.ebuild similarity index 98% rename from sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58-r1.ebuild index bb07dbb104a..89116702c4d 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-kernel/coreos-kernel-6.18.58-r1.ebuild @@ -56,10 +56,8 @@ DEPEND=" >=sys-kernel/coreos-firmware-20180103-r1:= sys-process/procps virtual/udev - amd64? ( - app-admin/google-guest-configs - sys-firmware/intel-microcode:= - ) + app-admin/google-guest-configs + amd64? ( sys-firmware/intel-microcode:= ) " src_prepare() { diff --git a/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/coreos-modules-6.18.58.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/coreos-modules-6.18.58-r1.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/coreos-modules-6.18.58.ebuild rename to sdk_container/src/third_party/coreos-overlay/sys-kernel/coreos-modules/coreos-modules-6.18.58-r1.ebuild From 0a1f6a32f02cae3c2556126a09ae46d2e9172086 Mon Sep 17 00:00:00 2001 From: bra-fsn Date: Thu, 12 Nov 2026 21:16:48 +0100 Subject: [PATCH 3/5] coreos-base/oem-gce: Enable the GCE OEM for arm64 Add arm64 to KEYWORDS of oem-gce and its dependencies google-guest-configs and google-compute-engine, so that the OEM sysext is built for arm64 and the gce VM image format works there. All of them are scripts, udev rules and Python, with no architecture specific code. Use the PL011 serial console (ttyAMA0) in the GCE grub.cfg on arm64, where the ttyS0 console and GRUB serial settings of amd64 do not exist. Signed-off-by: bra-fsn --- build_library/oem/gce/grub.cfg | 12 ++++++++---- .../google-guest-configs-20260504.00.ebuild | 2 +- .../google-compute-engine-20190124-r4.ebuild | 2 +- .../coreos-base/oem-gce/oem-gce-20260504.ebuild | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/build_library/oem/gce/grub.cfg b/build_library/oem/gce/grub.cfg index 8366e12a550..0eb874cccc0 100644 --- a/build_library/oem/gce/grub.cfg +++ b/build_library/oem/gce/grub.cfg @@ -3,7 +3,11 @@ set oem_id="gce" # GCE only has a serial console. -set linux_console="console=ttyS0,115200n8" -serial com0 --speed=115200 --word=8 --parity=no -terminal_input serial_com0 -terminal_output serial_com0 +if [ "$grub_cpu" = arm64 ]; then + set linux_console="console=tty0 console=ttyAMA0,115200n8" +else + set linux_console="console=ttyS0,115200n8" + serial com0 --speed=115200 --word=8 --parity=no + terminal_input serial_com0 + terminal_output serial_com0 +fi diff --git a/sdk_container/src/third_party/coreos-overlay/app-admin/google-guest-configs/google-guest-configs-20260504.00.ebuild b/sdk_container/src/third_party/coreos-overlay/app-admin/google-guest-configs/google-guest-configs-20260504.00.ebuild index dd00f94cdc9..af97792d8ca 100644 --- a/sdk_container/src/third_party/coreos-overlay/app-admin/google-guest-configs/google-guest-configs-20260504.00.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/app-admin/google-guest-configs/google-guest-configs-20260504.00.ebuild @@ -16,7 +16,7 @@ S="${WORKDIR}/guest-configs-${PV}" LICENSE="Apache-2.0 BSD ZLIB" SLOT="0" -KEYWORDS="amd64" +KEYWORDS="amd64 arm64" RDEPEND=" ! Date: Thu, 12 Nov 2026 21:16:55 +0100 Subject: [PATCH 5/5] changelog: Add entry for GCE arm64 support Signed-off-by: bra-fsn --- changelog/changes/2026-11-12-gce-arm64.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/changes/2026-11-12-gce-arm64.md diff --git a/changelog/changes/2026-11-12-gce-arm64.md b/changelog/changes/2026-11-12-gce-arm64.md new file mode 100644 index 00000000000..0bb81910956 --- /dev/null +++ b/changelog/changes/2026-11-12-gce-arm64.md @@ -0,0 +1 @@ +- Added arm64 support for GCE (T2A, C4A and other Axion/Ampere machine types), including the gVNIC driver (`CONFIG_GVE`) in the arm64 kernel, the `oem-gce` OEM sysext and OS Login ([flatcar/Flatcar#2000](https://github.com/flatcar/Flatcar/issues/2000))