-
Notifications
You must be signed in to change notification settings - Fork 0
/
mkinitramfs.hooks.7.html
193 lines (192 loc) · 9.12 KB
/
mkinitramfs.hooks.7.html
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
<!DOCTYPE html>
<html>
<!-- This is an automatically generated file. Do not edit.
mkinitramfs.hooks(7) manual page
See COPYING and COPYRIGHT files for corresponding information.
-->
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="mandoc.css" type="text/css" media="all"/>
<title>MKINITRAMFS.HOOKS(7)</title>
</head>
<body>
<table class="head">
<tr>
<td class="head-ltitle">MKINITRAMFS.HOOKS(7)</td>
<td class="head-vol">Miscellaneous Information Manual</td>
<td class="head-rtitle">MKINITRAMFS.HOOKS(7)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">mkinitramfs.hooks</code> —
<span class="Nd">mkinitramfs hooks and related stuff</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp"><b class="Sy">mkinitramfs</b> hooks provides a way to extend
initramfs' build and init process. Hooks must be written in POSIX shell.
Bashisms and other non-portable extensions are prohibited.</p>
<p class="Pp">Hooks can be located in
<span class="Pa">/usr/share/mkinitramfs/hooks</span> (system path) and
<span class="Pa">/etc/mkinitramfs/hooks</span> (user path). It is also
allowed to specify custom location via
<a class="Xr" href="mkinitramfs.8.html">mkinitramfs(8)</a>'
<code class="Fl">-H</code> <var class="Ar">hooksdir</var> option.</p>
<p class="Pp">In order to write hooks you must know about hook structure.
Example:</p>
<div class="Bd Pp Bd-indent Li">
<pre>hooks/
`‐‐ <hook>/ ← Directory of hook scripts
|‐‐ <hook> ← Invoked in build process
|‐‐ <hook>.init ← Invoked in init process
`‐‐ <hook>.init.late ← Invoked after root filesystem
was mounted</pre>
</div>
<section class="Ss">
<h2 class="Ss" id="Functions"><a class="permalink" href="#Functions">Functions</a></h2>
<p class="Pp">The following functions can be used by hooks in build process:</p>
<dl class="Bl-tag">
<dt id="copy_kmod"><a class="permalink" href="#copy_kmod"><b class="Sy">copy_kmod</b></a>
<var class="Ar">PATH</var></dt>
<dd>Copy kernel module by <var class="Ar">PATH</var> (full path to kernel
module) to <b class="Sy">mkinitramfs</b> working directory.</dd>
<dt id="copy_binary"><a class="permalink" href="#copy_binary"><b class="Sy">copy_binary</b></a>
<var class="Ar">PATH</var> | <var class="Ar">NAME</var></dt>
<dd>If <var class="Ar">PATH</var> (full path to binary) was specified and it
has executable bit, then it will be copied to <span class="Pa">/bin</span>
location of <b class="Sy">mkinitramfs</b> working directory.
<p class="Pp">If <var class="Ar">NAME</var> was specified, the
<b class="Sy">mkinitramfs</b> will try to find command by name in
“PATH”. If success, command will be copied to
<span class="Pa">/bin</span> location of <b class="Sy">mkinitramfs</b>
working directory. Otherwise error message will appear.</p>
</dd>
<dt id="copy_file"><a class="permalink" href="#copy_file"><b class="Sy">copy_file</b></a>
<var class="Ar">FILE DEST MODE STRIP</var></dt>
<dd>
<dl class="Bl-tag">
<dt><var class="Ar">FILE</var></dt>
<dd>Must be full path to file.</dd>
<dt><var class="Ar">DEST</var></dt>
<dd>Must be full path where <var class="Ar">FILE</var> should be stored.
<b class="Sy">mkinitramfs</b> will automatically create all leading
directories if they aren't exist already. Also no need to prepend path
of <b class="Sy">mkinitramfs</b> working directory.</dd>
<dt><var class="Ar">MODE</var></dt>
<dd>Permissions in octal format.</dd>
<dt id="1"><var class="Ar">STRIP</var></dt>
<dd>If was set to <a class="permalink" href="#1"><b class="Sy">1</b></a>,
then <b class="Sy">mkinitramfs</b> will attempt to run
<a class="Xr" href="strip.1p.html">strip(1p)</a> on file.
<b class="Sy">mkinitramfs</b> will silently ignore errors if strip
doesn't exists or failed to strip binary.</dd>
</dl>
</dd>
</dl>
<p class="Pp">The following functions can be used by hooks in init process:</p>
<dl class="Bl-tag">
<dt id="resolve_device"><a class="permalink" href="#resolve_device"><b class="Sy">resolve_device</b></a>
<var class="Ar">UUID</var> | <var class="Ar">LABEL</var> |
<var class="Ar">/dev/*</var> | <var class="Ar">PARTUUID</var></dt>
<dd>Sets
<a class="permalink" href="#device"><b class="Sy" id="device">device</b></a>
variable to full path of resolved UUID, LABEL, /dev/*, or PARTUUID.</dd>
</dl>
<p class="Pp">The following functions can be used by hooks in both processes
(build and init):</p>
<dl class="Bl-tag">
<dt id="info"><a class="permalink" href="#info"><b class="Sy">info</b></a>
<var class="Ar">MESSAGE</var></dt>
<dd>Print message to stdout.</dd>
<dt id="panic"><a class="permalink" href="#panic"><b class="Sy">panic</b></a>
[<var class="Ar">MESSAGE</var>]</dt>
<dd>If message was not specified, then <b class="Sy">mkinitramfs</b> will
print default error message. Otherwise,
<a class="permalink" href="#MESSAGE"><i class="Em" id="MESSAGE">MESSAGE</i></a>
will be printed.</dd>
</dl>
</section>
<section class="Ss">
<h2 class="Ss" id="Global_Variables"><a class="permalink" href="#Global_Variables">Global
Variables</a></h2>
<p class="Pp">The following variables can be used by hooks in build process:</p>
<dl class="Bl-tag">
<dt id="MKINITRAMFS_WORK_DIR"><a class="permalink" href="#MKINITRAMFS_WORK_DIR"><b class="Sy">MKINITRAMFS_WORK_DIR</b></a></dt>
<dd>Full path of <b class="Sy">mkinitramfs</b> working directory (initramfs
rootfs in future).</dd>
<dt id="KERNEL_VERSION"><a class="permalink" href="#KERNEL_VERSION"><b class="Sy">KERNEL_VERSION</b></a></dt>
<dd>Kernel version.</dd>
<dt id="KERNEL_MOD_DIR"><a class="permalink" href="#KERNEL_MOD_DIR"><b class="Sy">KERNEL_MOD_DIR</b></a></dt>
<dd>Kernel modules directory.</dd>
<dt id="MKINITRAMFS_INIT"><a class="permalink" href="#MKINITRAMFS_INIT"><b class="Sy">MKINITRAMFS_INIT</b></a></dt>
<dd>Path to init script.</dd>
<dt id="MKINITRAMFS_DEVHELPER"><a class="permalink" href="#MKINITRAMFS_DEVHELPER"><b class="Sy">MKINITRAMFS_DEVHELPER</b></a></dt>
<dd>Path to device-helper script.</dd>
<dt id="MKINITRAMFS_CONF"><a class="permalink" href="#MKINITRAMFS_CONF"><b class="Sy">MKINITRAMFS_CONF</b></a></dt>
<dd>Config location.</dd>
<dt id="MKINITRAMFS_IMAGE"><a class="permalink" href="#MKINITRAMFS_IMAGE"><b class="Sy">MKINITRAMFS_IMAGE</b></a></dt>
<dd>Output path where initramfs image is stored.</dd>
</dl>
<p class="Pp">The following variables can be used by hooks in init process:</p>
<dl class="Bl-tag">
<dt id="break"><a class="permalink" href="#break"><b class="Sy">break</b></a></dt>
<dd>Breakpoint for debugging.</dd>
</dl>
<p class="Pp">The following variables can be used by hooks in both processes
(build and init):</p>
<dl class="Bl-tag">
<dt id="DEBUG"><a class="permalink" href="#DEBUG"><b class="Sy">DEBUG</b></a></dt>
<dd>Equals 1 if debug mode enabled.</dd>
</dl>
<p class="Pp">See
<a class="Xr" href="mkinitramfs.config.5.html">mkinitramfs.config(5)</a> for
additional information about available hooks.</p>
</section>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
<p class="Pp">This example will show how to handle soft dependencies of
<b class="Sy">ext4</b> module. Create
<span class="Pa">/etc/mkinitramfs/hooks/ext4</span> directory and copy below
scripts with appropriate names to that directory. After that, prepend
<b class="Sy">ext4</b> to
<a class="permalink" href="#hooks"><b class="Sy" id="hooks">hooks</b></a>
option in <b class="Sy">mkinitramfs</b>' config
(<span class="Pa">/etc/mkinitramfs/config</span>).</p>
<dl class="Bl-tag">
<dt id="ext4"><a class="permalink" href="#ext4"><i class="Em">ext4</i></a>:</dt>
<dd>
<div class="Bd Pp Bd-indent Li">
<pre>print "Copying ext4 dependencies"
for _mod in crc32c libcrc32c; do
copy_kmod "$_mod"
done</pre>
</div>
</dd>
<dt id="ext4.init"><a class="permalink" href="#ext4.init"><i class="Em">ext4.init</i></a>:</dt>
<dd>
<div class="Bd Pp Bd-indent Li">
<pre>modprobe -a crc32c libcrc32c</pre>
</div>
</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr" href="mkinitramfs.config.5.html">mkinitramfs.config(5)</a>,
<a class="Xr" href="mkinitramfs.cmdline.7.html">mkinitramfs.cmdline(7)</a>,
<a class="Xr" href="mkinitramfs.8.html">mkinitramfs(8)</a></p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">May 22, 2024</td>
<td class="foot-os">Zeppe-Lin</td>
</tr>
</table>
</body>
</html>