對映裝置的早期建立¶
有兩種方法可以配置裝置對映器裝置作為系統的根裝置。
第一種方法是構建一個初始 ramdisk,它引導到一個配置裝置的最小使用者空間,然後透過 pivot_root(8) 切換到該裝置。
第二種方法是透過核心啟動命令列引數,使用模組引數 “dm-mod.create=” 來建立一個或多個裝置對映器。
格式被指定為由逗號分隔的資料字串,並可選擇使用分號分隔,其中
逗號用於分隔欄位,例如 name、uuid、flags 和 table(指定一個裝置)
分號用於分隔裝置。
因此,格式將如下所示:
dm-mod.create=<name>,<uuid>,<minor>,<flags>,<table>[,<table>+][;<name>,<uuid>,<minor>,<flags>,<table>[,<table>+]+]
其中
<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)
dm 行應與 dmsetup 工具使用 --concise 引數時所用的行等效。
目標型別¶
並非所有目標型別都可用,因為在不先使用使用者空間工具檢查相關元資料有效性的情況下,允許啟用某些 DM 目標存在嚴重風險。
快取 |
受限,使用者空間應驗證快取裝置 |
加密 |
允許 |
延遲 |
允許 |
era |
受限,使用者空間應驗證元資料裝置 |
不穩定 |
受限,僅用於測試 |
線性 |
允許 |
日誌寫入 |
受限,使用者空間應驗證元資料裝置 |
映象 |
受限,使用者空間應驗證主/映象裝置 |
RAID |
受限,使用者空間應驗證元資料裝置 |
快照 |
受限,使用者空間應驗證源/目標裝置 |
快照源 |
允許 |
快照合併 |
受限,使用者空間應驗證源/目標裝置 |
條帶化 |
允許 |
切換 |
受限,使用者空間應驗證裝置路徑 |
精簡 |
受限,需要來自使用者空間的 dm 目標訊息 |
精簡池 |
受限,需要來自使用者空間的 dm 目標訊息 |
verity |
允許 |
寫入快取 |
受限,使用者空間應驗證快取裝置 |
歸零 |
受限,不適用於根檔案系統 |
如果目標未在上述列表中,則預設受限(未測試)。
示例¶
引導到由使用者模式 Linux 塊裝置組成的線性陣列的示例
dm-mod.create="lroot,,,rw, 0 4096 linear 98:16 0, 4096 4096 linear 98:32 0" root=/dev/dm-0
這將引導到一個 rw dm-linear 目標,該目標由 8192 個扇區組成,分佈在兩個由其主:次號碼標識的塊裝置上。引導後,udev 會將此目標重新命名為 /dev/mapper/lroot(取決於規則)。未分配 UUID。
多個裝置對映器的示例,其中 dm-mod.create=”...” 的內容在此處為了可讀性而拆分為多行顯示
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
其他示例(按目標)
“加密”
dm-crypt,,8,ro,
0 1048576 crypt aes-xts-plain64
babebabebabebabebabebabebabebabebabebabebabebabebabebabebabebabe 0
/dev/sda 0 1 allow_discards
“延遲”
dm-delay,,4,ro,0 409600 delay /dev/sda1 0 500
“線性”
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
“快照源”
dm-snap-orig,,4,ro,0 409600 snapshot-origin 8:2
“條帶化”
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
對於在非同步探測的塊裝置(MMC、USB 等)之上使用 device-mapper 的設定,可能需要明確告訴 dm-init 等待它們可用後再設定 device-mapper 表。這可以透過 “dm-mod.waitfor=” 模組引數完成,該引數接受一個要等待的裝置列表。
dm-mod.waitfor=<device1>[,..,<deviceN>]