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
|
# stage4 example specfile
# used to build a stage4
# The subarch can be any of the supported catalyst subarches (like athlon-xp).
# Refer to "man catalyst" or <https://wiki.gentoo.org/wiki/Catalyst>
# for supported subarches
# example:
# subarch: athlon-xp
subarch:
# The version stamp is an identifier for the build. It can be anything you wish
# it to be, but it is usually a date.
# example:
# version_stamp: 2006.1
version_stamp:
# The target specifies what target we want catalyst to do. For building a CD,
# we start with stage4 as our target.
# example:
# target: stage4
target:
# The rel_type defines what kind of build we are doing. This is merely another
# identifier, but it useful for allowing multiple concurrent builds. Usually,
# default will suffice.
# example:
# rel_type: default
rel_type:
# This is the system profile to be used by catalyst to build this target. It is
# specified as a relative path from /var/db/repos/gentoo/profiles.
# example:
# profile: default-linux/x86/2006.1
profile:
# This specifies which snapshot to use for building this target.
# example:
# snapshot: 2006.1
snapshot:
# This specifies where the seed stage comes from for this target, The path is
# relative to $clst_sharedir/builds. The rel_type is also used as a path prefix
# for the seed.
# example:
# default/stage3-x86-2006.1
source_subpath:
# This is an optional directory containing portage configuration files. It
# follows the same syntax as /etc/portage and should be consistent across all
# targets to minimize problems.
# example:
# portage_confdir: /etc/portage
portage_confdir:
# This option specifies the location of the ebuild repositories that you would
# like to have used when building this target. It takes a space-separated list
# of directory names.
# example:
# repos: /usr/local/portage
repos:
# This option specifies the names of ebuild repositories that you would like to
# leave configured in the resulting build. It takes a space-separated list of
# names. This only affects the configuration; the contents are never kept.
# example:
# keep_repos: kde qt
keep_repos:
# This allows the optional directory containing the output packages for
# catalyst. Mainly used as a way for different spec files to access the same
# cache directory. Default behavior is for this location to be autogenerated
# by catalyst based on the spec file.
# example:
# pkgcache_path: /tmp/packages
pkgcache_path:
# This allows the optional directory containing the output packages for kernel
# builds. Mainly used as a way for different spec files to access the same
# cache directory. Default behavior is for this location to be autogenerated
# by catalyst based on the spec file.
# example:
# kerncache_path: /tmp/kernel
kerncache_path:
# The stage4 target is where you will build packages for basically updated
# stage3. These packages can be built with customized USE settings. The
# settings here are additive to the default USE configured by the profile.
# Leaving this blank will default to the system use flags
# example:
# stage4/use: ipv6 socks5 fbcon ncurses readline ssl
stage4/use:
# This is the set of packages that we will merge into the stage4 tarball. They
# will be built with the USE flags configured above. These packages must not
# depend on a configured kernel. If the package requires a configured kernel,
# then it will be defined elsewhere.
# example:
# stage4/packages: livecd-tools dhcpcd acpid apmd gentoo-sources coldplug fxload irssi gpm syslog-ng parted links raidtools dosfstools nfs-utils jfsutils xfsprogs e2fsprogs reiserfsprogs ntfsprogs pwgen rp-pppoe screen mirrorselect penggy iputils hwdata-knoppix hwsetup lvm2 evms vim pptpclient mdadm ethtool wireless-tools prism54-firmware wpa_supplicant
stage4/packages:
# A fsscript is simply a shell script that is copied into the chroot of the stage4
# after the kernel(s) and any external modules have been compiled and is
# executed within the chroot. It can contain any commands that are available
# via the packages installed by our stages or by the packages installed during
# the stage4-stage1 build. We do not use one for the official release media, so
# there will not be one listed below. The syntax is simply the full path and
# filename to the shell script that you wish to execute. The script is copied
# into the chroot by catalyst automatically.
# example:
# stage4/fsscript:
stage4/fsscript:
# This is a set of arguments that will be passed to genkernel for all kernels
# defined in this target. It is useful for passing arguments to genkernel that
# are not otherwise available via the stage4-stage2 spec file.
# example:
# stage4/gk_mainargs: --lvm --dmraid
stage4/gk_mainargs:
# This option allows you to specify your own linuxrc script for genkernel to use
# when building your CD. This is not checked for functionality, so it is up to
# you to debug your own script. We do not use one for the official release
# media, so there will not be one listed below.
# example:
# stage4/linuxrc:
stage4/linuxrc:
# This is for the message of the day. It is not required
# release media, as catalyst builds a default motd when the stage4/type is set
# to one of the gentoo-* options. This setting overrides the default motd even
# on official media. Since we do not use this for the official releases, it is
# left blank below.
# example:
# stage4/motd:
stage4/motd:
# This is for blacklisting modules from being hotplugged that are known to cause
# problems. Putting a module name here will keep it from being auto-loaded,
# even if it is detected by hotplug.
# example:
# stage4/modblacklist: 8139cp
stage4/modblacklist:
# This is for adding init scripts to runlevels. The syntax for the init script
# is the script name, followed by a pipe, followed by the runlevel in which you
# want the script to run. It looks like acpid|default and is space delimited.
# We do not use this on the official media, as catalyst sets up the runlevels
# correctly for us. Since we do not use this, it is left blank below.
# example:
# stage4/rcadd:
stage4/rcadd:
# This is for removing init script from runlevels. It is executed after the
# defaults shipped with catalyst, so it is possible to remove the defaults using
# this option. It can follow the same syntax as livcd/rcadd, or you can leave
# the runlevel off to remove the script from any runlevels detected. We do not
# use this on the official media, so it is left blank.
# example:
# stage4/rcdel:
stage4/rcdel:
# This overlay is dropped onto the filesystem within the loop. This can be used
# for such things as updating configuration files or adding anything else you
# would want within your stage4 filesystem. Files added here are available when
# docache is used. We do not use this on the official media, so we will leave
# it blank below.
# example:
# stage4/root_overlay:
stage4/root_overlay:
# This option is used to create groups. It takes a carriage-return separated
# list of group names. For instance:
# stage4/groups:
# admin
# web_group
# sudo_group
stage4/groups:
# This option is used to create non-root users. It takes a carriage-return
# separated list of user names. For instance:
# stage4/users:
# john.doe
# foo.bar
#
# These users are NOT added to any specific group. You can specify one
# or more groups to add the user(s) to using an equal sign followed by a comma
# separated list. For instance:
# stage4/users:
# john.doe=wheel,audio,cdrom
# foo.bar=www,audio
stage4/users:
# This option is used to copy an SSH public key into a user's .ssh directory.
# Catalyst will copy the SSH public key in the ~/.ssh/authorized_keys file and
# set the file permission to 0644. It takes a carriage-return separated list of
# users with a equal sign followed by the SSH public key path. For instance:
# stage4/ssh_public_keys:
# john.doe=/path/to/johns/public/key/id_rsa.pub
# foo.bar=/path/to/foos/public/key/id_ed25519.pub
stage4/ssh_public_keys:
# This option is used to specify the number of kernels to build and also the
# labels that will be used by the CD bootloader to refer to each kernel image.
# example:
# boot/kernel: gentoo
boot/kernel:
# This option tells catalyst which kernel sources to merge for this kernel
# label. This can use normal portage atoms to specify a specific version.
# example:
# boot/kernel/gentoo/sources: gentoo-sources
boot/kernel/gentoo/sources:
# This option is the full path and filename to a kernel .config file that is
# used by genkernel to compile the kernel this label applies to.
# example:
# boot/kernel/gentoo/config: /tmp/2.6.11-smp.config
boot/kernel/gentoo/config:
# This option sets genkernel parameters on a per-kernel basis and applies only
# to this kernel label. This can be used for building options into only a
# single kernel, where compatibility may be an issue. Since we do not use this
# on the official release media, it is left blank, but it follows the same
# syntax as stage4/gk_mainargs.
# example:
# boot/kernel/gentoo/gk_kernargs:
boot/kernel/gentoo/gk_kernargs:
# This option sets the USE flags used to build the kernel and also any packages
# which are defined under this kernel label. These USE flags are additive from
# the default USE for the specified profile.
# example:
# boot/kernel/gentoo/use: pcmcia usb -X
boot/kernel/gentoo/use:
# This option appends an extension to the name of your kernel, as viewed by a
# uname -r/ This also affects any modules built under this kernel label. This
# is useful for having two kernels using the same sources to keep the modules
# from overwriting each other. We do not use this on the official media, so it
# is left blank.
# example:
# boot/kernel/gentoo/extraversion:
boot/kernel/gentoo/extraversion:
# This option is for merging kernel-dependent packages and external modules that
# are configured against this kernel label.
# example:
# boot/kernel/gentoo/packages: pcmcia-cs speedtouch slmodem globespan-adsl hostap-driver hostap-utils ipw2100 ipw2200 fritzcapi fcdsl cryptsetup
boot/kernel/gentoo/packages:
# This is a list of packages that will be unmerged after all the kernels have
# been built. There are no checks on these packages, so be careful what you
# add here. They can potentially break your CD.
# example:
# stage4/unmerge: acl attr autoconf automake bin86 binutils libtool m4 bison ld.so make perl patch linux-headers man-pages sash bison flex gettext texinfo ccache distcc man groff lib-compat miscfiles rsync sysklogd bc lcms libmng genkernel diffutils libperl gnuconfig gcc-config gcc bin86 cpio cronbase ed expat grub lilo help2man libtool gentoo-sources
stage4/unmerge:
# This option is used to empty the directories listed. It is useful for getting
# rid of files that don't belong to a particular package, or removing files from
# a package that you wish to keep, but won't need the full functionality.
# example:
# stage4/empty: /var/tmp /var/cache /var/db /var/empty /var/lock /var/log /var/run /var/spool /var/state /tmp /var/db/repos/gentoo /usr/share/man /usr/share/info /usr/share/unimaps /usr/include /usr/share/zoneinfo /usr/share/dict /usr/share/doc /usr/share/ss /usr/share/state /usr/share/texinfo /usr/lib/python2.2 /usr/lib/portage /usr/share/gettext /usr/share/i18n /usr/share/rfc /usr/lib/X11/config /usr/lib/X11/etc /usr/lib/X11/doc /usr/src /usr/share/doc /usr/share/man /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly /etc/logrotate.d /etc/rsync /usr/lib/awk /usr/lib/ccache /usr/lib/gcc-config /usr/lib/nfs /usr/local /usr/diet/include /usr/diet/man /usr/share/consolefonts/partialfonts /usr/share/consoletrans /usr/share/emacs /usr/share/gcc-data /usr/share/genkernel /usr/share/gnuconfig /usr/share/lcms /usr/share/locale /etc/skel
stage4/empty:
# This option tells catalyst to clean specific files from the filesystem and is
# very usefu in cleaning up stray files in /etc left over after stage4/unmerge.
# example:
# stage4/rm: /lib/*.a /usr/lib/*.a /usr/lib/gcc-lib/*/*/libgcj* /etc/dispatch-conf.conf /etc/etc-update.conf /etc/*- /etc/issue* /etc/portage/make.conf /etc/man.conf /etc/*.old /root/.viminfo /usr/sbin/fb* /usr/sbin/fsck.cramfs /usr/sbin/fsck.minix /usr/sbin/mkfs.minix /usr/sbin/mkfs.bfs /usr/sbin/mkfs.cramfs /lib/security/pam_access.so /lib/security/pam_chroot.so /lib/security/pam_debug.so /lib/security/pam_ftp.so /lib/security/pam_issue.so /lib/security/pam_mail.so /lib/security/pam_motd.so /lib/security/pam_mkhomedir.so /lib/security/pam_postgresok.so /lib/security/pam_rhosts_auth.so /lib/security/pam_userdb.so /usr/share/consolefonts/1* /usr/share/consolefonts/7* /usr/share/consolefonts/8* /usr/share/consolefonts/9* /usr/share/consolefonts/A* /usr/share/consolefonts/C* /usr/share/consolefonts/E* /usr/share/consolefonts/G* /usr/share/consolefonts/L* /usr/share/consolefonts/M* /usr/share/consolefonts/R* /usr/share/consolefonts/a* /usr/share/consolefonts/c* /usr/share/consolefonts/dr* /usr/share/consolefonts/g* /usr/share/consolefonts/i* /usr/share/consolefonts/k* /usr/share/consolefonts/l* /usr/share/consolefonts/r* /usr/share/consolefonts/s* /usr/share/consolefonts/t* /usr/share/consolefonts/v* /etc/portage/make.conf.example /etc/make.globals /etc/resolv.conf
stage4/rm:
|