ee3ad542dd
This is a wrap-up of three patches pending upstream approval.
I'm bundling them because they are interdependent, and it'll be
easier to drop it on rebase later.
1. dm: allow a dm-fs-style device to be shared via dm-ioctl
Integrates feedback from Alisdair, Mike, and Kiyoshi.
Two main changes occur here:
- One function is added which allows for a programmatically created
mapped device to be inserted into the dm-ioctl hash table. This binds
the device to a name and, optional, uuid which is needed by udev and
allows for userspace management of the mapped device.
- dm_table_complete() was extended to handle all of the final
functional changes required for the table to be operational once
called.
2. init: boot to device-mapper targets without an initr*
Add a dm= kernel parameter modeled after the md= parameter from
do_mounts_md. It allows for device-mapper targets to be configured at
boot time for use early in the boot process (as the root device or
otherwise). It also replaces /dev/XXX calls with major:minor opportunistically.
The format is dm="name uuid ro,table line 1,table line 2,...". The
parser expects the comma to be safe to use as a newline substitute but,
otherwise, uses the normal separator of space. Some attempt has been
made to make it forgiving of additional spaces (using skip_spaces()).
A mapped device created during boot will be assigned a minor of 0 and
may be access via /dev/dm-0.
An example dm-linear root with no uuid may look like:
root=/dev/dm-0 dm="lroot none ro, 0 4096 linear /dev/ubdb 0, 4096 4096 linear /dv/ubdc 0"
Once udev is started, /dev/dm-0 will become /dev/mapper/lroot.
Older upstream threads:
http://marc.info/?l=dm-devel&m=127429492521964&w=2
http://marc.info/?l=dm-devel&m=127429499422096&w=2
http://marc.info/?l=dm-devel&m=127429493922000&w=2
Latest upstream threads:
https://patchwork.kernel.org/patch/104859/
https://patchwork.kernel.org/patch/104860/
https://patchwork.kernel.org/patch/104861/
Bug: 27175947
Signed-off-by: Will Drewry <wad@chromium.org>
Review URL: http://codereview.chromium.org/2020011
Change-Id: I92bd53432a11241228d2e5ac89a3b20d19b05a31
[AmitP: Refactored the original changes based on upstream changes,
commit e52347bd66
("Documentation/admin-guide: split the kernel parameter list to a separate file")]
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
42 lines
1.5 KiB
Text
42 lines
1.5 KiB
Text
Boot time creation of mapped devices
|
|
===================================
|
|
|
|
It is possible to configure a device mapper device to act as the root
|
|
device for your system in two ways.
|
|
|
|
The first is to build an initial ramdisk which boots to a minimal
|
|
userspace which configures the device, then pivot_root(8) in to it.
|
|
|
|
For simple device mapper configurations, it is possible to boot directly
|
|
using the following kernel command line:
|
|
|
|
dm="<name> <uuid> <ro>,table line 1,...,table line n"
|
|
|
|
name = the name to associate with the device
|
|
after boot, udev, if used, will use that name to label
|
|
the device node.
|
|
uuid = may be 'none' or the UUID desired for the device.
|
|
ro = may be "ro" or "rw". If "ro", the device and device table will be
|
|
marked read-only.
|
|
|
|
Each table line may be as normal when using the dmsetup tool except for
|
|
two variations:
|
|
1. Any use of commas will be interpreted as a newline
|
|
2. Quotation marks cannot be escaped and cannot be used without
|
|
terminating the dm= argument.
|
|
|
|
Unless renamed by udev, the device node created will be dm-0 as the
|
|
first minor number for the device-mapper is used during early creation.
|
|
|
|
Example
|
|
=======
|
|
|
|
- Booting to a linear array made up of user-mode linux block devices:
|
|
|
|
dm="lroot none 0, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" \
|
|
root=/dev/dm-0
|
|
|
|
Will boot to a rw dm-linear target of 8192 sectors split across two
|
|
block devices identified by their major:minor numbers. After boot, udev
|
|
will rename this target to /dev/mapper/lroot (depending on the rules).
|
|
No uuid was assigned.
|