• Helen Koike's avatar
    dm: add support to directly boot to a mapped device · 6bbc923d
    Helen Koike authored
    Add a "create" module parameter, which allows device-mapper targets to
    be configured at boot time. This enables early use of DM targets in the
    boot process (as the root device or otherwise) without the need of an
    initramfs.
    
    The syntax used in the boot param is based on the concise format from
    the dmsetup tool to follow the rule of least surprise:
    
    	dmsetup table --concise /dev/mapper/lroot
    
    Which is:
    	dm-mod.create=<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<name>,<uuid>,<minor>,<flags>,<table>[,<table>+]+]
    
    Where,
    	<name>		::= The device name.
    	<uuid>		::= xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | ""
    	<minor>		::= The device minor number | ""
    	<flags>		::= "ro" | "rw"
    	<table>		::= <start_sector> <num_sectors> <target_type> <target_args>
    	<target_type>	::= "verity" | "linear" | ...
    
    For example, the following could be added in the boot parameters:
    dm-mod.create="lroot,,,rw, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" root=/dev/dm-0
    
    Only the targets that were tested are allowed and the ones that don't
    change any block device when the device is create as read-only. For
    example, mirror and cache targets are not allowed. The rationale behind
    this is that if the user makes a mistake, choosing the wrong device to
    be the mirror or the cache can corrupt data.
    
    The only targets initially allowed are:
    * crypt
    * delay
    * linear
    * snapshot-origin
    * striped
    * verity
    Co-developed-by: default avatarWill Drewry <wad@chromium.org>
    Co-developed-by: default avatarKees Cook <keescook@chromium.org>
    Co-developed-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
    Signed-off-by: default avatarHelen Koike <helen.koike@collabora.com>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    6bbc923d
dm-init.c 7.43 KB