16cf2a73cSMauro Carvalho Chehab================================ 26cf2a73cSMauro Carvalho ChehabEarly creation of mapped devices 36cf2a73cSMauro Carvalho Chehab================================ 46cf2a73cSMauro Carvalho Chehab 56cf2a73cSMauro Carvalho ChehabIt is possible to configure a device-mapper device to act as the root device for 66cf2a73cSMauro Carvalho Chehabyour system in two ways. 76cf2a73cSMauro Carvalho Chehab 86cf2a73cSMauro Carvalho ChehabThe first is to build an initial ramdisk which boots to a minimal userspace 96cf2a73cSMauro Carvalho Chehabwhich configures the device, then pivot_root(8) in to it. 106cf2a73cSMauro Carvalho Chehab 116cf2a73cSMauro Carvalho ChehabThe second is to create one or more device-mappers using the module parameter 126cf2a73cSMauro Carvalho Chehab"dm-mod.create=" through the kernel boot command line argument. 136cf2a73cSMauro Carvalho Chehab 146cf2a73cSMauro Carvalho ChehabThe format is specified as a string of data separated by commas and optionally 156cf2a73cSMauro Carvalho Chehabsemi-colons, where: 166cf2a73cSMauro Carvalho Chehab 176cf2a73cSMauro Carvalho Chehab - a comma is used to separate fields like name, uuid, flags and table 186cf2a73cSMauro Carvalho Chehab (specifies one device) 196cf2a73cSMauro Carvalho Chehab - a semi-colon is used to separate devices. 206cf2a73cSMauro Carvalho Chehab 216cf2a73cSMauro Carvalho ChehabSo the format will look like this:: 226cf2a73cSMauro Carvalho Chehab 236cf2a73cSMauro Carvalho Chehab dm-mod.create=<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<name>,<uuid>,<minor>,<flags>,<table>[,<table>+]+] 246cf2a73cSMauro Carvalho Chehab 256cf2a73cSMauro Carvalho ChehabWhere:: 266cf2a73cSMauro Carvalho Chehab 276cf2a73cSMauro Carvalho Chehab <name> ::= The device name. 286cf2a73cSMauro Carvalho Chehab <uuid> ::= xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | "" 296cf2a73cSMauro Carvalho Chehab <minor> ::= The device minor number | "" 306cf2a73cSMauro Carvalho Chehab <flags> ::= "ro" | "rw" 316cf2a73cSMauro Carvalho Chehab <table> ::= <start_sector> <num_sectors> <target_type> <target_args> 326cf2a73cSMauro Carvalho Chehab <target_type> ::= "verity" | "linear" | ... (see list below) 336cf2a73cSMauro Carvalho Chehab 346cf2a73cSMauro Carvalho ChehabThe dm line should be equivalent to the one used by the dmsetup tool with the 356cf2a73cSMauro Carvalho Chehab`--concise` argument. 366cf2a73cSMauro Carvalho Chehab 376cf2a73cSMauro Carvalho ChehabTarget types 386cf2a73cSMauro Carvalho Chehab============ 396cf2a73cSMauro Carvalho Chehab 406cf2a73cSMauro Carvalho ChehabNot all target types are available as there are serious risks in allowing 416cf2a73cSMauro Carvalho Chehabactivation of certain DM targets without first using userspace tools to check 426cf2a73cSMauro Carvalho Chehabthe validity of associated metadata. 436cf2a73cSMauro Carvalho Chehab 446cf2a73cSMauro Carvalho Chehab======================= ======================================================= 456cf2a73cSMauro Carvalho Chehab`cache` constrained, userspace should verify cache device 466cf2a73cSMauro Carvalho Chehab`crypt` allowed 476cf2a73cSMauro Carvalho Chehab`delay` allowed 486cf2a73cSMauro Carvalho Chehab`era` constrained, userspace should verify metadata device 496cf2a73cSMauro Carvalho Chehab`flakey` constrained, meant for test 506cf2a73cSMauro Carvalho Chehab`linear` allowed 516cf2a73cSMauro Carvalho Chehab`log-writes` constrained, userspace should verify metadata device 526cf2a73cSMauro Carvalho Chehab`mirror` constrained, userspace should verify main/mirror device 536cf2a73cSMauro Carvalho Chehab`raid` constrained, userspace should verify metadata device 546cf2a73cSMauro Carvalho Chehab`snapshot` constrained, userspace should verify src/dst device 556cf2a73cSMauro Carvalho Chehab`snapshot-origin` allowed 566cf2a73cSMauro Carvalho Chehab`snapshot-merge` constrained, userspace should verify src/dst device 576cf2a73cSMauro Carvalho Chehab`striped` allowed 586cf2a73cSMauro Carvalho Chehab`switch` constrained, userspace should verify dev path 596cf2a73cSMauro Carvalho Chehab`thin` constrained, requires dm target message from userspace 606cf2a73cSMauro Carvalho Chehab`thin-pool` constrained, requires dm target message from userspace 616cf2a73cSMauro Carvalho Chehab`verity` allowed 626cf2a73cSMauro Carvalho Chehab`writecache` constrained, userspace should verify cache device 636cf2a73cSMauro Carvalho Chehab`zero` constrained, not meant for rootfs 646cf2a73cSMauro Carvalho Chehab======================= ======================================================= 656cf2a73cSMauro Carvalho Chehab 666cf2a73cSMauro Carvalho ChehabIf the target is not listed above, it is constrained by default (not tested). 676cf2a73cSMauro Carvalho Chehab 686cf2a73cSMauro Carvalho ChehabExamples 696cf2a73cSMauro Carvalho Chehab======== 706cf2a73cSMauro Carvalho ChehabAn example of booting to a linear array made up of user-mode linux block 716cf2a73cSMauro Carvalho Chehabdevices:: 726cf2a73cSMauro Carvalho Chehab 736cf2a73cSMauro Carvalho Chehab dm-mod.create="lroot,,,rw, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" root=/dev/dm-0 746cf2a73cSMauro Carvalho Chehab 756cf2a73cSMauro Carvalho ChehabThis will boot to a rw dm-linear target of 8192 sectors split across two block 766cf2a73cSMauro Carvalho Chehabdevices identified by their major:minor numbers. After boot, udev will rename 776cf2a73cSMauro Carvalho Chehabthis target to /dev/mapper/lroot (depending on the rules). No uuid was assigned. 786cf2a73cSMauro Carvalho Chehab 796cf2a73cSMauro Carvalho ChehabAn example of multiple device-mappers, with the dm-mod.create="..." contents 806cf2a73cSMauro Carvalho Chehabis shown here split on multiple lines for readability:: 816cf2a73cSMauro Carvalho Chehab 826cf2a73cSMauro Carvalho Chehab dm-linear,,1,rw, 836cf2a73cSMauro Carvalho Chehab 0 32768 linear 8:1 0, 846cf2a73cSMauro Carvalho Chehab 32768 1024000 linear 8:2 0; 856cf2a73cSMauro Carvalho Chehab dm-verity,,3,ro, 866cf2a73cSMauro Carvalho Chehab 0 1638400 verity 1 /dev/sdc1 /dev/sdc2 4096 4096 204800 1 sha256 876cf2a73cSMauro Carvalho Chehab ac87db56303c9c1da433d7209b5a6ef3e4779df141200cbd7c157dcb8dd89c42 886cf2a73cSMauro Carvalho Chehab 5ebfe87f7df3235b80a117ebc4078e44f55045487ad4a96581d1adb564615b51 896cf2a73cSMauro Carvalho Chehab 906cf2a73cSMauro Carvalho ChehabOther examples (per target): 916cf2a73cSMauro Carvalho Chehab 926cf2a73cSMauro Carvalho Chehab"crypt":: 936cf2a73cSMauro Carvalho Chehab 946cf2a73cSMauro Carvalho Chehab dm-crypt,,8,ro, 956cf2a73cSMauro Carvalho Chehab 0 1048576 crypt aes-xts-plain64 966cf2a73cSMauro Carvalho Chehab babebabebabebabebabebabebabebabebabebabebabebabebabebabebabebabe 0 976cf2a73cSMauro Carvalho Chehab /dev/sda 0 1 allow_discards 986cf2a73cSMauro Carvalho Chehab 996cf2a73cSMauro Carvalho Chehab"delay":: 1006cf2a73cSMauro Carvalho Chehab 1016cf2a73cSMauro Carvalho Chehab dm-delay,,4,ro,0 409600 delay /dev/sda1 0 500 1026cf2a73cSMauro Carvalho Chehab 1036cf2a73cSMauro Carvalho Chehab"linear":: 1046cf2a73cSMauro Carvalho Chehab 1056cf2a73cSMauro Carvalho Chehab dm-linear,,,rw, 1066cf2a73cSMauro Carvalho Chehab 0 32768 linear /dev/sda1 0, 1076cf2a73cSMauro Carvalho Chehab 32768 1024000 linear /dev/sda2 0, 1086cf2a73cSMauro Carvalho Chehab 1056768 204800 linear /dev/sda3 0, 1096cf2a73cSMauro Carvalho Chehab 1261568 512000 linear /dev/sda4 0 1106cf2a73cSMauro Carvalho Chehab 1116cf2a73cSMauro Carvalho Chehab"snapshot-origin":: 1126cf2a73cSMauro Carvalho Chehab 1136cf2a73cSMauro Carvalho Chehab dm-snap-orig,,4,ro,0 409600 snapshot-origin 8:2 1146cf2a73cSMauro Carvalho Chehab 1156cf2a73cSMauro Carvalho Chehab"striped":: 1166cf2a73cSMauro Carvalho Chehab 1176cf2a73cSMauro Carvalho Chehab dm-striped,,4,ro,0 1638400 striped 4 4096 1186cf2a73cSMauro Carvalho Chehab /dev/sda1 0 /dev/sda2 0 /dev/sda3 0 /dev/sda4 0 1196cf2a73cSMauro Carvalho Chehab 1206cf2a73cSMauro Carvalho Chehab"verity":: 1216cf2a73cSMauro Carvalho Chehab 1226cf2a73cSMauro Carvalho Chehab dm-verity,,4,ro, 1236cf2a73cSMauro Carvalho Chehab 0 1638400 verity 1 8:1 8:2 4096 4096 204800 1 sha256 1246cf2a73cSMauro Carvalho Chehab fb1a5a0f00deb908d8b53cb270858975e76cf64105d412ce764225d53b8f3cfd 1256cf2a73cSMauro Carvalho Chehab 51934789604d1b92399c52e7cb149d1b3a1b74bbbcb103b2a0aaacbed5c08584 126