]> code.ossystems Code Review - openembedded-core.git/commitdiff
initramfs-framework: support rootflags and rootfstype boot parameter
authorPatrick Ohly <patrick.ohly@intel.com>
Mon, 7 Sep 2015 11:05:42 +0000 (13:05 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 12 Sep 2015 21:47:19 +0000 (22:47 +0100)
These two parameters are supported by the kernel
(https://www.kernel.org/doc/Documentation/kernel-parameters.txt). When
an initramfs is used, the kernel does not mount the rootfs and the
initramfs needs to react to them.

The boot parameters can be set both by the image creator and
by users.

Supporting these two parameters is useful:
- rootflags is needed to ensure that the rootfs is already mounted as
  intended in the time between starting init and init remounting
  it (as systemd does); this is critical for IMA where iversion must be
  active already when system starts writing files.
- setting it correctly up-front avoids messages from the kernel ("cannot
  mount ... as ext2 because ...") when trying to guess the desired type.

For example, assuming that only one of ext4/ext3/ext2 is set,
rootfstype could be set in an image recipe with:
APPEND_append = "${@''.join([' rootfstype=' + i for i in ['ext4', 'ext3', 'ext2'] if i in d.getVar('IMAGE_FSTYPES', True).split()])}"

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/recipes-core/initrdscripts/initramfs-framework/finish

index 325f47be4096c0881f318f34c8441d5ed1313ea7..006aef202fe8cbebc0fe702ecf96e0272c9c745a 100755 (executable)
@@ -22,7 +22,14 @@ finish_run() {
                        fi
 
                        if [ -e "$bootparam_root" ]; then
-                               mount $bootparam_root $ROOTFS_DIR
+                               flags=""
+                               if [ -n "$bootparam_rootflags" ]; then
+                                       flags="$flags -o$bootparam_rootflags"
+                               fi
+                               if [ -n "$bootparam_rootfstype" ]; then
+                                       flags="$flags -t$bootparam_rootfstype"
+                               fi
+                               mount $flags $bootparam_root $ROOTFS_DIR
                        else
                                debug "root '$bootparam_root' doesn't exist."
                        fi