Working with i686

The build system supports building for multiple CPU architectures in the same directory tree. Building for i686 or aarch64 only requires that you set the ARCH Make variable to the correct value. Normally, you would do this in .config, but you can also do this temporarily with the make ARCH=i686 command, in the shell environment (export ARCH=i686) or with the build.sh script.

First Time Build

Bootstrap Pre-Requisites And Download Sources

Follow the instructions for running bootstrap.sh to setup your environment - Building Redox or Podman Build.

Install QEMU

The i386 emulator is not installed by bootstrap.sh. You can add it like this:
(Pop!_OS/Ubuntu/Debian)

sudo apt-get install qemu-system-i386

Configuration Values

Before your first build, be sure to set the ARCH variable in .config to your architecture type, in this case i686. You can change several other configurable settings, such as the filesystem contents, etc. See Configuration Settings.

Add packages to the filesystem.

You can add programs to the filesystem by following the instructions here.

Advanced Users

For more details on the build process, please read Advanced Build.

Compiling Redox

Now we have:

  • Downloaded the sources
  • Set the ARCH environment variable to i686
  • Selected a filesystem configuration, e.g. desktop
  • Tweaked the settings to our liking
  • Probably added our recipes to the filesystem

We are ready to build a Redox image.

Building an image for emulation

cd ~/tryredox/redox

This command will create the image, e.g. build/i686/desktop/harddrive.img, which you can run with an emulator. See Running Redox.

time make all

Building A Bootable Redox Image

cd ~/tryredox/redox
  • The following command will create the file build/i686/desktop/livedisk.iso, which can be copied to a USB device or CD for testing or installation. See Running Redox on real hardware.
time make live

Give it a while. Redox is big.

Cleaning Previous Build Cycles

Cleaning Intended For Rebuilding Core Packages And Entire System

When you need to rebuild core-packages like relibc, gcc and related tools, clean the entire previous build cycle with:

cd ~/tryredox/redox/
rm -rf prefix/i686-unknown-redox/relibc-install/ cookbook/recipes/gcc/{build,sysroot,stage*} build/i686/*/{harddrive.img,livedisk.iso}

Cleaning Intended For Only Rebuilding Non-Core Package(s)

If you're only rebuilding a non-core package, you can partially clean the previous build cycle just enough to force the rebuilding of the Non-Core Package:

cd ~/tryredox/redox/
rm build/i686/*/{fetch.tag,harddrive.img}

Running Redox

Running The Redox Desktop

To open QEMU, run:

make qemu

This should open up a QEMU window, booting to Redox.

If it does not work, disable KVM with:

make qemu kvm=no

or:

make qemu iommu=no

If this doesn't work either, you should go open an issue.

Running The Redox Console Only

We disable to GUI desktop by passing the vga=no option. The following disables the graphics support and welcomes you with the Redox console:

make qemu vga=no 

It's useful to run the console in order to capture the output from the non-GUI programs.

It helps to debug applications and share the console captured logs with other developers in the Redox community.

QEMU Tap For Network Testing

Expose Redox to other computers within a LAN. Configure QEMU with a "TAP" which will allow other computers to test Redox client/server/networking capabilities.

Join the chat if this is something you are interested in pursuing.

Note

If you encounter any bugs, errors, obstructions, or other annoying things, please send a message in the chat or report the issue on GitLab. Thanks!