1LORAX(1) Lorax LORAX(1)
2
3
4
6 lorax - Lorax Documentation
7
8 Authors
9 Brian C. Lane <bcl@redhat.com>
10
11 "I am the Lorax. I speak for the trees [and images]."
12
13 The lorax tool is used to create the Anaconda installer boot.iso as
14 well as the basic release tree, and .treeinfo metadata file. Its depen‐
15 dencies are fairly light-weight because it needs to be able to run in a
16 mock chroot environment. It is best to run lorax from the same release
17 as is being targeted because the templates may have release specific
18 logic in them. eg. Use the rawhide version to build the boot.iso for
19 rawhide, along with the rawhide repositories.
20
22 Create the Anaconda boot.iso
23
24
25 usage: lorax [-h] -p PRODUCT -v VERSION -r RELEASE [-s REPOSITORY] [--repo REPOSITORY] [-m REPOSITORY]
26 [-t VARIANT] [-b URL] [--isfinal] [-c CONFIGFILE] [--proxy HOST] [-i PACKAGE] [-e PACKAGE]
27 [--buildarch ARCH] [--volid VOLID] [--macboot] [--nomacboot] [--noupgrade]
28 [--logfile LOGFILE] [--tmp TMP] [--cachedir CACHEDIR] [--workdir WORKDIR] [--force]
29 [--add-template ADD_TEMPLATES] [--add-template-var ADD_TEMPLATE_VARS]
30 [--add-arch-template ADD_ARCH_TEMPLATES] [--add-arch-template-var ADD_ARCH_TEMPLATE_VARS]
31 [--noverify] [--sharedir SHAREDIR] [--enablerepo [repo]] [--disablerepo [repo]]
32 [--rootfs-size ROOTFS_SIZE] [--noverifyssl] [--dnfplugin DNFPLUGINS] [--squashfs-only]
33 [--skip-branding] [--dracut-conf DRACUT_CONF] [--dracut-arg DRACUT_ARGS] [-V]
34 OUTPUTDIR
35
36 Positional Arguments
37 OUTPUTDIR
38 Output directory
39
40 options
41 -V show program's version number and exit
42
43 required arguments
44 -p, --product
45 product name
46
47 -v, --version
48 version identifier
49
50 -r, --release
51 release information
52
53 -s, --source
54 source repository (may be listed multiple times)
55
56 Default: []
57
58 --repo source dnf repository file
59
60 Default: []
61
62 Named Arguments
63 -m, --mirrorlist
64 mirrorlist repository (may be listed multiple times)
65
66 Default: []
67
68 -t, --variant
69 variant name
70
71 Default: ""
72
73 -b, --bugurl
74 bug reporting URL for the product
75
76 Default: "your distribution provided bug reporting tool"
77
78 --isfinal
79 Default: False
80
81 -c, --config
82 config file
83
84 Default: "/etc/lorax/lorax.conf"
85
86 --proxy
87 repo proxy url:port
88
89 -i, --installpkgs
90 package glob to install before runtime-install.tmpl runs. (may
91 be listed multiple times)
92
93 Default: []
94
95 -e, --excludepkgs
96 package glob to remove before runtime-install.tmpl runs. (may be
97 listed multiple times)
98
99 Default: []
100
101 --buildarch
102 build architecture
103
104 --volid
105 volume id
106
107 --macboot
108 Make the iso bootable on UEFI based Mac systems
109
110 Default: True
111
112 --nomacboot
113 Do not create a Mac bootable iso
114
115 Default: False
116
117 --noupgrade
118 Default: True
119
120 --logfile
121 Path to logfile
122
123 Default: ./lorax.log
124
125 --tmp Top level temporary directory
126
127 Default: "/var/tmp/lorax"
128
129 --cachedir
130 DNF cache directory. Default is a temporary dir.
131
132 --workdir
133 Work directory, overrides --tmp. Default is a temporary dir un‐
134 der /var/tmp/lorax
135
136 --force
137 Run even when the destination directory exists
138
139 Default: False
140
141 --add-template
142 Additional template for runtime image
143
144 Default: []
145
146 --add-template-var
147 Set variable for runtime image template
148
149 Default: []
150
151 --add-arch-template
152 Additional template for architecture-specific image
153
154 Default: []
155
156 --add-arch-template-var
157 Set variable for architecture-specific image
158
159 Default: []
160
161 --noverify
162 Do not verify the install root
163
164 Default: True
165
166 --sharedir
167 Directory containing all the templates. Overrides config file
168 sharedir
169
170 --enablerepo
171 Names of repos to enable
172
173 Default: []
174
175 --disablerepo
176 Names of repos to disable
177
178 Default: []
179
180 --rootfs-size
181 Size of root filesystem in GiB. Defaults to 2.
182
183 Default: 2
184
185 --noverifyssl
186 Do not verify SSL certificates
187
188 Default: False
189
190 --dnfplugin
191 Enable a DNF plugin by name/glob, or * to enable all of them.
192
193 Default: []
194
195 --squashfs-only
196 Use a plain squashfs filesystem for the runtime.
197
198 Default: False
199
200 --skip-branding
201 Disable automatic branding package selection. Use --installpkgs
202 to add custom branding.
203
204 Default: False
205
206 dracut arguments: (default: )
207 --dracut-conf
208 Path to a dracut.conf file to use instead of the default argu‐
209 ments. See the dracut.conf(5) manpage.
210
211 --dracut-arg
212 Argument to pass to dracut when rebuilding the initramfs. Pass
213 this once for each argument. NOTE: this overrides the defaults.
214
216 Run this as root to create a boot.iso in ./results/:
217
218 dnf install lorax
219 setenforce 0
220 lorax -p Fedora -v 23 -r 23 \
221 -s http://dl.fedoraproject.org/pub/fedora/linux/releases/23/Everything/x86_64/os/ \
222 -s http://dl.fedoraproject.org/pub/fedora/linux/updates/23/x86_64/ \
223 ./results/
224 setenforce 1
225
226 You can add your own repos with -s and packages with higher NVRs will
227 override the ones in the distribution repositories.
228
229 Under ./results/ will be the release tree files: .discinfo, .treeinfo,
230 everything that goes onto the boot.iso, the pxeboot directory, and the
231 boot.iso under ./results/images/.
232
234 By default lorax will search for the first package that provides sys‐
235 tem-release that doesn't start with generic- and will install it. It
236 then selects a corresponding logo package by using the first part of
237 the system-release package and appending -logos to it. eg. fedora-re‐
238 lease and fedora-logos.
239
240 Variants
241 If a variant is passed to lorax it will select a system-release package
242 that ends with the variant name. eg. Passing --variant workstation will
243 select the fedora-release-workstation package if it exists. It will se‐
244 lect a logo package the same way it does for non-variants. eg. fe‐
245 dora-logos.
246
247 If there is no package ending with the variant name it will fall back
248 to using the first non-generic package providing system-release.
249
250 Custom Branding
251 If --skip-branding is passed to lorax it will skip selecting the sys‐
252 tem-release, and logos packages and leave it up to the user to pass any
253 branding related packages to lorax using --installpkgs. When using
254 skip-branding you must make sure that you provide all of the expected
255 files, otherwise Anaconda may not work as expected. See the contents of
256 fedora-release and fedora-logos for examples of what to include.
257
258 Note that this does not prevent something else in the dependency tree
259 from causing these packages to be included. Using --excludepkgs may
260 help if they are unexpectedly included.
261
263 As of mock version 2.0 you no longer need to pass --old-chroot. You
264 will, however, need to pass --enable-network so that the mock container
265 can download packages.
266
267 Older versions of mock, between 1.3.4 and 2.0, will need to pass
268 --old-chroot to mock. These versions of mock default to using sys‐
269 temd-nspawn which cannot create the needed loop device nodes. Passing
270 --old-chroot will use the old system where /dev/loop* is setup for you.
271
273 Lorax uses dnf to install packages into a temporary directory, sets up
274 configuration files, it then removes unneeded files to save space, and
275 creates a squashfs filesystem of the files. The iso is then built us‐
276 ing a generic initramfs and the kernel from the selected repositories.
277
278 To drive these processes Lorax uses a custom template system, based on
279 Mako templates with the addition of custom commands (documented in
280 pylorax.ltmpl.LoraxTemplateRunner). Mako supports %if/%endif blocks as
281 well as free-form python code inside <% %> tags and variable substitu‐
282 tion with ${}. The default templates are shipped with lorax in
283 /usr/share/lorax/templates.d/99-generic/ and use the .tmpl extension.
284
285 runtime-install.tmpl
286 The runtime-install.tmpl template lists packages to be installed using
287 the installpkg command. This template is fairly simple, installing
288 common packages and architecture specific packages. It must end with
289 the run_pkg_transaction command which tells dnf to download and install
290 the packages.
291
292 runtime-postinstall.tmpl
293 The runtime-postinstall.tmpl template is where the system configuration
294 happens. The installer environment is similar to a normal running sys‐
295 tem, but needs some special handling. Configuration files are setup,
296 systemd is told to start the anaconda.target instead of a default sys‐
297 tem target, and a number of unneeded services are disabled, some of
298 which can interfere with the installation. A number of template com‐
299 mands are used here:
300
301 • append to add text to a file.
302
303 • chmod changes the file's mode.
304
305 • install to install a file into the installroot.
306
307 • mkdir makes a new directory.
308
309 • move to move a file into the installroot
310
311 • replace does text substitution in a file
312
313 • remove deletes a file
314
315 • runcmd run arbitrary commands.
316
317 • symlink creates a symlink
318
319 • systemctl runs systemctl in the installroot
320
321 runtime-cleanup.tmpl
322 The runtime-cleanup.tmpl template is used to remove files that aren't
323 strictly needed by the installation environment. In addition to the re‐
324 move template command it uses:
325
326 • removepkg remove all of a specific package's contents. A package may
327 be pulled in as a dependency, but not really used. eg. sound support.
328
329 • removefrom Removes some files from a package. A file glob can be
330 used, or the --allbut option to remove everything except a select
331 few.
332
333 • removekmod Removes kernel modules
334
335 The squashfs filesystem
336 After runtime-*.tmpl templates have finished their work lorax creates
337 an empty ext4 filesystem, copies the remaining files to it, and makes a
338 squashfs filesystem of it. This file is the / of the boot.iso's in‐
339 staller environment and is what is in the LiveOS/squashfs.img file on
340 the iso.
341
342 iso creation
343 The iso creation is handled by another set of templates. The one used
344 depends on the architecture that the iso is being created for. They are
345 also stored in /usr/share/lorax/templates.d/99-generic and are named
346 after the arch, like x86.tmpl and aarch64.tmpl. They handle creation of
347 the tree, copying configuration template files, configuration variable
348 substitution, treeinfo metadata (via the treeinfo template command).
349 Kernel and initrd are copied from the installroot to their final loca‐
350 tions and then xorrisofs is run to create the boot.iso
351
353 The default set of templates and configuration files from the lo‐
354 rax-generic-templates package are shipped in the /usr/share/lorax/tem‐
355 plates.d/99-generic/ directory. You can make a copy of them and place
356 them into another directory under templates.d and they will be used in‐
357 stead if their sort order is below all other directories. This allows
358 multiple packages to ship lorax templates without conflict. You can
359 (and probably should) select the specific template directory by passing
360 --sharedir to lorax.
361
363 Weldr Team
364
366 2018, Red Hat, Inc.
367
368
369
370
37137.1 May 11, 2022 LORAX(1)