mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.3 KiB
125 lines
4.3 KiB
================================ |
|
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
|
|
|