The build system uses several makefiles, most of which are in the directory
mk. We have grouped together most of the settings that might be interesting into
mk/config.mk. You can modify them there, or you can temporarily change them by setting them in your environment or on the
make command line. Open the file in your favorite editor and have a look through it, e.g.
gedit mk/config.mk &
Other important configuration information is contained in the filesystem config file, described below.
Which packages and programs to include in the Redox image are determined by a filesystem config file, which is a
.toml file, such as
desktop.toml and have a look through it.
gedit config/x86_64/desktop.toml &
For each supported processor architecture, there are one or more filesystem configs to choose from. For
x86_64, there are
server configurations, as well as a few others. For
i686, there are also some stripped down configurations for legacy systems with minimal RAM. Have a look in the directory
config/x86_64 for some examples.
For more details on the filesystem config, and how to include extra packages in your build, please see Including Programs.
Feel free to create your own filesystem config.
Filesystem size is the total amount of space allocated for the filesystem that is built into the image, including all packages and programs. It is specified in Megabytes (MB). The typical size is 256MB, although the
demo config is larger. The filesystem needs to be large enough to accommodate the packages that are included in the filesystem. For the livedisk system, don't exceed the size of your RAM, and leave room for the system to run.
The value for filesystem size is normally set from the filesystem config file, e.g.
filesystem_size = 256
If you wish to change it, it is recommended that you create your own filesystem config and edit it there. However, you can override it temporarily in your environment or on the
make command line, e.g.:
make FILESYSTEM_SIZE=512 qemu
mk/config.mk, you will find the variables
CONFIG_NAME. These three variables determine what system you are building. If you want to change them, you can edit
mk/config.mk and replace the values. Or, you can set the values in your environment or on your
make command line, e.g.
export ARCH=i686; make all or
make ARCH=i686 all. The first example sets the value for the lifetime of the current shell, while the second sets the value only or the current
ARCH: the processor architecture that you are building the system for. Currently supported architectures are
FILESYSTEM_CONFIG: a file that describes the packages and files to include in the filesystem. See Filesystem Config above. The default is
CONFIG_NAME: used to determine part of the name of the Redox image. Normally the basename of
The Redox image that is built is named
build.sh allows you to easily set
CONFIG_NAME when running
make. If you are not changing the values very often, it is recommended you set the values in
mk/config.mk rather than use
build.sh. But if you are testing against different architectures or configurations, then this script can help minimize effort, errors and confusion.
./build.sh [-a ARCH] [-c CONFIG_NAME] [-f FILESYSTEM_CONFIG] TARGET...
TARGET is any of the available
make targets. You can also include certain variable settings such as
-f FILESYSTEM_CONFIGallows you to specify a filesystem config file, which can be in any location but is normally in the directory
If you do specify
-f FILESYSTEM_CONFIG, but not
-c, the file path determines the other values. Normally the file would be located at e.g.
ARCHis determined from the second last element of the path. If the second last element is not a known
ARCHvalue, you must specify
CONFIG_NAMEis determined from the basename of the file.
-a ARCHis the processor architecture you are building for,
aarch64. The uppercase options
-Acan be used as shorthand for
-c CONFIG_NAMEis the name of the configuration, which appears in both the name of the image being built and (usually) the filesystem config.
If you do not specify
-f FILESYSTEM_CONFIG, the value of
FILESYSTEM_CONFIGis constructed from
The default value for
desktop, which produces a default value for
Other interesting values in
REPO_BINARY: If set to 1, the corresponding tools (prefix) or Redox packages (repo) are not compiled, rather their binaries are fetched from the Redox Gitlab repository. This can save lots of time during your first build. Note: If you are using Podman, you must set these variables in
mk/config.mkin order for your change to have any effect. Setting them in the environment or on the command line may not be effective.
FILESYSTEM_SIZE: The size in MB of the filesystem contained in the Redox image. See Filesystem Size before changing it.
REDOXFS_MKFS_FLAGS: Flags to the program that builds the Redox filesystem.
--encryptenables disk encryption.
PODMAN_BUILD: If set to 1, the build environment is constructed in Podman. See Podman Build.
CONTAINERFILE: The Podman containerfile. See Podman Build.