• Stars
    star
    651
  • Rank 69,175 (Top 2 %)
  • Language
    Shell
  • License
    GNU General Publi...
  • Created about 9 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Dynamic Kernel Module Support

Dynamic Kernel Module System (DKMS)

This intention of this README is to explain how DKMS can be used in conjunction with tarballs which contain a dkms.conf file within them.

The DKMS project (and any updates) can be found at: https://github.com/dell/dkms

Installation

Installation is performed from the source directory with one of the following commands:

make install
make install-debian
make install-redhat

Distribution specific installations (RPM, DEB, etc.) are not contained in this source repository.

Installation via DKMS Tarballs

DKMS can install directly from the following:

  1. Generic module source tarballs which contain a dkms.conf file
  2. Specially created DKMS tarballs with module source, pre-built module binaries and a dkms.conf file
  3. Specially created DKMS tarballs with pre-built module binaries and a dkms.conf file
  4. Manual placement of module source and dkms.conf file into /usr/src/<module>-<moduleversion>/ directory

In order to load any tarball into the DKMS tree, you must use the following command:

# dkms ldtarball /path/to/dkms_enabled.tar.gz

This command will first inspect the tarball to ensure that it contains a dkms.conf configuration file for that module. If it cannot find this file anywhere within the archive, then the ldtarball will fail.

From here, it will place the source in the tarball into /usr/src/<module>-<moduleversion>/. If source already exists in the directory, it will not overwrite it unless the --force option is specified. If the tarball is of type "c" above and does not contain source, it will only continue to load the tarball if existing module source is found in /usr/src/<module>-<moduleversion>/ or if the --force option is specified.

Continuing on, if the tarball is of type "b" or "c" it will then load any pre-built binaries found within the tarball into the dkms tree, but will stop short of installing them. Thus, all pre-built binaries will then be of in the built state when checked from the dkms status command. You can then use the dkms install command to install any of these binaries.

To create a tarball of type "1" above, you need only to take module source and a dkms.conf file for that module and create a tarball from them. Tarballs of type 2 or type 3 are created with the dkms mktarball command. To create a type 3 tarball, you must specify the flag --binaries-only with the mktarball.

Installation on Systems with no Module Source and/or Compiler

If you choose not to load module source on your system or if you choose not to load a compiler such as gcc onto your system, DKMS can still be used to install modules. It does this through use of DKMS binary only tarballs as explained in this README under tarballs of type c.

If your system does not have module source, loading the dkms tarball will fail because of this. To avoid this, use the --force flag, as such:

# dkms ldtarball /path/to/dkms_enabled.tar.gz --force

This will load the pre-built binaries into the dkms tree, and create the directory /usr/src/<module>-<moduleversion>/ which will only contain the module's dkms.conf configuration file. Once the tarball is loaded, you can then use dkms install to install any of the pre-built modules.

Of course, since module source will not be located in your dkms tree, you will not be able to build any modules with DKMS for this package.

Module signing

By default, DKMS generates a self signed certificate for signing modules at build time and signs every module that it builds before it gets compressed in the configured kernel compression mechanism of choice.

This requires the openssl command to be present on the system.

Private key and certificate are auto generated the first time DKMS is run and placed in /var/lib/dkms. These certificate files can be pre-populated with your own certificates of choice.

The location as well can be changed by setting the appropriate variables in /etc/dkms/framework.conf. For example, to allow usage of the system default Ubuntu update-secureboot-policy set the configuration file as follows:

mok_signing_key="/var/lib/shim-signed/mok/MOK.priv"
mok_certificate="/var/lib/shim-signed/mok/MOK.der"

The paths specified in mok_signing_key, mok_certificate and sign_file can use the variable ${kernelver} to represent the target kernel version.

sign_file="/lib/modules/${kernelver}/build/scripts/sign-file"

The variable mok_signing_key can also be a pkcs11:... string for a PKCS#11 engine, as long as the sign_file program supports it.

Secure Boot

On an UEFI system with Secure Boot enabled, modules require signing (as described in the above paragraph) before they can be loaded and the firmware of the system must know the correct public certificate to verify the module signature.

For importing the MOK certificate make sure mokutil is installed.

To check if Secure Boot is enabled:

# mokutil --sb-state
SecureBoot enabled

With the appropriate key material on the system, enroll the public key:

# mokutil --import /var/lib/dkms/mok.pub"

You'll be prompted to create a password. Enter it twice, it can also be blank.

Reboot the computer. At boot you'll see the MOK Manager EFI interface:

SHIM UEFI key management

Press any key to enter it, then select "Enroll MOK":

Perform MOK management

Then select "Continue":

Enroll MOK

And confirm with "Yes" when prompted:

Enroll the key(s)?

After this, enter the password you set up with mokutil --import in the previous step:

Enroll the key(s)?

At this point you are done, select "OK" and the computer will reboot trusting the key for your modules:

Perform MOK management

After reboot, you can inspect the MOK certificates with the following command:

# mokutil --list-enrolled | grep DKMS
        Subject: CN=DKMS module signing key

To check the signature on a built DKMS module that is installed on a system:

