Merge tag 'trace-v5.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[sfrench/cifs-2.6.git] / Documentation / admin-guide / device-mapper / dm-init.rst
1 ================================
2 Early creation of mapped devices
3 ================================
4
5 It is possible to configure a device-mapper device to act as the root device for
6 your system in two ways.
7
8 The first is to build an initial ramdisk which boots to a minimal userspace
9 which configures the device, then pivot_root(8) in to it.
10
11 The second is to create one or more device-mappers using the module parameter
12 "dm-mod.create=" through the kernel boot command line argument.
13
14 The format is specified as a string of data separated by commas and optionally
15 semi-colons, where:
16
17  - a comma is used to separate fields like name, uuid, flags and table
18    (specifies one device)
19  - a semi-colon is used to separate devices.
20
21 So the format will look like this::
22
23  dm-mod.create=<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<name>,<uuid>,<minor>,<flags>,<table>[,<table>+]+]
24
25 Where::
26
27         <name>          ::= The device name.
28         <uuid>          ::= xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | ""
29         <minor>         ::= The device minor number | ""
30         <flags>         ::= "ro" | "rw"
31         <table>         ::= <start_sector> <num_sectors> <target_type> <target_args>
32         <target_type>   ::= "verity" | "linear" | ... (see list below)
33
34 The dm line should be equivalent to the one used by the dmsetup tool with the
35 `--concise` argument.
36
37 Target types
38 ============
39
40 Not all target types are available as there are serious risks in allowing
41 activation of certain DM targets without first using userspace tools to check
42 the validity of associated metadata.
43
44 ======================= =======================================================
45 `cache`                 constrained, userspace should verify cache device
46 `crypt`                 allowed
47 `delay`                 allowed
48 `era`                   constrained, userspace should verify metadata device
49 `flakey`                constrained, meant for test
50 `linear`                allowed
51 `log-writes`            constrained, userspace should verify metadata device
52 `mirror`                constrained, userspace should verify main/mirror device
53 `raid`                  constrained, userspace should verify metadata device
54 `snapshot`              constrained, userspace should verify src/dst device
55 `snapshot-origin`       allowed
56 `snapshot-merge`        constrained, userspace should verify src/dst device
57 `striped`               allowed
58 `switch`                constrained, userspace should verify dev path
59 `thin`                  constrained, requires dm target message from userspace
60 `thin-pool`             constrained, requires dm target message from userspace
61 `verity`                allowed
62 `writecache`            constrained, userspace should verify cache device
63 `zero`                  constrained, not meant for rootfs
64 ======================= =======================================================
65
66 If the target is not listed above, it is constrained by default (not tested).
67
68 Examples
69 ========
70 An example of booting to a linear array made up of user-mode linux block
71 devices::
72
73   dm-mod.create="lroot,,,rw, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" root=/dev/dm-0
74
75 This will boot to a rw dm-linear target of 8192 sectors split across two block
76 devices identified by their major:minor numbers.  After boot, udev will rename
77 this target to /dev/mapper/lroot (depending on the rules). No uuid was assigned.
78
79 An example of multiple device-mappers, with the dm-mod.create="..." contents
80 is shown here split on multiple lines for readability::
81
82   dm-linear,,1,rw,
83     0 32768 linear 8:1 0,
84     32768 1024000 linear 8:2 0;
85   dm-verity,,3,ro,
86     0 1638400 verity 1 /dev/sdc1 /dev/sdc2 4096 4096 204800 1 sha256
87     ac87db56303c9c1da433d7209b5a6ef3e4779df141200cbd7c157dcb8dd89c42
88     5ebfe87f7df3235b80a117ebc4078e44f55045487ad4a96581d1adb564615b51
89
90 Other examples (per target):
91
92 "crypt"::
93
94   dm-crypt,,8,ro,
95     0 1048576 crypt aes-xts-plain64
96     babebabebabebabebabebabebabebabebabebabebabebabebabebabebabebabe 0
97     /dev/sda 0 1 allow_discards
98
99 "delay"::
100
101   dm-delay,,4,ro,0 409600 delay /dev/sda1 0 500
102
103 "linear"::
104
105   dm-linear,,,rw,
106     0 32768 linear /dev/sda1 0,
107     32768 1024000 linear /dev/sda2 0,
108     1056768 204800 linear /dev/sda3 0,
109     1261568 512000 linear /dev/sda4 0
110
111 "snapshot-origin"::
112
113   dm-snap-orig,,4,ro,0 409600 snapshot-origin 8:2
114
115 "striped"::
116
117   dm-striped,,4,ro,0 1638400 striped 4 4096
118   /dev/sda1 0 /dev/sda2 0 /dev/sda3 0 /dev/sda4 0
119
120 "verity"::
121
122   dm-verity,,4,ro,
123     0 1638400 verity 1 8:1 8:2 4096 4096 204800 1 sha256
124     fb1a5a0f00deb908d8b53cb270858975e76cf64105d412ce764225d53b8f3cfd
125     51934789604d1b92399c52e7cb149d1b3a1b74bbbcb103b2a0aaacbed5c08584