This commit was manufactured by cvs2svn to create tag
[opensuse:installation-images.git] / README
1 1. Overview
2 ===========
3
4 To build a new image, you have to:
5
6  - be root
7  - put the installation-images dir on a *local* file system (non-NFS)
8  - on ia32 systems: linuxrc & syslinux installed
9
10 Then you can do:
11
12   make initrd
13     - build an initial ramdisk
14
15   initrd=small make initrd
16     - build a 'small' test initrd, suitable for 1.44MB boot images (for ia32)
17     - *** This is not suitable for release on our CDs! ***
18
19   make boot
20     - build an boot image (for ia32)
21
22   make root
23     - build a root image
24
25   demo=live make demo
26   demo=eval make demo
27     - build a root image for a Live/LiveEval CD
28
29   make boot
30     - build a (2.88MB) boot image (for ia32)
31
32   demo=live make boot
33   demo=eval make boot
34     - build a (2.88MB) Live/LiveEval boot image (for ia32)
35     - add 'boot=small initrd=small' to get a 1.44MB *test* image
36
37 The images are stored in the image directory, the contents of the
38 images (except for the boot image) in the tmp directory.
39
40 There is some special magic built into the scripts that make sure that the
41 initrd fits on the boot disk by removing/adding some of the modules. See the
42 description of the *.file_list format for details.
43
44 You can select the SuSE release to build for, e.g:
45
46   suserelease=6.4 make initrd
47
48 but note:
49   - This is ignored in an autobuild environment (for obvious reasons).
50   - You cannot sensibly test for 'suserelease' in the various *.file_list files
51     using the 'ifenv' construct.
52     Use 'suse_major_release', 'suse_minor_release' or 'suse_release' instead.
53
54
55 2. How to make boot disks
56 =========================
57
58 The various boot disks differ only slightly from the installation-images stuff
59 (different kernel, module lists and syslinux.cfg file) and are derived from
60 the installation-images directory using the bin/ci_boot* scripts.
61
62 o 'boot' (*the* boot image (2.88MB, 1st CD, ia32 only)
63
64   Whithin the installation-images directory, do a
65
66     make boot
67
68 o 'yast2' boot disk (== boot image for 2nd CD, ia32 only)
69
70   Running 'bin/ci_bootdis2 test' creates the necessary files in a temporary
71   directory. Go there and run:
72
73     boot=small make boot
74
75 o 'eide' boot disk (for special eide chipsets, ia32 only)
76
77   Running 'bin/ci_bootdise test' creates the necessary files in a temporary
78   directory. Go there and run:
79
80     boot=small make boot
81
82 o 'laptop' boot disk (for laptops, ia32 only)
83
84   Running 'bin/ci_bootdisl test' creates the necessary files in a temporary
85   directory. Go there and run:
86
87     boot=small make boot
88
89 o 'bootdisk' boot disk (the fallback *floppy*, ia32 only)
90
91   Running 'bin/ci_bootdisk test' creates the necessary files in a temporary
92   directory. Go there and run:
93
94     initrd=initrd boot=small make boot
95
96 o 'modules' disk (ia32 only)
97
98   Running 'bin/ci_bootdisk test' creates the necessary files in a temporary
99   directory. Go there and run:
100
101     make modules
102
103
104 3. Format of *.file_list files
105 ==============================
106
107 o Lines starting with '#' are comments, empty lines are ignored.
108
109     example:
110
111     # some comment
112
113 o You can include other files:
114
115     include <file>
116
117     <file> is relative to the data/*/ tree.
118
119 o   if/elsif/else/endif
120
121   - if <expression>
122
123     <expression> is more or less a valid perl expression except that
124     variables don't have a starting '$' and are implicitly environment
125     variables. The only exceptions to this are 'abuild' and 'arch'.
126
127     example:
128
129     if arch eq 'ppc' && (suse_release != 7.1 || lang eq 'fr')
130     # ...
131     elsif abuild && arch eq 'sparc'
132     # ...
133     else
134     # ...
135     endif 
136
137     # note that 'suse_release' is actually $ENV{'suse_release'}; likewise
138     # 'lang' etc. But 'abuild' and 'arch' are *not* $ENV{...}!
139
140 o <package_name>: [script1,script2]
141
142   Unpack the selected package into a temporary directory. You can optionally
143   give the name of rpm-scripts to extract, too. These can be run later
144   with the 'e' command (see below).
145
146   examples:
147   
148     k_delft:
149     aaa_base: prein,postin
150
151 o <action> <arg1> <arg2> ...
152
153   Do the specified action. <action> is one of these:
154
155   - add the file/directory tree to the image:
156
157       <args>
158     ^ there's a space!
159
160   - add a file/directory with a different name
161
162     m <old_name> <new_name>
163
164   - same as 'm', but follows symlinks
165
166     a <old_name> <new_name>
167
168   - add optional files (e.g. some modules in initrd)
169
170     M <old_name> <new_name>
171
172   - add and gunzip files
173
174     g <src> <dst>
175
176   - remove a file/directory tree
177
178     r <args>
179
180   - create directories:
181
182     d <args>
183
184   - create a namped pipe:
185
186     n <name>
187
188   - touch a file
189
190     t <args>
191
192   - strip
193
194     S <args>
195
196   - hard link (<args> as for the ln command)
197
198     l <args>
199
200   - symlink
201
202     s <args>
203
204   - apply a patch from the data/*/ tree
205     (The patch *must not* contain absolute path names!)
206
207     p <patch>
208
209   - chown/chmod files
210
211     c <perm> <owner> <group> <args>
212
213   - make block device
214
215     b <major> <minor> <name>
216
217   - make char device
218
219     C <major> <minor> <name>
220
221   - add some extra files (That is, add files not from packages but from
222     the data/*/ directory.)
223
224     x <src> <dst>
225
226   - append <src> to <dst>; <src> is from the data/*/ directory.
227
228     A <src> <dst>
229
230   - execute a program/rpm-script
231     <program/script> is run from within the 'base' environment. $PWD will
232     be at the root of the filesystem which is currently built
233
234     e <program> <arg1> <arg2> ...
235     e <script>
236
237   - execute a program/rpm-script (with chroot)
238     <program/script> is run within a chroot env. <script> must be one of the
239     scripts given after the package name
240
241     E <program> <arg1> <arg2> ...
242     E <script>
243
244   - apply a perl regexp in a sed-like fashion to a file, <regexp> may contain
245     white space but not <file>
246
247     R <regexp> <file>
248
249     Note: if the this is a multi line regexp (ends with /s) it is applied to
250     the whole file. Else the regexp is applied to each line.
251
252   - search for a file <name> below <dir> and copy it to <dst>
253     (<dst> may be omitted)
254
255     f <dir> <name> <dst>
256
257   - search for a file <name> (in the local system!) below <dir> and copy it
258     to <dst> (<dst> may be omitted)
259
260     F <dir> <name> <dst>
261
262   - add files from the local system (This should be used only for
263     testing!)
264
265     X <src> <dst>
266