123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
- <head>
- <!-- 2024-01-27 Sat 11:58 -->
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <title>Why Alpine</title>
- <meta name="author" content="Joshua Branson" />
- <meta name="description" content="We want an Alpine based Hurd distribution, because
- Alpine is simple, secure, and uses the latest
- software releases." />
- <meta name="keywords" content="Alpine Hurd GNU Mach" />
- <meta name="generator" content="Org Mode" />
- <link rel="stylesheet" href="../css/normalize.css" type="text/css"/><link rel="stylesheet" href="../css/default-org-stylesheet.css" type="text/css"/><link rel="stylesheet" href="../css/stylesheet.css" type="text/css"/>
- </head>
- <body>
- <div id="preamble" class="status">
- <nav><a href="../index.html">Home</a><a href="../about.html">About</a><a href="../blog/index.html">Blog</a></nav>
- </div>
- <div id="content" class="content">
- <h1 class="title">Why Alpine</h1>
- <p>
- GNU/Linux has several different <i>distributions</i>: Ubuntu, Debian,
- Fedora, Suze, etc, and each distribution is slightly different from
- the others. Fedora usually uses the most recent software, while
- Debian offers stability. Each distribution helps the entire
- ecosystem, by ensuring various library versions play nicely together,
- each develops of different package managers, some use different
- compilers (<code>LLVM</code> instead of <code>GCC</code>) etc. Users are free to choose the
- distribution that they prefer. This has worked out well for
- GNU/Linux, but how many <b>active</b> Hurd distributions are there? <sup><a id="fnr.1" class="footref" href="#fn.1" role="doc-backlink">1</a></sup>
- </p>
- <p>
- Currently? Just two: <a href="https://www.debian.org/ports/hurd/">Debian GNU/Hurd</a> and <a href="https://guix.gnu.org">Guix System</a>. Of these two,
- Debian GNU/Hurd is more complete. Debian GNU/Hurd has more packages,
- more global mirrors, etc. People run Debian GNU/Hurd in <code>qemu</code>, <code>Xen</code>,
- and on real hardware (I use a T43). The Hurd Guix System is catching
- up to Debian GNU/Hurd, but is not quite there yet <sup><a id="fnr.2" class="footref" href="#fn.2" role="doc-backlink">2</a></sup>. What is nice about
- Guix System, is that they make it realy easy to run the Hurd in a
- virtual machine via this bit of <a href="https://guix.gnu.org/manual/en/html_node/Virtualization-Services.html#index-childhurd">guile code</a>:
- </p>
- <div class="org-src-container">
- <pre class="src src-scheme">(service hurd-vm-service-type
- (hurd-vm-configuration
- (disk-size (* 5000 (expt 2 20))) <span style="font-weight: bold; font-style: italic;">;</span><span style="font-weight: bold; font-style: italic;">5G</span>
- (memory-size 1024)))
- </pre>
- </div>
- <p>
- We want to add a third distribution based on <a href="https://www.alpinelinux.org/about/">Alpine Linux</a>. Please
- note that Alpine Linux is not directly involved in this project. We
- just like their design goals: small, simple, and secure.
- </p>
- <p>
- But why another distribution? Why not invest in the Hurd
- distributions that already exist? We believe that creating another
- distribution will uncover bugs (like the one Sergey found in glibc),
- test the Hurd in new environments, encourage more users to run the
- Hurd, generate good publicity for the Hurd, and it's fun!
- </p>
- <p>
- What makes Alpine Linux different from Guix and Debian? Debian is
- stable and uses somewhat older software (notable not the latest
- glibc), Guix is written entirely in guile scheme, breaks the <a href="https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">FHS</a>, and
- has some <a href="https://guix.gnu.org/en/about/">exciting package management features</a>. Alpine Linux is not a
- GNU distribution, and it is also known for being light-weight, secure,
- and simple. Alpine also keeps all of its packages' build recipes in
- one git repo (<code>aports</code>). To contribute a change, one would fork
- <code>aports</code> and make a MR against the repo. If its accepted, then
- Alpine's continuous integration can rebuild the packages and within
- minutes make the new package available for download.
- </p>
- <div id="outline-container-orgea83716" class="outline-2">
- <h2 id="orgea83716">What is the current status?</h2>
- <div class="outline-text-2" id="text-orgea83716">
- <p>
- Sergey ported many Alpine packages to build with (i386, for now) GNU
- Mach, the Hurd, and glibc, replacing Linux and musl. Sergey built
- everything with GCC/binutils it uses gnumach, hurd, and glibc. But
- other than that, GNU software is not the default. He has 299
- installable packages; the number of source packages is of course
- several times less than that. Still, this includes things like curl,
- ncurses, nano, native binutils & gcc & mig, libffi, openrc, openssl,
- util-linux, busybox, apk-tools, … and of course gnumach, hurd (with
- dependencies like libdaemon, parted, …), and glibc. Importantly, all
- this cleanly bootstraps using the <code>scripts/bootstrap.sh</code> script that
- Alpine provides; this is too somewhat like Flávio's scripts, but it
- uses the real full Alpine package definitions for e.g. GCC (patched by
- Sergey for glibc / Hurd support).
- </p>
- <p>
- Above the kernel and libc, things remain much as they were in upstream
- Alpine: the system boots (Sergey hasn't tried booting it yet with
- busybox init & OpenRC yet), and uses busybox as its basic
- userland. GNU software such as Bash is installable, too.
- </p>
- <p>
- There is no ABI compatibility with either Alpine Linux or other Hurd
- distributions implied: only binaries built targeting this system will
- run on it. So, Sergey bumped the minimum glibc symbol version for all
- architectures to GLIBC<sub>2.38</sub>. (And he will probably bump this further
- to GLIBC<sub>2.39</sub>) This drops code that only exists for supporting older
- binaries, and saves some disk space.
- </p>
- <p>
- The future of this project depends entirely on you. If there's no one
- interested in hacking on it and using it, it will go down in history
- as another attempt at making an alternative Hurd distro that failed to
- gain traction, much like Arch Hurd. This will be fine too; at least it
- was a fairly interesting hack.
- </p>
- <p>
- But if you are interested, speak up, join in, and spread the word! :)
- We need:
- </p>
- <ol class="org-ol">
- <li>Somewhere to keep our aports fork in. Depending on how serious we</li>
- </ol>
- <p>
- are about this (if at all), this may range from a personal repo on
- GitHub, to a GitHub/GitLab "organization", to a whole website of our
- own with our own Git hosting solution (whether GitLab or something
- else) running on it.
- </p>
- <ol class="org-ol">
- <li>Somewhere to host the built packages, so they can be downloaded by</li>
- </ol>
- <p>
- the package manager on users' machines.
- </p>
- <ol class="org-ol">
- <li>A CI setup that would build packages when their package definition</li>
- </ol>
- <p>
- changes, and upload the built result to the hosting solution from the
- previous point. Perhaps see the CI setup in the pmaports repo for some
- inspiration. There's also <a href="https://github.com/eburghar/reposerve">reposerve</a>, which appears to have been
- developed specifically to integrate with the workflow of packages
- being built on <a href="https://itsufficient.me/blog/alpine-container#packages-repository">GitLab CI</a>. Or we could use <a href="https://forgejo.org/">forgejo</a>, which supports
- <code>aports</code>.
- </p>
- </div>
- </div>
- <div id="footnotes">
- <h2 class="footnotes">Footnotes: </h2>
- <div id="text-footnotes">
- <div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1" role="doc-backlink">1</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
- <a href="https://archhurd.org/">Arch Hurd</a> did exist at some point, but it does not seem to be
- active. Perhaps you are interested in Arch, and want to re-start the
- Arch Hurd project?
- </p></div></div>
- <div class="footdef"><sup><a id="fn.2" class="footnum" href="#fnr.2" role="doc-backlink">2</a></sup> <div class="footpara" role="doc-footnote"><p class="footpara">
- Please note that we like Guix System too! Guix System has
- plenty of active developers, lots of momentum, and is building lots of
- cool software tools like <code>guix shell</code>, <a href="https://issues.guix.gnu.org/">the guix issue tracker</a>, <a href="https://qa.guix.gnu.org/">Guix
- QA</a>, and they are working really hard to translate their <a href="https://guix.gnu.org/">website</a> and
- manual into numerous languages.
- </p></div></div>
- </div>
- </div></div>
- <div id="postamble" class="status">
- <p class="date">Date: 2024-01-25 Thu 13:31</p>
- <p class="author">Author: Joshua Branson</p>
- <p class="date">Created: 2024-01-27 Sat 11:58</p>
- <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
- </div>
- </body>
- </html>
|