# modinfo dkms_test | grep ^signer
signer:         DKMS module signing key

The module can now be loaded without issues.

Further Documentation

Once DKMS is installed, you can reference its man page for further information on different DKMS options and also to understand the formatting of a module's dkms.conf configuration file.

The DKMS project is located at: https://github.com/dell/dkms

More Repositories

1

iDRAC-Redfish-Scripting

Python and PowerShell scripting for Dell EMC PowerEdge iDRAC REST API with DMTF Redfish
PowerShell
603
star
2

dellemc-openmanage-ansible-modules

Dell OpenManage Ansible Modules
Python
326
star
3

omnia

An open-source toolkit for deploying and managing high performance clusters for HPC, AI, and data analytics workloads.
YAML
218
star
4

redfish-ansible-module

Ansible modules for Out-Of-Band Controllers using Redfish APIs
Python
193
star
5

libsmbios

library for interacting with Dell SMBIOS tables
C
187
star
6

thunderbolt-nvm-linux

Thunderbolt NVM updates for Linux
C
103
star
7

dell-recovery

Dell Recovery for Ubuntu
Python
100
star
8

OpenManage-Enterprise

Script collateral leveraging the OME/OME-M REST APIs
Python
92
star
9

biosdisk

Flashing Dell BIOS images on Linux systems
Shell
89
star
10

terraform-provider-redfish

Terraform provider for Redfish REST APIs
Go
87
star
11

csi-baremetal

Bare-metal CSI Driver
Go
71
star
12

csm

Dell Container Storage Modules (CSM)
Makefile
67
star
13

csi-powerflex

CSI Driver for Dell PowerFlex
Go
58
star
14

omsdk

Dell EMC OpenManage Python SDK
Python
57
star
15

Endpoint-Management-Script-Library

Client Management Script Library setup for Intune.
PowerShell
50
star
16

csi-powerscale

CSI Driver for Dell PowerScale
Go
48
star
17

PyU4V

PyU4V is a Python module that simplifies interaction with the Unisphere for PowerMax REST API. It wraps REST calls with simple APIs that abstracts the HTTP request and response handling.
Python
41
star
18

csi-powerstore

CSI Driver for Dell PowerStore
Go
40
star
19

DellPEWSMANTools

PowerShell Tools for Dell PowerEdge Server Management (WS-MAN)
PowerShell
38
star
20

ansible-powermax

Ansible Modules for Dell PowerMax
Python
32
star
21

ansible-powerstore

Ansible Modules for Dell PowerStore
Python
31
star
22

csi-unity

CSI Driver for Dell Unity
Go
30
star
23

opentelemetry-cli

human-friendly OpenTelemetry CLI
Python
30
star
24

ansible-powerscale

PowerScale (Isilon) Ansible modules
Python
29
star
25

iac-storage-automation

Infra-as-Code examples with Ansible and Terraform for Dell Technologies storage platforms
HCL
28
star
26

iDRAC-Telemetry-Reference-Tools

Reference toolset for PowerEdge telemetry metric collection and integration with analytics and visualization solutions.
Go
28
star
27

ansible-unity

Ansible Modules for Dell Unity
Python
26
star
28

dell-csi-operator

