everest-logo Home About Install Packages Downloads Docs Wiki Errata Git

Musl or Glibc?

Everest supports 2 different C libraries, musl and glibc. This guide should help you decide which to choose.

1 - musl

1.1 Pros

Musl is extremely lightweight and easy to build, compared to Glibc.

As an added bonus, musl is also more secure than Glibc.

Musl recieves the most support from the Everest development team.

1.2 Cons

Musl may not support all programs, especially proprietary programs, or programs using Glibc-specific APIs.

1.3 Who should use musl

Users running a server, doing simple web browsing, or using programs which do not depend on Glibc should use musl.

1.4 Who shouldn't use musl

Users requiring proprietary software that cannot be patched and recompiled against musl, users who require nvidia graphics drivers, or those who use Steam.

While compatibility layers, such as gcompat, can remedy these issues, there is no 100% perfect solution.

1.5 Solutions

Those wishing to run musl, even with incompatible software and hardware, have a couple of solutions:

1.5.1 gcompat

Gcompat is a shared object file that provides programs with Glibc APIs on a musl system. This can be used for running Glibc programs, but CANNOT be used for compiling them.

Install gcompat by running the following:

(root)# gpkg -f gcompat

1.5.2 Glibc chroot

A minimal chroot containing Glibc can be set up very quickly.

First, ensure you have the everest-devtools and everest-buildtools packages installed:

(root)# gpkg -f everest-devtools everest-buildtools

Next, create a directory for the chroot:

(user)$ mkdir your-chroot

Create a filesystem skeleton in the new directory:

(user)$ mkskel -d your-chroot

Install the necessary packages to the chroot:

WARNING:

The following command costs a fair amount of disk space. Ensure you have enough free space before proceeding.

Check disk space with the following command:

(root)# df /

(user)$ mkchroot-glibc -d your-chroot

Finally, use everest-chroot to access the chroot:

(root)# everest-chroot your-chroot

Or, you can manually mount the required filesystems and run:

(root)# chroot --userspec=0:0 your-chroot /bin/sh

2 - Glibc

2.1 Pros

Glibc supports most programs on linux, including proprietary ones.

2.1 Cons

Glibc is very bloated and heavy on resources for what it does.