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.
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 thatepoll_pwaitis 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_PWAITforSYS_EPOLL_WAITwhich solved the issue for my use-case, although further work may be required to ensure it doesn't introduce unwanted problems.