The Dell CSI Operator is no longer actively maintained or supported. Dell CSI Operator has been replaced with Dell CSM Operator (https://github.com/dell/csm-operator).
Go
26
star
29

csi-powermax

CSI Driver for Dell PowerMax
Go
25
star
30

csm-operator

Go
24
star
31

ansible-vxrail

Python
23
star
32

ansible-powerflex

Ansible Modules for Dell PowerFlex
Python
22
star
33

OpenManage-PowerShell-Modules

PowerShell
20
star
34

csi-baremetal-operator

Go
19
star
35

python-powerflex

Python library for PowerFlex
Python
19
star
36

iDRAC-Telemetry-Scripting

Python scripts for configuring iDRAC Telemetry and processing Telemetry reports.
Python
18
star
37

python-powerstore

Python library for Dell PowerStore
Python
17
star
38

biosdevname

Udev helper for naming devices per BIOS names
Shell
17
star
39

powerprotect-data-manager

A repo for keeping PowerProtect automation enablers
Python
16
star
40

helm-charts

The source for Dell Helm charts.
Smarty
16
star
41

csm-docs

A repo for the documentation for Dell Container Storage Modules for all Dell storage arrays
JavaScript
16
star
42

terraform-provider-powerstore

Terraform Provider for Dell EMC PowerStore
Go
15
star
43

gopowerstore

Go library for PowerStore APIs
Go
15
star
44

karavi-metrics-powerflex

Metrics for PowerFlex is part of Dell Container Storage Modules (CSM) for Observability and provides Kubernetes administrators insight into storage usage and performance for containerized applications using Dell products
Go
15
star
45

common-github-actions

Repository to hold GitHub Actions for Dell repos
Shell
14
star
46

gofsutil

Fork of the Go library for filesystem related operations
Go
14
star
47

terraform-provider-powerscale

Terraform Provider for Dell PowerScale
Go
13
star
48

karavi-resiliency

A Kubernetes pod monitor for safely terminating pods with persistent volumes in case of node failures
Go
13
star
49

license-scanner

A tool to check for potential open source licensing problems.
Python
12
star
50

karavi-topology

Karavi Topology provides Kubernetes administrators insight into the Kubernetes storage topology as it relates to Dell products
Go
12
star
51

ansible-isilon

Ansible modules for Dell EMC Isilon
Python
12
star
52

ansible-vplex

Ansible modules for Dell EMC VPLEX
Python
11
star
53

cosi

COSI Driver for Dell ObjectScale
Go
11
star
54

csm-replication

Dell Container Storage Modules (CSM) for Replication aims at extending native Kubernetes functionality to support Disaster Recovery workflows by utilizing storage array based replication.
Go
11
star
55

karavi

Project Karavi aims at improving the observability, usability and data mobility for stateful applications with Dell Technologies Storage portfolio.
11
star
56

gopowerscale

Go library for Dell PowerScale
Go
11
star
57

terraform-provider-powerflex

Terraform Provider For Dell PowerFlex
Go
10
star
58

firmware-tools

Firmware Tools framework
Python
10
star
59

karavi-authorization

Karavi Authorization is part of the Karavi open source suite of Kubernetes storage enablers for Dell products. Karavi Authorization provides Storage & Kubernetes administrators the ability to apply RBAC for Dell CSI Drivers.
Go
10
star
60

sassist

Dell SupportAssist log collector for Linux
Shell
9
star
61

clarity-atoms

Preact Components based on Dell Clarity
TypeScript
9
star
62

karavi-observability

Dell Container Storage Modules (CSM) for Observability covers Kubernetes storage features and functionality for Dell storage portfolio. CSM for Observability provides standardized approaches for storage observability.
Shell
9
star
63

cert-csi

Unified CSI driver​ testing tool
Go
8
star
64

gopowermax

Go library for PowerMax APIs
Go
8
star
65

cpuinfo

Tool to display/decode CPUINFO
C
8
star
66

goscaleio

Go
8
star
67

thunderbolt-dkms

DKMS Package for the new thunderbolt driver
C
8
star
68

recite

Interactive WS-Man Scripting Environment
Python
7
star
69

jlt

Johnson-Lindenstrauss transform (JLT), random projections (RP), fast Johnson-Lindenstrauss transform (FJLT), and randomized Hadamard transform (RHT) in python 3.x
Python
7
star
70

terraform-provider-ome

Terraform provider for OpenManage Enterprise
Go
7
star
71

gobrick

Go library for CSI drivers
Go
7
star
72

terraform-provider-apex

Go
7
star
73

EUCTechHub

General Scripts for VMware Workspace ONE, Microsoft MEM, or general PowerShell with whitepapers and BLOG postings
PowerShell
6
star
74

firmware-extract

firmware-extract
Python
6
star
75

goiscsi

A portable Go module for iSCSI operations.
Go
6
star
76

gounity

GO library for Dell Unity
Go
6
star
77

powerstore-metrics-exporter

Go
6
star
78

edac

Tool to map DIMMs to EDAC channel/dimm
Perl
6
star
79

dell-csi-extensions

Makefile
6
star
80

csm-metrics-powerstore

Metrics for PowerStore is part of Dell Container Storage Modules (CSM) for Observability and provides Kubernetes administrators insight into storage usage and performance for containerized applications using Dell PowerStore
Go
6
star
81

firmware-addon-dell

Firmware Tools plugin for Dell systems
Python
6
star
82

name_eths

Names ethernet devices based on physical server layout
Shell
5
star
83

Dell-Gateway-5000-IO-Tool

Dell Edge Gateway 5000 Series I/O Utility
C
5
star
84

ansible-datadomain

Ansible collection for DataDomain
Python
5
star
85

csm-logcollector

Go
5
star
86

efibootmgr

Historical: Now hosted at https://github.com/rhinstaller/efibootmgr
C
5
star
87

iDRAC-SEKM-Scripting

Dell Secure Enterprise Key Manager (SEKM) python scripts for configuring complete iDRAC SEKM solution.
Python
5
star
88

lctool

lctool
Shell
4
star
89

ansible-vxrail-utility

Python
4
star
90

csi-volumegroup-snapshotter

csi-volumegroup-snapshotter controller to support crash-consistent operations for snapshots of group of volumes
Go
4
star
91

terraform-provider-powermax

Terraform Provider for Dell PowerMax
Go
4
star
92

thinos-electron

Build cross-platform desktop apps with JavaScript, HTML, and CSS
C++
4
star
93

csi-baremetal-scheduling

Go
4
star
94

goobjectscale

Go library for Dell EMC ObjectScale
Go
4
star
95

ubuntu-fid

Ubuntu FID development (historical)
SourcePawn
4
star
96

dell-livecd-config

dell-livecd-config
Shell
3
star
97

osp-integration

Red Hat OpenStack Platform integration files.
3
star
98

ledmon

ledmon Debian packaging
3
star
99

omivv

Scripting collaterals leveraging the REST API for Open Manage integrations to VMWare vCenter
Python
3
star
100

dell-repo-tools

Tools to make linux.dell.com/repo
Python
3
star