blob: b60adf8e702fdae34cf00e30aad29d22cc557c7b (
plain)
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
|
<?xml version="1.0" encoding="UTF-8"?>
<section id="rootfs_ipkg_class" xreflabel="rootfs_ipkg class">
<title>rootfs_ipkg class</title>
<para>The <emphasis>rootf_ipk</emphasis> class us used to create a root
filesystem for the target device from a set of .ipkg packages. The end
result is a directory containing all the files that need to be included in
the root filesystem of the target device.</para>
<para>This class is normally not used directly, but instead used from the
<xref linkend="image_class" /> which creates images from a set of package
(typically <command>.ipkg</command>) files.</para>
<para>Summary of actions performed by the <emphasis>rootfs_ipkg</emphasis>
class:</para>
<orderedlist>
<listitem>
<para>Erase any existing root filesystem image by deleting the entire
contents of <command>${IMAGE_ROOTFS}</command>;</para>
</listitem>
<listitem>
<para>Creates the device node directory,
<command>${IMAGE_ROOTFS}/dev</command>;</para>
</listitem>
<listitem>
<para>Determines which packages to install in order to provide the
locales that have been requested;</para>
</listitem>
<listitem>
<para>Configures ipkg to allow it to be used locally to install into the
root filesystem <command>${IMAGE_ROOTFS}</command>;</para>
</listitem>
<listitem>
<para>Installs locale related .ipkg packages;</para>
</listitem>
<listitem>
<para>Installs the list of requested <command>.ipkg</command> packages,
<command>${IPKG_INSTALL}</command>;</para>
</listitem>
<listitem>
<para>Creates ipkg's arch.conf as
<command>${IMAGE_ROOTFS}/etc/ipkg/arch.conf</command>;</para>
</listitem>
<listitem>
<para>Runs any preinst and postinst scripts that were specified by the
installed .ipkg packages;</para>
</listitem>
<listitem>
<para>Creates the system configuration directory
<command>${IMAGE_ROOTFS}/${sysconfdir}</command> (that is the
<command>/etc</command> directory on the target);</para>
</listitem>
<listitem>
<para>Runs and custom post-processing commands, as described by
<command>${ROOTFS_POSTPROCESS_COMMAND}</command>;</para>
</listitem>
<listitem>
<para>Verifies that all the ipkg's were installed correctly and reports
an error if they were not;</para>
</listitem>
<listitem>
<para>Makes available a set of functions which may be used by callers of
the class: <command>zap_root_password</command>,
<command>create_etc_timestamp</command> and
<command>remove_init_link</command>;</para>
</listitem>
<listitem>
<para>Adds the rootfs task to run after the <emphasis>install</emphasis>
task <command>"addtask rootfs before do_build and
do_install"</command>.</para>
</listitem>
</orderedlist>
<para>The following variables may be used to control some of the behaviour
of this class:</para>
<variablelist>
<varlistentry>
<term>IPKG_INSTALL</term>
<listitem>
<para>The list of packages which will be installed into the root
filesystem. This needs to be set in order for this class to perform
any useful work.</para>
<para>Default: empty</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ROOTFS_POSTPROCESS_COMMAND</term>
<listitem>
<para>Defines additional commands to run after processing of the root
filesystem. Could be used to change roots password, remove parts of
the install kernel such as the <command>zImage</command> kernel image
or to edit the ipkg configuration for example.</para>
<para>Default: empty</para>
</listitem>
</varlistentry>
<varlistentry>
<term>PACKAGE_ARCH</term>
<listitem>
<para>Defines the list of architectures that are support by the target
platform. This is used to configure the arch settings for ipkg on the
target system.</para>
<para>Default: <command>"all any noarch ${TARGET_ARCH}
${PACKAGE_EXTRA_ARCHS} ${MACHINE}"</command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>IMAGE_LINGUAS</term>
<listitem>
<para>Specifies which locales should be installed. This is often set
to <command>""</command> to indicate that no locales will be
installed.</para>
<para>Default: <command>"de-de fr-fr en-gb"</command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>EXTRA_IMAGEDEPENDS</term>
<listitem>
<para>A list of dependencies, this is appended to
<command>DEPENDS</command>. This is typically used to ensure that any
commands that are called by
<command>ROOTFS_POSTPROCESS_COMMAND</command> are actually built by
the system prior to being called.</para>
<para>Default: empty</para>
</listitem>
</varlistentry>
<varlistentry>
<term>BUILDNAME</term>
<listitem>
<para>The name of the build. This is either set by the distro
configuration (for released versions) or set to a date stamp which is
autogenerated by bitbake.</para>
<para>Default: <command>'date +%Y%m%d%H%M'</command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>IMAGE_ROOTFS</term>
<listitem>
<para>The path to the root of the filesystem image. You can use this
when you need to explicitly refer to the root filesystem
directory.</para>
<para>Default: <command>IMAGE_ROOTFS =
"${TMPDIR}/rootfs"</command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>DEPLOY_DIR</term>
<listitem>
<para>The base deploy dir. Used to find the directory containing the
ipkg files.</para>
<para>Default: <command>DEPLOY_DIR =
"${TMPDIR}/deploy"</command></para>
</listitem>
</varlistentry>
<varlistentry>
<term>DEPLOY_DIR_IPK</term>
<listitem>
<para>The directory in which to search for the ipkg files that are to
be installed in the root filesystem.</para>
<para>Default: <command>DEPLOY_DIR_IPK =
"${DEPLOY_DIR}/ipk"</command></para>
</listitem>
</varlistentry>
</variablelist>
<para>Note that the entire process is run under the control of <xref
linkend="fakeroot" /> in order to handle device files, uids and gids. The
<command>ROOTFS_POSTPROCESS_COMMAND</command> is useful due to the fact that
it runs within the same <xref linkend="fakeroot" /> instance as the rest of
this class.</para>
<para>The class also provides a function <command>real_do_rootfs</command>
which is executed without <xref linkend="fakeroot" /> and therefore can be
used from other classes, such as <xref linkend="image_class" />, that
are already running under the control of <xref linkend="fakeroot" />.</para>
</section>
|