Fixed the “Required Key Not Available” issue when tried to load the PF_Ring Module into Linux Kernel.
Tried to install the pf_ring module on CentOS 8, here are what I had tried:
- Create a new CentOS 8 VM on ESXI
- Upgrade the OS to latest
- Install the pf_ring module following the official documentation
The module package had been downloaded successfully, however, when it was about to load into the kernel via modprobe
, an error occurred:
# pf_ringcfg --configure-driver e1000e --rss-queues 1
...
Job for pf_ring.service failed because the control process exited with error code.
See "systemctl status pf_ring.service" and "journalctl -xe" for details.
[>] Configuration completed
# systemctl status pf_ring.service
● pf_ring.service - PF_RING service
Loaded: loaded (/usr/lib/systemd/system/pf_ring.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2021-04-01 22:10:57 EDT; 2min 17s ago
...
Apr 01 22:10:57 localhost.localdomain pf_ringctl[3944]: modprobe: ERROR: could not insert 'pf_ring': Required key not availab>
Apr 01 22:10:57 localhost.localdomain pf_ringctl[3944]: Unable to load PF_RING. Exiting[FAILED]
Apr 01 22:10:57 localhost.localdomain systemd[1]: pf_ring.service: Main process exited, code=exited, status=99/n/a
Apr 01 22:10:57 localhost.localdomain systemd[1]: pf_ring.service: Failed with result 'exit-code'.
Apr 01 22:10:57 localhost.localdomain systemd[1]: Failed to start PF_RING service.
According to the systemctl information, the issue is: modprobe: ERROR: could not insert 'pf_ring': Required key not availab
.
I first suspect the issue might be due to the “package download” way that I chose to install the module.
Then I tried to compile the module by myself. I downloaded the source code from GitHub, the compilation went smoothly, however, when I tried to load the module into the kernel, the same issue occurred.
After some googling, I found the issue is due to UEFI systems with enabled Secure Boot
[^1]. It turns out that ESXI 6.7 enable the Secure Boot by default when creating a new VM. And after disabled it, the pf_ring module can be loaded without any issue.
[^1] why-do-i-get-required-key-not-available-when-install-3rd-party-kernel-modules