120 lines
7.8 KiB
HTML
120 lines
7.8 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta content="width=device-width, initial-scale=1" charset="utf-8" />
|
||
<title>OCI Images as a "Filesystem": Vanilla OS</title>
|
||
<link href="/style.css" type="text/css" rel="stylesheet" />
|
||
<link href="/prism.css" type="text/css" rel="stylesheet" />
|
||
</head>
|
||
<body class="line-numbers">
|
||
<h1 id="oci-images-as-a-filesystem-vanilla-os">OCI Images as a
|
||
"Filesystem": Vanilla OS</h1>
|
||
<p>In looking for a layered solution to blendOS's issues, I
|
||
found that the lead maintainer and creator of blendOS was
|
||
looking into using OCI images, and has even forked a repo from
|
||
Vanilla OS. So I'm trying out Vanilla OS's usage of OCI images
|
||
(which are inherently layered) to see about implementing a
|
||
similar system in blendOS.</p>
|
||
<h2 id="installation">Installation</h2>
|
||
<p>Installation is pretty simple, you're again dropped into a
|
||
simple GNOME session with a GTK installer:</p>
|
||
<img src="/assets/vanilla-os/1.png"
|
||
title="A basic GNOME session with a white GTK-based installer; it's showing the date and time/time zone selector." alt="A basic GNOME session with a white GTK-based installer; it's showing the date and time/time zone selector." />
|
||
<p>The process was very similar to blendOS's, though it also
|
||
detects virtual machines and offers an option to install tools
|
||
(e.g. clipboard sharing, video drivers) to help with that.</p>
|
||
<p>Another notable bit is that it requires more space than
|
||
blendOS, with a minimum disk size of 50 GB, but given its A/B
|
||
slot architecture (which I'll get to later), this makes
|
||
sense.</p>
|
||
<h2 id="first-boot">First boot</h2>
|
||
<p>On first boot, there's a very similar setup tool, surely
|
||
based off the installer. It makes you put in your language,
|
||
timezone, etc. again, which I was a bit annoyed by, but it's no
|
||
big deal. Then it has you create your login, select what you
|
||
want installed (from basic programs like a calendar, office
|
||
suite, etc.), then restarts and does all that.</p>
|
||
<img src="/assets/vanilla-os/2.png"
|
||
title="A similar wizard to the installer; it has the Vanilla OS logo and says "Welcome", "Make your choices, this wizard will take care of everything"" alt="A similar wizard to the installer; it has the Vanilla OS logo and says "Welcome", "Make your choices, this wizard will take care of everything"" />
|
||
<p>Then you just get a little slideshow detailing automatic
|
||
updates, its Apx package manager, and other basics, nothing
|
||
interesting, and nothing I care about.</p>
|
||
<h2 id="usage-and-configuration">Usage and configuration</h2>
|
||
<p>I tried checking the docs (<em>Vanilla OS Docs</em>), which
|
||
by themselves were difficult to find. They're a bit hidden in
|
||
"Help" despite being <em>absolutely essential</em> to using this
|
||
distro[^1]. But what I found easily was screenshots of
|
||
Overwatch. (<em>Vanilla OS</em>)</p>
|
||
<p>Regardless, once I found the docs, I tried to figure out how
|
||
it worked, and I was still very confused. After looking over it
|
||
again, I decided to check Apx's docs, its package manager, and
|
||
found how to install packages, of course. (<em>Vanilla OS
|
||
Docs</em>) I tried to install GParted; after it not running at
|
||
first due to Vanilla OS not being configured correctly and not
|
||
showing a password prompt for it, causing GParted to exit, I ran
|
||
it in the terminal with <code>sudo</code>, just to get a
|
||
permission denied error. That's because all packages are
|
||
installed in containers, there is no system package manager...
|
||
kinda.</p>
|
||
<h3 id="abroot">ABRoot</h3>
|
||
<p>ABRoot is the magic behind Vanilla OS's OCI image backend. As
|
||
far as I can tell (again, I don't believe there are no relevant
|
||
for docs for this) it essentially generates a tarball of the
|
||
relevant data for the new iteration, then symlinks to either
|
||
that or the current iteration on boot, depending on what the
|
||
user selects. It provides essentially no advantages over
|
||
blendOS's approach, and is, in my opinion, massively
|
||
overcomplicated. (<em>GitHub: Vanilla-os/abroot</em>)</p>
|
||
<p>It also acts as a package manager of sorts - it's the only
|
||
way to install packages system-wide on Vanilla OS, and it does
|
||
this by running <code>apt</code> when the new image is built,
|
||
similar to Akshara.</p>
|
||
<p>ABRoot's config file is at
|
||
<code>/etc/abroot/abroot.json</code>, but it doesn't support
|
||
declarative system-wide packages. Instead, run the
|
||
following:</p>
|
||
<div class="sourceCode" id="cb1"><pre
|
||
class="language-bash"><code class="language-bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">abroot</span> pkg add <span class="va">$PACKAGE_NAME</span></span></code></pre></div>
|
||
<p>(<em>Install additional drivers and libraries in Vanilla
|
||
OS</em>)</p>
|
||
<h2 id="conclusion">Conclusion</h2>
|
||
<p>Vanilla OS wasn't very helpful as to OCI-based layers, but I
|
||
don't think it was a complete waste of time. Vanilla OS gave me
|
||
some ideas, and I like its backend's ideas; it will most likely
|
||
serve as inspiration for when I add layers to blendOS. Plus, my
|
||
idea would have an advantage: compression.</p>
|
||
<p>But I'll get into it later, once it's a bit more fleshed out;
|
||
plus, that's not the point of this post anyways.</p>
|
||
<p>P.S. I can't get it across while keeping this post decent
|
||
quality and on-topic, but I need to emphasize how confusing the
|
||
docs were for Vanilla OS. It feels like they try to appeal to
|
||
users with basic tech literacy while not explaining how it
|
||
actually works or what anything does. They write how-to guides,
|
||
not documentation.</p>
|
||
<h2 id="footnotes">Footnotes</h2>
|
||
<p>[^1] Below the big download button, there's a link to the
|
||
installation guide, but this provides nothing helpful, it just
|
||
guides you through the already extremely simple
|
||
installation.</p>
|
||
<h2 id="sources">Sources</h2>
|
||
<p> - “Install Additional Drivers and Libraries in Vanilla OS.”
|
||
<em>Vanilla OS Docs</em>, Vanilla OS, <a
|
||
href="https://docs.vanillaos.org/handbook/en/install-additional-drivers">docs.vanillaos.org/handbook/en/install-additional-drivers</a>.
|
||
Accessed 19 Sept. 2024.<br />
|
||
- “Vanilla OS Docs.” <em>Vanilla OS</em>, Vanilla OS, <a
|
||
href="https://docs.vanillaos.org/collections/docs">docs.vanillaos.org/collections/docs</a>.
|
||
Accessed 19 Sept. 2024.<br />
|
||
- <em>Vanilla OS</em>, <a
|
||
href="https://vanillaos.org">vanillaos.org</a>. Accessed 19
|
||
Sept. 2024.<br />
|
||
- Vanilla-OS. “GitHub: Vanilla-Os/Abroot.” <em>GitHub</em>, <a
|
||
href="github.com/Vanilla-OS/ABRoot">github.com/Vanilla-OS/ABRoot</a>.
|
||
Accessed 19 Sept. 2024.</p>
|
||
<iframe src="https://john.citrons.xyz/embed?ref=askiiart.net" style="margin-left:auto;display:block;margin-right:auto;max-width:732px;width:100%;height:94px;border:none;"></iframe>
|
||
<script src="/prism.js"></script>
|
||
</body>
|
||
<footer>
|
||
<p><a href="https://git.askiiart.net/askiiart/engl-2311-blog">Source code</a> | <a href="/feed.xml">RSS</a> | <a href="/glossary.html">Glossary</a> | <a href="/about.html">About</a></p>
|
||
<small>Image captions are the same as the alt text; assuming you're sighted, you can most likely ignore them.</small>
|
||
</footer>
|
||
</html>
|