NOTE: Building on WSL2 is doable, however I strongly recommend an actual UNIX system.
- A UNIX-like build system
- Root access (to build the disk image)
- The following packages OR Docker
NOTE: It is recommended that you install meson from pip, some distributions (e.g. Ubuntu) offer outdated meson packages
sudo pacman -S base-devel git cmake autoconf python3 ninja wget python-pip nasm help2man gettext gperf flex rsync git-lfs
sudo apt install build-essential git cmake curl autoconf libtool python3 python3-pip ninja-build nasm help2man gettext autopoint gperf texinfo wget flex rsync git-lfs
Install xbstrap
through pip. meson
can also be installed through pip.
python3 -m pip install xbstrap meson
Create a new directory called Build and run xbstrap init ..
inside it.
mkdir Build
cd Build
xbstrap init ..
The next step is to build the toolchain.
xbstrap install-tool --all
This will build binutils, LLVM, automake, libtool and limine for Lemon OS. This will take quite a long time (Can take from 20 minutes to an hour) so you may want to go and do something else.
You may run out of RAM whilst building LLVM (especially during the linking stage), so I recommend no more than 12 compile jobs (default determined by ninja, based on CPU thread count) on 16GB of RAM I have changed the default amount parallel of linker jobs to 2. If you run out of RAM, close some memory hungry applications and re-run the command. See host-llvm
in bootstrap.yml
Run Scripts/docker-init.sh
Scripts/docker-init.sh
This will do the following:
- Pull docker image
- Initialize xbstrap
- Extract prebuilt toolchain
- Install toolchain
In Build/
, run xbstrap install --all
, or xbstrap install lemon-base
to only install the core applications and libraries.
xbstrap install lemon-base # Build and install base applications and libraries
OR
xbstrap install --all # Build and install everything
OR
xbstrap install lemon-base lemondoom # Build and install the packages you want
To build the disk image (requires root privileges) run
xbstrap run build-disk
To run with QEMU run Scripts/run.sh
Scripts/run.sh
To run with VirtualBox create a vm called "LemonOS". You'll need to symlink or rename Disks/Lemon.img
to Disks/Lemon.hdd
as VirtualBox cannot use .img
files.
Scripts/run.sh vbox