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
|
\section{conf xml}
Example of a commented conf.xml file. Keep in mind that most of those
parameters are correct, and you don't need to change whole of them.
Examples are available in this package, so please use one of them to
base your configuration.
You should only change those one:
\begin{itemize}
\item \{nameid\}
\item \{version\}
\item \{arch\}
\item \{repo\}\{path\}
\item \{media\}\{list\}*
\item \{iso\}\{header\}*
\end{itemize}
first it's an xml file
\begin{verbatim}
<?xml version='1.0'?>
\end{verbatim}
name of the product
\begin{verbatim}
<productname desc="The Linux product">
\end{verbatim}
identification of the product, used for the name of the final ISO
\begin{verbatim}
<nameid>XtreemOS</nameid>
\end{verbatim}
you should really care about this parameter, how many \textbf{urpmq} could you launch at the same time ?
10 is an high value, use it only on multi-core computer.
\begin{verbatim}
<nb_fork>10</nb_fork>
\end{verbatim}
If you want to resign you packages, define in wich file you store the password to sign RPMS, and the
gnupg file used to sign them. BCD can only sign for the moment all packages with the same key. It will
be able to sign later a media with a specific public key.
\begin{verbatim}
<signature>/home/xtreemos/.signature.gpg</signature>
<rpmrc>/home/xtreemos/.rpmrc</rpmrc>
\end{verbatim}
based\_on parameter defines on wich version of Mandriva this product will be built.
This parameter define if we need synthesis or hdlists (since 2009.1 only synthesis are needed)
It will be use to get the path of the Mandriva repositery.
\begin{verbatim}
<based_on>2009.0</based_on>
\end{verbatim}
urpmqlogs paramater define the directory to store previous urpmq queries, if not defined the system will use the /var/lib/bcd dir.
\begin{verbatim}
<urpmqlogs>/home/plop/urpmqlogs</urpmqlogs>
\end{verbatim}
Arch parameter is mandatory, it will be also used to get the path of the Mandriva repositery
\begin{verbatim}
<arch>i586</arch>
\end{verbatim}
path to the repositery (without version and arch)
\begin{verbatim}
<repo desc="Where is the repositery of the distribution">
<path>/mnt/BIG/dis</path>
</repo>
\end{verbatim}
so the full path of the Mandriva repositery will be in our example
\begin{verbatim}
</mnt/BIG/dis/2009.0/i586>
\end{verbatim}
workdir is where you want to store the result of the build. Two directories
will be built, \textbf{build} to store the base of the DVD, \textbf{iso} to store the final ISO.
\begin{verbatim}
<workdir desc="Where is my working dir">
<path>/home/xtreemos/build_bcd</path>
</workdir>
\end{verbatim}
basename of log files, if you want you can change it, but this option
should not exist, i should remove it...
\begin{verbatim}
<tocopy_file>tocopy_plop</tocopy_file>
\end{verbatim}
define media used and excluded in the initial chroot
\begin{verbatim}
<chroot_media>Main,Main Updates</chroot_media>
<chroot_media_exclude>Main Backports,Main Testing</chroot_media_exclude>
\end{verbatim}
all Isolinux information
\begin{verbatim}
<isolinux desc="isolinux info">
<defaultpath>isolinux</defaultpath>
\end{verbatim}
if you want to point to a custom \textbf{isolinux} directory
\begin{verbatim}
<fullpath>/home/xtreemos/export_i386/isolinux</fullpath>
\end{verbatim}
if you want to add a entry in your \textbf{isolinux.cfg}. In this example we add an HDT entry
(hardware detection tool)
\begin{verbatim}
<!-- add hdt entry in syslinux.cfg -->
<entry name="hdt" desc="Main media">
<bin>/usr/lib/syslinux/hdt.c32</bin>
<label>hdt</label>
<kernel>hdt.c32</kernel>
<append>modules=modules.pci</append>
</entry>
\end{verbatim}
some section are mandatory to keep the array structure of the xml file
\begin{verbatim}
<!-- keep this entry to create an array ref -->
<entry></entry>
\end{verbatim}
if you want to copy extra files to the isolinux buildir
\begin{verbatim}
<tocopy name="pcimap">
<file>/lib/modules/2.6.31-server-2mnb/modules.pcimap</file>
</tocopy>
<tocopy name="ids">
<file>/usr/share/pci.ids</file>
</tocopy>
<tocopy></tocopy>
</isolinux>
\end{verbatim}
all information relatives to the installer (stage2)
\begin{verbatim}
<installer desc="path to the Mandriva installer (stage1/stage2)">
<defaultpath>install</defaultpath>
\end{verbatim}
if you want to use a custom installer, really usefull if you custom it
\begin{verbatim}
<fullpath>/home/xtreemos/export_i386</fullpath>
\end{verbatim}
path to custom advertising (images used during slideshow)
\begin{verbatim}
<advertising>
<defaultpath>advertising</defaultpath>
<fullpath>/home/xtreemos/Build/pieces/advertising</fullpath>
</advertising>
\end{verbatim}
full path and name of your patch for stage2 to copy in the \textbf{buildir/install} directory. This
is an option, leave it blank if you don't use a patch
\begin{verbatim}
<patch>/home/xtreemos/Build/pieces/patch-oem.pl</patch>
</installer>
\end{verbatim}
Theme to use to patch \textbf{all.rdz} file.
Theme name will be used to install mandriva-release-THEMENAME and avoid
problem of mixing theme on a same product
\begin{verbatim}
<!-- theme must be available to path altx/all.rdz files -->
<theme name="mandriva-release-Free">
<theme>Mandriva-Free</theme>
<bootsplash>Mandriva-Free</bootsplash>
<bootsplash_path>/usr/share/bootsplash</bootsplash_path>
<gfxboot_path>/usr/share/gfxboot</gfxboot_path>
</theme>
\end{verbatim}
media section will defined wich media you want to use and you want to create on the DVD.
Keep in mind that it works like \textbf{urpmi} and \textbf{urpmq}, if you want to install a package, you need
all his dependencies, so for some specific package like restricted one on a 64bits product,
you need to use the extra parameter \begin{verbatim}<media_supp>Main,contrib,main32</media_supp>\end{verbatim}
to be sure that you will provide all needed deps. For each list bcd will add a media, and will add
\textbf{updates/backport/testing} if the tag is set to yes. Be sure you use a uniq media name, because \textbf{urpmi}
will not add a new media with a name wich already exist.
\begin{verbatim}
<media desc="media to take into account to build the ISO">
<!-- name of the first media wich contains basesystem and kernels -->
<first_media>Main</first_media>
<update_prefix>Updates</update_prefix>
<!-- use the supp_media option if you needed to use media option of urpmi, usefull for external media
wich need main and contrib to be installed, use the urpmi syntax of \-\-media (no space, media separated by coma)
\end{verbatim}
drop option is usefull to remove the media before the rpmcheck (usefull for media main32)
\begin{verbatim}
<drop>yes</drop>
\end{verbatim}
remove\_noarch is used to remove all noarch packages from a media (usefull for media main32 on pwp64 and free64)
\begin{verbatim}
<remove_noarch>yes</remove_noarch>
\end{verbatim}
input list for a specific media
\begin{verbatim}
<media_supp>Main,Main Updates,Contrib,Contrib Updates</media_supp>-->
<list name="Main" desc="Main_media">
<!-- MANDATORY list of wanted packages on the iso -->
<input name="base">
<file>lists/input_main</file>
</input>
<input name="lang">
<file>lists/languages</file>
</input>
<!-- to create an array you must keep this even if it is empty -->
<input name="xos">
<file>lists/xos_list</file>
</input>
\end{verbatim}
you can use an external media, but this media must have a \textbf{media\_info} directory
you must use external media if this media is not available in the repositery.
IE: restricted32 packages on a PowerPack 64bits product. The \textbf{fullpath\_mediadir} option
must be the full path to RPM (no subdirectory release/updates/backport).
\begin{verbatim}
<!-- external media repositery with hdlists -->
<external name="xos">
<fullpath_mediadir>/home/xtreemos/repo_xos/2009.0/i586/media/xtreemos/release</fullpath_mediadir>
</external>
\end{verbatim}
Packages unwanted on the DVD are stored in exclude list.
They will be removed at the end of the installation process.
Just add the list of those packages in an exclude list.
\begin{verbatim}
<!-- MANDATORY list of unwanted packages on the iso -->
<exclude name="exclude">
<file>lists/exclude_main</file>
</exclude>
<!-- to create an array you must keep this even if it is empty -->
<exclude>
</exclude>
\end{verbatim}
Switch nosuggest options to yes if you don't want to use RPMS's suggests
\begin{verbatim}
<!-- nosuggests options should be yes or no -->
<nosuggests>no</nosuggests>
\end{verbatim}
I will use the media name 'mediadir' and put it in the directory media/'destmedia' on the DVD.
\begin{verbatim}
<!-- will be taken in {repo}{version}{arch}/media -->
<mediadir>main</mediadir>
<destmedia>main</destmedia>
\end{verbatim}
Where to find the pubkey in the repositery (the path will be media/'mediadir'/'pubkey').
If you want to specify a specific file to use as pubkey, leave <pubkey> empty.
\begin{verbatim}
<pubkey>release/media_info/pubkey</pubkey>
<file_pubkey>/path_to_file/the_pubkey</file_pubkey>
\end{verbatim}
if you want to use backports, testing or updates sub-media, set option to yes.
Note: release media should be mandatory
\begin{verbatim}
<release>yes</release>
<updates>yes</updates>
<backport>no</backport>
<testing>no</testing>
</list>
<!-- keep this entry to create an array ref -->
<list></list>
</media>
\end{verbatim}
all \textbf{media\_info} informations are in this section
\begin{verbatim}
<mediainfo desc="All files relatives to media_info dir">
\end{verbatim}
version will be used to generate a good media.cfg files (we don't use hdlits.cz since 2009.1 release)
\begin{verbatim}
<version>2009.0</version>
\end{verbatim}
use 'fullpath' parameter to use custom rpmsrate/compssusers files
\begin{verbatim}
<!-- set fullpath if you want to use an files in a non MDV repositery -->
<fullpath>/home/xtreemos/Build/pieces</fullpath>
<mediainfo_dir>media/media_info</mediainfo_dir>
<rpmsrate>rpmsrate</rpmsrate>
<compssusers>compssUsers.pl</compssusers>
<filedeps>file-deps</filedeps>
\end{verbatim}
If you want to add an \textbf{urpmi} options to install packages. Be carreful
this can add or remove a lot of packages, and syntax in your list file can
lead to error. ie: firefox- in a list file without the parameter \textit{-a} will
lead to an \textbf{urpmi} error, because there is a lot of firefox packages wich
began with the strings firefox-
\begin{verbatim}
<urpmi_option>-a</urpmi_option>
\end{verbatim}
If you want to do some extra filter to keep latest release of a packages on the DVD.
All packages listed in extra-filter are NOT filtered: so if you have more than one
version of a package in the builddir, it will bypass the rpm comparaison.
For all other packages available in the builddir, BCD
will keep the latest one (rpm version comparaison)
\begin{verbatim}
<filter>lists/extra-filter</filter>
\end{verbatim}
media.cfg options, do a man gendistrib for more info
\begin{verbatim}
<askmedia desc="add for other media ?">
<todo>yes</todo>
</askmedia>
<suppl desc="add an external media ?">
<todo>yes</todo>
</suppl>
<xmlinfo>
<todo>no</todo>
</xmlinfo>
</mediainfo>
\end{verbatim}
ISO section
\begin{verbatim}
<iso>
\end{verbatim}
tag name and some extra parameters
\begin{verbatim}
<tag>rc1</tag>
<minor>0</minor>
<subversion>1</subversion>
<product>Download</product>
<branch>Devel</branch>
<type>basic</type>
<!-- dual arch not yet supported -->
<dualarch>no</dualarch>
<!-- SIZE is not YET USED !!! -->
<size>700</size>
<!-- media.cfg will be stored on genisoimage->{builddir}/{nameid}/{arch} -->
<mediacfg>media/media_info/media.cfg</mediacfg>
<hdlist>yes</hdlist>
<synthesis>yes</synthesis>
\end{verbatim}
info used by the genisoimage tool
\begin{verbatim}
<header desc="Iso header info">
<systemid>XtreemOS Linux</systemid>
<volumeid>XOS-2.0-i586</volumeid>
<volumesetid>XtreemOS Linux - 2.0 - i586 DVD </volumesetid>
<publisherid>XtreemOS</publisherid>
<datapreparer>XtreemOS-Linux</datapreparer>
<applicationid>XtreemOS Linux - 2.0</applicationid>
<copyrightid>XtreemOS Linux</copyrightid>
</header>
\end{verbatim}
genisoimage paramaters
\begin{verbatim}
<genisoimage desc="iso generation tool">
<options>-f -r -J -hide-rr-moved -nobak -cache-inodes -no-emul-boot -boot-load-size 4 </options>
<bootcat>isolinux/boot.cat</bootcat>
<!-- builddir and destdir will always use the workdir -->
<builddir>build</builddir>
<isodir>iso</isodir>
</genisoimage>
</iso>
</productname>
\end{verbatim}
|