diff --git a/manifests/grub2/kernel_option.pp b/manifests/grub2/kernel_option.pp
new file mode 100644
index 0000000000000000000000000000000000000000..d0b13fd6871718c67ba117d98b209dc212f6171a
--- /dev/null
+++ b/manifests/grub2/kernel_option.pp
@@ -0,0 +1,45 @@
+# Copyright © 2017   Thomas Bellman, Linköping, Sweden
+# Licensed under the GNU LGPL v3+; see the README file for more information.
+
+
+/*
+ * Internal helper for the bootloader::kernel_option definition.
+ */
+define bootloader::grub2::kernel_option($ensure, $value)
+{
+    include bootloader::grub2::rebuild_grub_cfg
+
+    $prefix = '^(GRUB_CMDLINE_LINUX="?(|.*\s))'
+    $suffix = '((|\s.*)("?))\s*$'
+    $qname = regexp_quote($name)
+
+    if ($ensure == 'absent')
+    {
+	regexp_replace_lines {
+	    "bootloader::grub2::kernel_option::${name}":
+		file => '/etc/default/grub',
+		pattern => "${prefix}${qname}(=[^ \t\"]*)?${suffix}",
+		replacement => '\1\4',
+		notify => Class['bootloader::grub2::rebuild_grub_cfg'];
+	}
+    }
+    elsif ($ensure != 'present')
+    {
+	fail("Bootloader::Grub2::Kernel_Option[${title}]: ",
+	     "Bad ensure parameter, ${ensure}")
+    }
+    elsif ($value == true or $value == false)
+    {
+	# Detecting if the option is already present is not easily done
+	# using regexps...
+	fail("Bootloader::Grub2::Kernel_option[${title}]: ",
+	     "Setting a kernel option is not yet implemented.")
+    }
+    else
+    {
+	# Detecting if the option is already present is not easily done
+	# using regexps...
+	fail("Bootloader::Grub2::Kernel_option[${title}]: ",
+	     "Setting a kernel option is not yet implemented.")
+    }
+}
diff --git a/manifests/kernel_option.pp b/manifests/kernel_option.pp
index 5c896fb251c915c1bac32e8e684123f1f6ef652c..6bb146402c8298a76045e13d2fd0e9570cf173ed 100644
--- a/manifests/kernel_option.pp
+++ b/manifests/kernel_option.pp
@@ -34,6 +34,12 @@ define bootloader::kernel_option($ensure='present', $value=undef)
 		    name => $name, ensure => $ensure, value => $value;
 	    }
 	}
+	'grub2': {
+	    bootloader::grub2::kernel_option {
+		$title:
+		    name => $name, ensure => $ensure, value => $value;
+	    }
+	}
 	default: {
 	    fail("Bootloader::Kernel_option[${title}]: ",
 		 "Unsupported bootloader, ${bootloader}")