Skip to content

proposal: runtime: support VMkernel in Go's Linux port #73350

@0xAlcidius

Description

@0xAlcidius

Proposal Details

This proposal concerns the potential support of the VMkernel which powers the ESXi hypervisor.

Background

Go's Linux port relies on the availability of SYS_EPOLL_PWAIT, a syscall that has been present since Linux 2.6.19. Since Go 1.24, the minimum supported kernel version is 3.2, ensuring that epoll_pwait is available in standard Linux distributions.

However some Linux kernels, such as VMWare's VMkernel used in the ESXi hypervisor 7.0, does not support epoll_pwait.

This discrepancy leads to fatal runtime errors like #24980 when running on the ESXi 7.0 hypervisor.

Motivation

Currently I'm exploring the possibilities running Go binaries for digital forensics and incident response (DFIR) on ESXi hypervisors. I encountered issue #24980 while attempting to run Go binaries on the hypervisor.

Although the Go minimum requirements have been raised, and I understand not everything can be supported. I think this case reveals a practical scenario where running Go binaries on the VMkernel platform would extend Go's applicability in virtualized environments and expand the use cases for Go.

Yet, given the niche use-case, a proposal discussion could help determine if the added complexity is justified.

Proposal

I propose that the Go project considers adding support for the VMkernel within the Linux port. I've recently already proposed a CL where I switched SYS_EPOLL_PWAIT for SYS_EPOLL_WAIT which solved the issue for my use-case, although further work may be required to ensure it doesn't introduce unwanted problems.

Metadata

Metadata

Assignees

No one assigned

    Labels

    LanguageProposalIssues describing a requested change to the Go language specification.Proposal

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions