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