everest-web/docs/musl-or-glibc.html
2023-06-07 19:21:43 -04:00

84 lines
3.9 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Everest Linux - Docs</title>
<link type="text/css" rel="stylesheet" href="../css/everest.css"/>
</head>
<body>
<!-- Navbar -->
<div class="sidenav">
<img src="../img/everest-k2.svg" alt="everest-logo">
<a href="../index.html">Home</a>
<a href="../about.html">About</a>
<a href="../install.html">Install</a>
<a href="https://git.everestlinux.org/EverestLinux/glacier-pkgs">Packages</a>
<a href="../download.html">Downloads</a>
<a href="home.html">Docs</a>
<a href="https://git.everestlinux.org/EverestLinux/wiki">Wiki</a>
<a href="../errata.html">Errata</a>
<a href="https://git.everestlinux.org">Git</a>
</div>
<!-- Rest of page -->
<div class="main">
<button onclick="window.location.href='home.html';">
Back to home
</button>
<h2>Musl or Glibc?</h2>
<p>Everest supports 2 different C libraries, musl and glibc. This guide should help you decide which to choose.</p>
<h2>1 - musl</h2>
<p><strong>1.1 </strong>Pros</p>
<p>Musl is extremely lightweight and easy to build, compared to Glibc.</p>
<p>As an added bonus, musl is also more secure than Glibc.</p>
<p>Musl recieves the most support from the Everest development team.</p>
<p><strong>1.2 </strong>Cons</p>
<p>Musl may not support all programs, especially proprietary programs, or programs using Glibc-specific APIs.</p>
<p><strong>1.3 </strong>Who should use musl</p>
<p>Users running a server, doing simple web browsing, or using programs which do not depend on Glibc should use musl.</p>
<p><strong>1.4 </strong>Who shouldn't use musl</p>
<p>Users requiring proprietary software that cannot be patched and recompiled against musl, users who require nvidia graphics drivers, or those who use Steam.</p>
<p>While compatibility layers, such as gcompat, can remedy these issues, there is no 100% perfect solution.</p>
<p><strong>1.5 </strong>Solutions</p>
<p>Those wishing to run musl, even with incompatible software and hardware, have a couple of solutions:</p>
<p><i>1.5.1 </i>gcompat</p>
<p>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.</p>
<p>Install gcompat by running the following:</p>
<code>(root)# gpkg -f gcompat</code>
<p><i>1.5.2 </i>Glibc chroot</p>
<p>A minimal chroot containing Glibc can be set up very quickly.</p>
<p>First, ensure you have the everest-devtools and everest-buildtools packages installed:</p>
<code>(root)# gpkg -f everest-devtools everest-buildtools</code>
<p>Next, create a directory for the chroot:</p>
<code>(user)$ mkdir your-chroot</code>
<p>Create a filesystem skeleton in the new directory:</p>
<code>(user)$ mkskel -d your-chroot</code>
<p>Install the necessary packages to the chroot:</p>
<warnhead><strong>WARNING:</strong></warnhead>
<div class="warning">
<p>The following command costs a fair amount of disk space. Ensure you have enough free space before proceeding.</p>
<p>Check disk space with the following command:</p>
<code>(root)# df /</code>
</div>
<p><p>
<code>(user)$ mkchroot-glibc -d your-chroot</code>
<p>Finally, use everest-chroot to access the chroot:</p>
<code>(root)# everest-chroot your-chroot</code>
<p>Or, you can manually mount the required filesystems and run:</p>
<code>(root)# chroot --userspec=0:0 your-chroot /bin/sh</code>
<h2>2 - Glibc</h2>
<p><strong>2.1 </strong>Pros</p>
<p>Glibc supports most programs on linux, including proprietary ones.</p>
<p><strong>2.1 </strong>Cons</p>
<p>Glibc is very bloated and heavy on resources for what it does.</p>
</div>
<footer>
<p>Page last updated 5/19/23 @ 14:56</p>
<p>Page licensed under GNU Free Documentation License 1.3 or later</p>
<p>--------------------</p>
<p>Copyright (C) 2021-2023 Everest Linux</p>
<p>Linux (R) is a registered trademark of Linus Torvalds.</p>
<p>Everest Linux is provided AS IS, WITHOUT WARRANTY.</p>
</footer>