Building SerenityOS
CMake is Outdated
Error: CMake version too old
Error: CMake version too old
Problem: CMake fails to configure the build.Solution: Ensure CMake version is >= 3.16:If your system doesn’t provide a suitable version, download a binary release from the CMake website.
QEMU is Missing or Outdated
Error: QEMU version too old
Error: QEMU version too old
Problem: QEMU is not found or version is too old.Solution: Ensure QEMU version is >= 5:Install QEMU from your package manager or build it:
Toolchain is Outdated
Error: Compiler version mismatch
Error: Compiler version mismatch
Problem: You see an error like:Or:Solution: Rebuild the toolchain:If CMake still shows errors after rebuilding, start with a fresh build:
GCC is Missing or Outdated
Error: GCC version too old
Error: GCC version too old
Problem: Your system GCC is too old.Solution: Ensure GCC version is >= 14:If your GCC binary has a different name, specify it when running CMake:
Legacy Renegotiation Disabled
SSL/TLS connection issues
SSL/TLS connection issues
Problem: SSL/TLS connections fail during build.Solution: Ensure
/etc/ssl/openssl.cnf has the following options:Build Problems After git pull
Build broken after update
Build broken after update
Problem: Build fails after pulling latest changes.Solution:
-
Rebuild the toolchain:
-
If that doesn’t help, try with a clean repo:
-
If still broken, ask in the
#build-problemschannel on Discord.
Running SerenityOS
The VM is Really Slow
Poor VM performance
Poor VM performance
Problem: QEMU runs very slowly.Solution:Linux: Ensure KVM is available:The run script automatically enables KVM if
/dev/kvm exists and is readable/writable by your user.Windows: Enable WHPX (Windows Hypervisor Platform) acceleration in Windows Features.Slow Boot on HiDPI Systems
Slow boot on Windows with >100% scaling
Slow boot on Windows with >100% scaling
Problem: Boot phase crawls on Windows with display scaling >100%.Solution:The default display backend (
SERENITY_QEMU_DISPLAY_BACKEND=sdl,gl=off) does not have this problem. If you’re affected:- Open properties of
C:\Program Files\qemu\qemu-system-x86_64.exe - Go to Compatibility tab
- Change DPI settings to force scaling by the System
- Adjust the setting at the bottom of the window
Boot Failures
Error: Kernel Image too big for memory slot
Error: Kernel Image too big for memory slot
Problem: Boot fails with “Error: Kernel Image too big for memory slot. Halting!”Solution:This means the kernel has grown too large. This is a known issue that requires attention:
- Contact the team on Discord server
- Open a GitHub issue
- Try reverting recent changes to see if that helps temporarily
Error: Computer does not support long mode
Error: Computer does not support long mode
Problem: “Your computer does not support long mode (64-bit mode). Halting!”Solution:
- Bare metal: Your machine doesn’t support x86_64 extensions
- VirtualBox: Enable x64 virtualization mode in VM settings
- QEMU: Don’t use
qemu-system-i386, which doesn’t support x86_64. Useqemu-system-x86_64instead.
Error: Computer does not support PAE
Error: Computer does not support PAE
Problem: “Your computer does not support PAE. Halting!”Solution:
- Bare metal: Your CPU is too old to boot SerenityOS
- VirtualBox: Enable PAE/NX in VM settings
- QEMU: The CPU model configuration is not exposing PAE. Check QEMU CPU models
Error: KVM doesn't support guest debugging
Error: KVM doesn't support guest debugging
Problem: Boot fails with KVM debugging error.Solution:
- Update host kernel to at least version 5.10 (required for
KVM_CAP_SET_GUEST_DEBUG) - Ensure your distro has QEMU debug features enabled
- Or disable KVM debugging:
Frequently Asked Questions
Will SerenityOS support X?
Maybe. Maybe not. There is no plan. If you want to see something happen, you can implement it yourself!Where are the ISO images?
To run SerenityOS, you need to build it from source. See the Build Instructions.Does SerenityOS have a package manager?
Package management in SerenityOS
Package management in SerenityOS
Short answer: No, SerenityOS does not have a “Linux-style” package manager.Why not?
- SerenityOS uses a monorepo approach - all software is built together
- The ABI (library symbols, syscall interfaces) has no stability guarantee
- The ABI can change at any moment
- POSIX C library API remains relatively stable
- No need for binary packages when everything is built from source
Ports/ directory:- Ports are third-party software that runs on SerenityOS
- Each port comes with an install script
- Ports are always built from source
- Currently, ports should be cross-compiled on the host
- Compiling ports on SerenityOS itself is possible but not recommended yet
pkg tool may improve this workflow in the future. Join #package-manager on Discord if you want to contribute.Excluding components:You can exclude SerenityOS components at compile time. See Advanced Build Instructions.