-
Notifications
You must be signed in to change notification settings - Fork 13
/
19补2、dracut 命令
408 lines (301 loc) · 13.4 KB
/
19补2、dracut 命令
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
dracut 生成 initramfs 镜像的低级工具
dracut [OPTION] [<image> [<kernel version>]]
创建一个以 <image> 命名 对应 系统内核版本为 <kernel version> 的 initramfs 文件
如果 <kernel version> 未指定,则以当前正在使用的系统内核为准
如果 <image> 未指定,则使用 /boot/initramfs-<kernel version>.img
需要寻找完整的 内核命令选项 可以 man 7 dracut.cmdline
若已救援模式启动,则所有的与 initramfs 相关的 log 都会保存至 /run/initramfs/rdsosreport.txt 中
# 常用的选项搭配
dracut
以当前运行状态,配制出 initramfs 文件
dracut foobar.img
自定义 initramfs 文件名
dracut foobar.img 3.10.0-229.el7.x86_64
自定义 intiramfs 文件名 和使用的 系统内核
dracut --kver 3.10.0-229.el7.x86_64
仅自定义 使用的 系统内核
若要最精简化 initramfs,可以使用 --hostonly 或 -H 命令
这样 dracut 会生成 本机 以 当前状态 启动,所需要的最少的文件
从 CentOS 7 开始,这将成为默认的设置,
若要生成 non-hostonly image,请安装 dracut-config-generic rpm 包
若要查看一个 initramfs 包,请使用 lsinitrd 命令
若要启用 dracut 模块,可以将 模块名添加至
/etc/dracut.conf
或
/etc/dracut.conf.d/<name>.conf
详见 man 5 dracut.conf
或使用 --add 或 -a 参数
dracut --add bootchart initramfs-bootchart.img
dracut --list-modules
查看可用的 dracut 模块
关闭 dracut 模块
将模块名添加至 dracut.conf 或 /etc/dracut.d/<name>.conf 的 omit_dracutmodules 变量中
或使用 --omit 或 -o 参数
dracut -o "multipath lvm" no-multipath-lvm.img
添加 kernel 模块
使用 --add-drivers 选项
或将模块名添加至 dracut.conf 或 /etc/dracut.d/<name>.conf 的 drivers 变量中
dracut --add-drivers mymod initramfs-with-mymod.img
对于未使用 hostonly 模式生成的 initramfs,其中不会包含任何系统配置文件
而系统配置信息,将以 内核命令 的方式传递给 内核
而 内核命令 将写入 grub.cfg 配置文件中
若要取得 内核命令 中必须指定的磁盘路径,可以使用以下命令
dracut --print-cmdline
内核命令 的 root 指定
系统更目录所在位置 可以用 root=<设备路径> EG. root=/dev/sda
可以用 root=UUID=<设备 UUID> EG. root=UUID=19e9dda3-5a38-484d-a9b0-fa6b067d0331
可以用 root=LABEL=<设备 label> EG. root=label=MyRootPartiLabel
若使用了加密磁盘作为启动目录,则可以配置 输入密码时 需要的 字体、键盘映射样式、以及语言 等等
EG.
rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.keymap=de-latin1-nodeadkeys rd.locale.LANG=de_DE.UTF-819e9dda3-5a38-484d-a9b0-fa6b067d0331
禁用 内核模块
EG.
rd.driver.blacklist=mptsas rd.driver.blaclist=nouveau
加速启动进程
EG. 若系统根目录不在 LVM RAID 或 LUKS 加密盘上,则可以在 内核命令上添加如下参数
rd.luks=0 rd.lvm=0 rd.dm=0
这会让内核不加载 LUKS LVM 和 RAID 支持模块,加速启动
在 intiramfs 中加入自定义文件
使用 --include 选项,该选项只能定义一次
dracut --include <原文件/目录> <目标路径> <initramfs 文件名>
使用 --install 选项,该选项可定义多次
dracut --install "strace fsck.ext3 ssh" initramfs-dbg.img
若要使用网络设备作为 根目录,则需要安装 dracut-network 程序
详见 Red Hat Enterprise Linux Storage Administration Guide
最小化 镜像 大小
<1> 禁用所有开机时不需要的 dracut 模块
用 -m 指定需要的 dracut 模块
<2> 使用 --host-only 仅加载启动需要的 kernel 模块
EG.
# 对于一个 NFS 镜像
dracut -m "nfs network base" initramfs-nfs-only.img
# 接着在目标机器上用该镜像启动,并执行
dracut -m "nfs network base" --host-only initramfs-nfs-hostonly.img
# 这样就极大的减小了 镜像 的 大小
可用选项
--kver <kernel version>
指定需要使用的 内核版本
-f, --force
覆盖已存在的 initramfs 文件
-m, --modules <dracut 模块 列表>
用 空格 隔开的 dracut 模块,仅有这些 dracut 模块会被包含至 intiramfs 镜像中
dracut 模块 存放在 /usr/lib/dracut/modules.d/ 文件夹中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
-o, --omit <dracut 模块 列表>
用 空格 隔开的 dracut 模块,这些模块将不会被包含至 initramfs 镜像中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
-a, --add <dracut 模块 列表>
用 空格 隔开的 dracut 模块,这些模块将额外地加入至 initramfs 镜像中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
--force-add <dracut 模块 列表>
用 空格 隔开的 dracut 模块,即使使用了 -H 选项,也强制将它们加入至 intiramfs 镜像中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
-d, --drivers <kernel 模块 列表>
用 空格 隔开的 kernel 模块,仅有这些 kernel 模块会被包含至 initramfs 镜像中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
--add-drivers <kernel 模块 列表>
用 空格 隔开的 kernel 模块,这些 kernel 模块会额外地包含至 initramfs 镜像中
仅包含模块名,而没有模块名后的 .ko 后缀
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
--omit-drivers <kernel 模块 列表>
用 空格 隔开的 kernel 模块,这些 kernel 模块不会被包含至 initramfs 镜像中
仅包含模块名,而没有模块名后的 .ko 后缀
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
--filesystems <文件系统 列表>
用 空格 隔开的 文件系统 模块,仅有这些 文件系统 模块会被包含至 initramfs 镜像中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
该选项可多次指定多次
-k, --kmoddir <kernel 模块 文件夹>
将从此文件夹中寻找 kernel 模块
--fwdir <固件 文件夹1> [固件 文件夹2]...
指定附加的 用于寻找 firmware 模块的文件夹
该选项可多次指定多次
--kernel-cmdline <parms>
设置默认的 内核命令参数
--kernel-only
仅安装 内核驱动 和 固件文件
--no-kernel
不安装 内核驱动 和 固件文件
--early-microcode
将 early microcode 加入 ramfs
--no-early-microcode
不将 early microcode 加入 ramfs
--print-cmdline
打印出适用于 内核命令的 当前磁盘布局
--mdadmconf
包含本地的 /etc/mdadm.conf 文件(软件 RAID 程序配置文件)
--nomdadmconf
不包含本地的 /etc/mdadm.conf 文件
--lvmconf
包含本地的 /etc/lvm/lvm.conf 文件
--nolvmconf
不包含本地的 /etc/lvm/lvm.conf 文件
--fscks <文件系统 检查工具 列表>
用 空格 隔开的 fsck 工具,作为 dracut.conf 的追加内容
若指定了系统中不存在的 fsck 工具,则该工具将会被忽略
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
--nofscks
不加载任何 fsck 工具
--strip
【默认选项】为 initramfs 镜像中,所有 二进制文件 做简化
--nostrip
不为 initramfs 镜像中的 二进制文件 做简化
--prelink
【默认选项】为 initramfs 镜像中的 二进制文件 做 预连接
--noprelink
不为 initramfs 镜像中的 二进制文件 做 与链接
--hardlink
【默认选项】为 initramfs 中的文件生成硬链接
--nohardlink
不为 initramfs 中的文件生成硬链接
--prefix <目录>
参考指定的目录生成 initramfs
(比如参考 /run/initramfs 生成)
--noprefix
仅参考默认位置生成 initramfs
--debug
为创建过程输出 debug 信息
-v, --verbose
增加详细度等级(默认是 info(4))
-q, --quiet
减少详细读等级(默认是 info(4))
-c, --conf <dracut 配置文件>
指定 将要使用的 dracut 配置文件
默认是 /etc/dracut.conf
--confdir <dracut 配置文件目录>
指定 将要使用的 dracut 配置文件目录
默认是 /etc/dracut.conf.d/
--tmpdir <临时目录 路径>
指定将要使用的 临时目录 路径
默认是 /var/tmp/
--sshkey <sshkey 文件>
若使用了 ssh-client 模块,则为其指定所使用的 ssh key
-l, --local
激活本地模式。
dracut 将使用 当前的工作目录 中的 模块,而非系统全局的 /uar/lib/dracut/modules.d/ 目录
来生成 initramfs
这有助于 从 git checkout 中生成 initramfs
-H, --hostonly
仅主机 模式:生成仅可以让本地主机启动的 initramfs 文件
以及仅可以让本地主机启动的 配置文件
注意:
若使用了 chroot 改变根目录至非真实的根目录下
请指定 --fstab 选项,并提供一个可用的 /etc/fstab 文件
-N, --no-hostonly
关闭 hostonly 模式
--hostonly-cmdline
将所需 内核命令 置入 initramfs 中
--no-hostonly-cmdline
不将所需的 内核命令 置入 initramfs 中
--hostonly-i18n
【默认选项】仅针对主机的配置,置入所需的 键盘布局 以及 字体文件
--no-hostonly-i18n
置入所有可用的 键盘布局 和 字体文件
--persistent-policy <策略>
使用 <策略> 来定位 磁盘和分区。
<策略> 可以是 任何 /dev/disk 下的目录名
EG. "by-uuid" 或 "by-label"
--fstab
使用 /etc/fstab 而非 /proc/self/mountinfo
--add-fstab <文件>
将 <文件> 中定义的 fstab 条目加入至 initramfs 文件的 /etc/fstab 中
--mount "<设备> <挂载点> <文件系统> [<文件系统选项> [<dump 频率> [<磁盘检查 顺序>]]]"
在 initramfs 中,把 <设备> 识别为 <文件系统> 并挂载至 <挂载点>
<文件系统选项> <dump 频率> 和 <磁盘检查顺序> 可以查看 fstab 的 帮助页
<文件系统选项> 默认为 “默认”
<dump 频率> 默认为 “0”
<磁盘检查顺序> 默认为 “2”
--add-device <设备名>
在 initramfs 中 唤醒 指定设备
当处在在 hostonly 模式的救援模式下时,若 swap 分区正好处在 LVM 或 加密分区上时,十分有效
NB-device 可用于对早期的发行版本的兼容
-i, --include <原始> <目标>
将 <原始> 目录 中的文件 置入 initramfs 的 <目标> 目录中。
若 <原始> 为文件,则将其安装至 <目标> 中
这个选项可以被指定多次
-I, --install <文件 列表>
以 空格 隔开的 文件 列表,其中的文件将会被安装至 initramfs 文件中
若 列表 含有多个参数,请用一个 引号 将它们全部引起来
--install-optional <文件 列表>
以 空格 隔开的 文件列表,若它们存在,则会被安装至 initramfs 文件中
--gzip
【默认选项】使用 gzip 压缩生成的 initramfs 文件
除非使用了其他 压缩选项 或者传入了 --no-compress 选项
本选项等价于 --compress=gzip -9
--bzip2
使用 bzip2 来压缩生成的 initramfs 文件
注意:
请确保 系统内核 有 bzip2 的解压支持。否则将无法正常启动
本选项等价于 --compress=bzip2
--lzma
使用 lzma 来压缩生成的 initramfs 文件
注意:
请确保 系统内核 有 lzma 的解压支持。否则将无法正常启动
本选项等价于 lzma --compress=lzma -9
--xz
使用 xz 来压缩生成的 initramfs 文件
注意:
请确保 系统内核 有 xz 的解压支持。否则将无法正常启动
本选项等价于 lzma --compress=xz --check-crc32 --lzma=dict=1MiB
--lzo
使用 lzop 来压缩生成的 initramfs 文件
注意:
请确保 系统内核 有 lzop 的解压支持。否则将无法正常启动
--lz4
使用 lz4 来压缩生成的 initramfs 文件
注意:
请确保 系统内核 有 lz4 的解压支持。否则将无法正常启动
--compress <压缩器>
使用 指定的 压缩程序 压缩已经生成的 initramfs 文件。
若仅输入了 压缩程序的名字 则会自动调用可以使用的命令来进行压缩
若将一个由 双引号 引起 字符串作为参数传入该选项,则将调用该字符串 执行压缩
请确保 系统内核 中有对应的解压支持,否则系统无法正常启动
--no-compress
不要对生成的 initramfs 执行压缩,这将 override 所有其他的压缩选项
--list-modules
罗列所有可用的 dracut 模块
-M, --show-modules
在构建 initramfs 时,将所有 包含的 模块名 输出至 StdOut
--keep
保留 创建 initramfs 时 使用的 临时目录,以方便 debug
--printsize
输出安装的模块的大小
--profile
输出创建过程的 profile 信息
--ro-mount
默认将以只读模式挂载 根目录 和 /usr 目录
-L, --stdlog <等级>
[0-6] 定义输出至 StdOut 的 log 等级
0 - 不输出任何信息
1 - 仅 致命错误
2 - 所有错误
3 - 警告
4 - 信息
5 - debug 信息(会输出大量的信息)
6 - trace 信息(更多的信息)
--regenerate-all
重新生成存在于默认路径下的所有 initramfs 文件。其他的 参数将传入其中
相关文件
/var/log/dracut.log
initramfs 镜像生成时的 log
/tmp/dracut.log
若 /var/log/dracut.log 不可写入
则写至该处
/etc/dracut.conf
/etc/dracut.conf.d/*.conf
/usr/lib/dracut/dracut.conf.d/*.conf
见 man 5 dracut.conf
在 initramfs 中的 配置文件
/etc/conf.d/
所有 /etc/conf.d/ 中的文件将用于设置初始的值
command line 选项将 override 在 配置文件中 设置的值
/etc/cmdline
可以包含附加的 command line 选项。
推荐使用 /etc/cmdline.d/*.conf
/etc/cmdline.d/*.conf
可以包含附加的 command line 选项