Add ability to install hwe/virtual linux kernel
Change-Id: Id2353d3982ad5146e14ba653ba6be4adec4b0030
Related-Prod: PROD-31654
diff --git a/README.rst b/README.rst
index ea0b419..a0fb69d 100644
--- a/README.rst
+++ b/README.rst
@@ -777,6 +777,25 @@
headers: true
version: 4.2.0-22
+Also it is possible to install Kernel with Hardware Enablement or virtual
+kernel packages. For example, for Xenial:
+
+.. code-block:: yaml
+
+ linux:
+ system:
+ kernel:
+ type: generic
+ extra: true
+ headers: true
+ version: 4.15.0-65
+ hwe:
+ type: hwe
+ version: 16.04
+ kernel_version: 4.15.0.65
+
+Set `linux:system:kernel:hwe:type:virtual` if you need Virtual kernel packages.
+
Systcl kernel parameters:
.. code-block:: yaml
diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls
index 59405d0..ed8606b 100644
--- a/linux/system/kernel.sls
+++ b/linux/system/kernel.sls
@@ -24,7 +24,7 @@
{%- endif %}
{%- endif %}
-{%- if system.kernel.version is defined %}
+{%- if system.kernel.version is defined and grains.get('os_family') == 'Debian' %}
linux_kernel_package:
pkg.installed:
@@ -36,12 +36,32 @@
{%- if system.kernel.get('extra', False) %}
- linux-image-extra-{{ system.kernel.version }}-{{ system.kernel.type|default('generic') }}
{%- endif %}
+ {%- if system.kernel.hwe is defined %}
+ {%- set osVersion = salt['grains.get']('osrelease') %}
+ {%- set hweVersion = system.kernel.hwe.get('version', osVersion) %}
+ {%- set hwePackageVersion = system.kernel.hwe.get('kernel_version', system.kernel.version|replace('-', '.')) + '*' %}
+ {%- set hweType = system.kernel.hwe.get('type', 'generic') %}
+ - linux-image-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }}
+ {%- if system.kernel.get('headers', False) %}
+ - linux-headers-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }}
+ {%- endif %}
+ {%- if hweType == 'virtual' %}
+ - linux-image-extra-{{ hweType }}-hwe-{{ hweVersion }} : {{ hwePackageVersion }}
+ {%- endif %}
+ {%- endif %}
- refresh: true
+
+ {%- if system.kernel.hwe is defined %}
+ {%- set exlcudeRule = system.kernel.version + '|hwe' %}
+ {%- else %}
+ {%- set exlcudeRule = system.kernel.version %}
+ {%- endif %}
+
# Not very Salt-ish.. :-(
linux_kernel_old_absent:
cmd.wait:
- - name: "dpkg -l '*linux-generic-*[0-9]*' '*linux-image-*[0-9]*' '*linux-headers-*[0-9]*' '*linux-image-extra-*[0-9]*' | grep -E '^ii' | awk '{print $2}' | grep -v '{{ system.kernel.version }}' | xargs dpkg --purge --force-depends"
+ - name: "dpkg -l '*linux-generic-*[0-9]*' '*linux-image-*[0-9]*' '*linux-headers-*[0-9]*' '*linux-modules-*[0-9]*' '*linux-image-extra-*[0-9]*' | grep -E '^ii' | awk '{print $2}' | grep -vE '{{ exlcudeRule }}' | xargs dpkg --purge --force-depends"
- watch:
- pkg: linux_kernel_package