83f5f9e1a7
Don't bother with QScopeGuard just right now, since I can't find a use-case in the Calamares codebase. FIXES #1358 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
Config.cpp | ||
Config.h | ||
netinstall.conf | ||
netinstall.yaml | ||
NetInstallPage.cpp | ||
NetInstallPage.h | ||
NetInstallViewStep.cpp | ||
NetInstallViewStep.h | ||
PackageModel.cpp | ||
PackageModel.h | ||
PackageTreeItem.cpp | ||
PackageTreeItem.h | ||
page_netinst.ui | ||
README.md | ||
Tests.cpp |
Netinstall module
The netinstall module allows distribution maintainers to ship minimal ISOs with only a basic set of preinstalled packages. At installation time, the user is presented with the choice to install groups of packages from a predefined list.
Calamares will then use the packages module to install the packages.
Module Configuration
The netinstall.conf
file is self-describing, and at the very
least should contain a groupsUrl key:
----
groupsUrl: <URL to YAML file>
The URL must point to a YAML file, the groups file. See below for
the format of that groups file. The URL may be a local file (e.g.
scheme file:///
) or a regular HTTP(s) URL. The URL has one special
case: the literal string local
is used to indicate that the groups
data is contained in the netinstall.conf
file itself.
Groups Configuration
Here is a short example of how the YAML file should look.
- name: "Group name"
description: "Description of the group"
packages:
- lsb-release
- avahi
- grub
- name: "Second group name"
...
The file is composed of a list of entries, each describing one group. The keys name, description and packages are required for each group.
More keys (per group) are supported:
- hidden: if true, do not show the group on the page. Defaults to false.
- selected: if true, display the group as selected. Defaults to false.
- critical: if true, make the installation process fail if installing any of the packages in the group fails. Otherwise, just log a warning. Defaults to false. If not set in a subgroup (see below), inherits from the parent group.
- immutable: if true, the state of the group (and all its subgroups) cannot be changed; it really only makes sense in combination with selected set to true. This only affects the user-interface.
- expanded: if true, the group is shown in an expanded form (that is, not-collapsed) in the treeview on start. This only affects the user- interface. Only top-level groups are show expanded-initially.
- immutable: if true, the group cannot be changed (packages selected or deselected) and no checkboxes are shown for the group.
- subgroups: if present this follows the same structure as the top level of the YAML file, allowing there to be sub-groups of packages to an arbitary depth
- pre-install: an optional command to run within the new system before the group's packages are installed. It will run before each package in the group is installed.
- post-install: an optional command to run within the new system after the group's packages are installed. It will run after each package in the group is installed.
If you set both hidden and selected for a group, you are basically creating a "default" group of packages which will always be installed in the user's system.
The note below applies to Calamares up-to-and-including 3.2.13, but will change in a later release.
The pre-install and post-install commands are not passed to
a shell; see the packages module configuration (i.e. packages.conf
)
for details. To use a full shell pipeline, call the shell explicitly.
Overall Configuration
Here is the set of instructions to have the module work in your Calamares.
First, if the module is used, we need to require a working Internet connection,
otherwise the module will be unable to fetch the package groups and to perform
the installation. Requirements for the Calamares instance are configured in the
welcome.conf
file (configuration for the welcome module). Make sure
internet is listed under the required checks.
In the settings.conf
file, decide where the netinstall page should be
displayed. I put it just after the welcome page, but any position between
that and just before partition should make no difference.
If not present, add the packages job in the exec list. This is the job
that calls the package manager to install packages. Make sure it is configured
to use the correct package manager for your distribution; this is configured in
packages.conf
.
The exec list in settings.conf
should contain the following items in
order (it's ok for other jobs to be listed inbetween them, though):
- unpackfs
- networkcfg
- packages
unpackfs creates the chroot where the installation is performed, and unpacks the root image with the filesystem structure; networkcfg set ups a working network in the chroot; and finally packages can install packages in the chroot.
Common issues
If launching the package manager command returns you negative exit statuses and nothing is actually invoked, this is likely an error in the setup of the chroot; check that the parameter rootMountPoint is set to the correct value in the Calamares configuration.
If the command is run, but exits with error, check that the network is
working in the chroot. Make sure /etc/resolv.conf
exists and that
it's not empty.