-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Description
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.