add building blendos

This commit is contained in:
askiiart 2024-10-03 10:49:00 -05:00
parent 4dbee5c616
commit f314e2258e
Signed by untrusted user who does not match committer: askiiart
GPG key ID: EA85979611654C30
6 changed files with 218 additions and 8 deletions

115
blog/building-blendos.html Normal file
View file

@ -0,0 +1,115 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="width=device-width, initial-scale=1" charset="utf-8" />
<title>Building blendOS (and its packages)</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="building-blendos-and-its-packages">Building blendOS (and
its packages)</h1>
<p>This one was pretty simple. First off, I just made <a
href="https://git.askiiart.net/askiiart-blendos">an organization
to hold all my blendOS code</a> on my Forgejo instance just to
keep it organized. Then I just cloned all the relevant
repositories from upstream (<em>blendOS · GitLab</em>), added my
own code with some minor fixes and stuff, then pushed the
updated code to my server.</p>
<p>After that, it was just a matter of adding the actual
packaging for the code. For the packages that were required for
building the blendOS <code>iso</code> file, if I didn't have my
own repository for them already, I just made a new branch,
updated the packaging, and pushed the packaging to that
branch.</p>
<p>Looking at the <a
href="https://git.blendos.co/blendOS/image-builder/-/blob/main/packages.x86_64?ref_type=heads">package
list</a> from <code>image-builder</code> (<em>blendOS /
image-builder · GitLab</em>), it seems the only blendOS-specific
packages it uses are:</p>
<div class="sourceCode" id="cb1"><pre
class="language-txt"><code class="language-default"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>filesystem-blend</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a>blend-inst-git</span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a>jade-gui</span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a>blend-git</span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a>blend-settings-git</span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>blend-web-store-git</span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a>akshara-git</span></code></pre></div>
<p>At first, after a bit of minor troubleshooting, I got this
all set up and working, pretty simple.</p>
<h2 id="oops-it-didnt-work-actually">Oops it didn't work
actually</h2>
<p>I then realized that my <code>iso</code> file worked, but was
not using my repo, and I had even forgotten to even add some of
the packages.</p>
<p>Turns out I had added my repo to the container's
<code>pacman</code> configuration, but not to the
<code>pacman</code> config for <code>archiso</code>, the tool
used to generate the <code>iso</code> file, or the actual
resulting <code>iso</code> image's <code>pacman</code> config
either. So while I would have been able to install anything from
my repo in the container, the repo was unused by
<code>archiso</code>.</p>
<p>I just added the missing packages needed to build the
<code>iso</code> file, plus all the others on blendOS's GitLab,
and rebuilt it. After a bit of troublshooting (nothing
interesting, just incompetency, wrong perms, stuff like that), I
got it working perfectly.</p>
<h2 id="topology-of-my-blendos-repo">Topology of my blendOS
repo</h2>
<div class="sourceCode" id="cb2"><pre
class="language-txt"><code class="language-default"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a> |-----------------|</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> | package builder |</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a> |-----------------|</span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a> |</span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a> |</span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true" tabindex="-1"></a> |-----------------------------|</span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true" tabindex="-1"></a> | ↓ |</span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true" tabindex="-1"></a> | |----------| |</span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true" tabindex="-1"></a> | | packages | |</span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true" tabindex="-1"></a> | |----------| |</span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true" tabindex="-1"></a> | Arch/blendOS |</span>
<span id="cb2-16"><a href="#cb2-16" aria-hidden="true" tabindex="-1"></a> | repository |</span>
<span id="cb2-17"><a href="#cb2-17" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-18"><a href="#cb2-18" aria-hidden="true" tabindex="-1"></a> | |-----------| |</span>
<span id="cb2-19"><a href="#cb2-19" aria-hidden="true" tabindex="-1"></a> | | blendOS | |</span>
<span id="cb2-20"><a href="#cb2-20" aria-hidden="true" tabindex="-1"></a> | | iso files |←---←|←---←</span>
<span id="cb2-21"><a href="#cb2-21" aria-hidden="true" tabindex="-1"></a> | |-----------| | |</span>
<span id="cb2-22"><a href="#cb2-22" aria-hidden="true" tabindex="-1"></a> | | |</span>
<span id="cb2-23"><a href="#cb2-23" aria-hidden="true" tabindex="-1"></a> |-----------------------------| |</span>
<span id="cb2-24"><a href="#cb2-24" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-25"><a href="#cb2-25" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-26"><a href="#cb2-26" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-27"><a href="#cb2-27" aria-hidden="true" tabindex="-1"></a> ↓ |</span>
<span id="cb2-28"><a href="#cb2-28" aria-hidden="true" tabindex="-1"></a> |-------------------------| |</span>
<span id="cb2-29"><a href="#cb2-29" aria-hidden="true" tabindex="-1"></a> | | |</span>
<span id="cb2-30"><a href="#cb2-30" aria-hidden="true" tabindex="-1"></a> | Arch/blendOS | |</span>
<span id="cb2-31"><a href="#cb2-31" aria-hidden="true" tabindex="-1"></a> | clients | |</span>
<span id="cb2-32"><a href="#cb2-32" aria-hidden="true" tabindex="-1"></a> | | |</span>
<span id="cb2-33"><a href="#cb2-33" aria-hidden="true" tabindex="-1"></a> | |--------------| | |</span>
<span id="cb2-34"><a href="#cb2-34" aria-hidden="true" tabindex="-1"></a> | | blendOS iso |-----→|→---------↑</span>
<span id="cb2-35"><a href="#cb2-35" aria-hidden="true" tabindex="-1"></a> | | builder | |</span>
<span id="cb2-36"><a href="#cb2-36" aria-hidden="true" tabindex="-1"></a> | |--------------| |</span>
<span id="cb2-37"><a href="#cb2-37" aria-hidden="true" tabindex="-1"></a> | |</span>
<span id="cb2-38"><a href="#cb2-38" aria-hidden="true" tabindex="-1"></a> |-------------------------|</span></code></pre></div>
<h2 id="citations">Citations</h2>
<p>Saraswat, Rudra, et al. “blendOS · GitLab.” <em>GitLab</em>,
<a
href="https://git.blendos.co/blendOS">git.blendos.co/blendOS</a>.
Accessed 2 Oct. 2024.<br />
Saraswat, Rudra, and Asterisk. “blendOS / image-builder ·
GitLab.” <em>GitLab</em>, git.blendos.co/blendOS/image-builder.
Accessed 3 Oct. 2024.<br />
</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>&ensp;|&ensp;<a href="/feed.xml">RSS</a>&ensp;|&ensp;<a href="/glossary.html">Glossary</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>

75
blog/building-blendos.md Normal file
View file

@ -0,0 +1,75 @@
# Building blendOS (and its packages)
This one was pretty simple. First off, I just made [an organization to hold all my blendOS code](https://git.askiiart.net/askiiart-blendos) on my Forgejo instance just to keep it organized. Then I just cloned all the relevant repositories from upstream (*blendOS · GitLab*), added my own code with some minor fixes and stuff, then pushed the updated code to my server.
After that, it was just a matter of adding the actual packaging for the code. For the packages that were required for building the blendOS `iso` file, if I didn't have my own repository for them already, I just made a new branch, updated the packaging, and pushed the packaging to that branch.
Looking at the [package list](https://git.blendos.co/blendOS/image-builder/-/blob/main/packages.x86_64?ref_type=heads) from `image-builder` (*blendOS / image-builder · GitLab*), it seems the only blendOS-specific packages it uses are:
```txt
filesystem-blend
blend-inst-git
jade-gui
blend-git
blend-settings-git
blend-web-store-git
akshara-git
```
At first, after a bit of minor troubleshooting, I got this all set up and working, pretty simple.
## Oops it didn't work actually
I then realized that my `iso` file worked, but was not using my repo, and I had even forgotten to even add some of the packages.
Turns out I had added my repo to the container's `pacman` configuration, but not to the `pacman` config for `archiso`, the tool used to generate the `iso` file, or the actual resulting `iso` image's `pacman` config either. So while I would have been able to install anything from my repo in the container, the repo was unused by `archiso`.
I just added the missing packages needed to build the `iso` file, plus all the others on blendOS's GitLab, and rebuilt it. After a bit of troublshooting (nothing interesting, just incompetency, wrong perms, stuff like that), I got it working perfectly.
## Topology of my blendOS repo
```txt
|-----------------|
| |
| package builder |
| |
|-----------------|
|
|
|-----------------------------|
| ↓ |
| |----------| |
| | packages | |
| |----------| |
| |
| Arch/blendOS |
| repository |
| |
| |-----------| |
| | blendOS | |
| | iso files |←---←|←---←
| |-----------| | |
| | |
|-----------------------------| |
| |
| |
| |
↓ |
|-------------------------| |
| | |
| Arch/blendOS | |
| clients | |
| | |
| |--------------| | |
| | blendOS iso |-----→|→---------↑
| | builder | |
| |--------------| |
| |
|-------------------------|
```
## Citations
&emsp;Saraswat, Rudra, et al. “blendOS · GitLab.” *GitLab*, [git.blendos.co/blendOS](https://git.blendos.co/blendOS). Accessed 2 Oct. 2024.\
&emsp;Saraswat, Rudra, and Asterisk. “blendOS / image-builder · GitLab.” *GitLab*, git.blendos.co/blendOS/image-builder. Accessed 3 Oct. 2024.\

View file

@ -5,7 +5,7 @@
<title>eng.askiiart.net</title>
<description>This is the feed for engl.askiiart.net, I guess</description>
<link>https://askiiart.net</link>
<lastBuildDate>Thu, 19 Sep 2024 15:42:25 +0000</lastBuildDate>
<lastBuildDate>Thu, 03 Oct 2024 15:46:35 +0000</lastBuildDate>
<item>
<title>Glossary</title>
<link>https://engl.askiiart.net/glossary.html</link>
@ -14,6 +14,10 @@
<title>OCI Images as a "Filesystem": Vanilla OS</title>
<link>https://engl.askiiart.net/blog/vanilla-os.html</link>
</item>
<item>
<title>Building blendOS (and its packages)</title>
<link>https://engl.askiiart.net/blog/building-blendos.html</link>
</item>
<item>
<title>Checking out blendOS</title>
<link>https://engl.askiiart.net/blog/blendos.html</link>

View file

@ -36,10 +36,14 @@
track of different versions of files, can be used to resolve
conflicting changes, etc.
<ul>
<li>Forking: Copying a Git repository and adding your own stuff
to it. Can be simply to contribute the changes back to the
upstream project later, or to use something as a base for your
own project.</li>
<li>Forking: Copying a Git repository and optionally and making
changes to it. Can be simply to contribute the changes back to
the upstream project later, or to use something as a base for
your own project.</li>
<li>Branches: Different "chains" of versions of code, which can,
well, branch apart, merge back together, and so on. Different
branches don't necessarily have to be related whatsoever, but
they usually are made from other branches.</li>
</ul></li>
<li>Repository: Usually refers to either a Git repository (i.e.
a Git project), or a server hosting packages to be installed by
@ -78,8 +82,15 @@
<li>blendOS: "Arch Linux, made declarative, immutable and
atomic."
<ul>
<li>Akshara: blendOS's system rebuilder</li>
<li>Akshara: blendOS's system rebuilder/updater</li>
</ul></li>
<li><code>pacman</code>: Arch Linux's package manager, also used
by blendOS</li>
<li><code>PKGBUILD</code>: A file defining how to build a
package which can be install by <code>pacman</code>.</li>
<li><code>iso</code> file: A disk image file, can be "burned" to
a USB flash drive (or any other disk) and booted off of, often
used for Linux installers and/or live images.</li>
</ul>
<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>

View file

@ -9,7 +9,8 @@
- AUR: Arch User Repository, a repository for Arch Linux packages which are maintained by users. AUR only hosts computer-readable instructions and related files (via `PKGBUILD` files) for creating the packages, not the packages or programs themselves
- Filesystem: The system which keeps track of how data is written to disk, like NTFS, FAT32, or ext4. Some filesystems, like ZFS or btrfs, have extra features like redundancy or compression.![alt text](image.png)
- Git: The most common version control system by far - keeps track of different versions of files, can be used to resolve conflicting changes, etc.
- Forking: Copying a Git repository and adding your own stuff to it. Can be simply to contribute the changes back to the upstream project later, or to use something as a base for your own project.
- Forking: Copying a Git repository and optionally and making changes to it. Can be simply to contribute the changes back to the upstream project later, or to use something as a base for your own project.
- Branches: Different "chains" of versions of code, which can, well, branch apart, merge back together, and so on. Different branches don't necessarily have to be related whatsoever, but they usually are made from other branches.
- Repository: Usually refers to either a Git repository (i.e. a Git project), or a server hosting packages to be installed by a package manager.
- GUI toolkit: A set of programs used for making graphical interfaces
- Qt: A GUI toolkit with an appearance similar to normal Windows interfaces; pronounced "cute"
@ -24,4 +25,7 @@
- Tarball: An archive of data, preserving its file and directory structure. Not compressed, though its tools come with options to compress it after generation.
- `apt`: The package manager for Debian-based Linux distros.
- blendOS: "Arch Linux, made declarative, immutable and atomic."
- Akshara: blendOS's system rebuilder
- Akshara: blendOS's system rebuilder/updater
- `pacman`: Arch Linux's package manager, also used by blendOS
- `PKGBUILD`: A file defining how to build a package which can be install by `pacman`.
- `iso` file: A disk image file, can be "burned" to a USB flash drive (or any other disk) and booted off of, often used for Linux installers and/or live images.

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url><loc>https://engl.askiiart.net/index.html</loc></url>
<url><loc>https://engl.askiiart.net/glossary.html</loc></url>
<url><loc>https://engl.askiiart.net/blog/building-blendos.html</loc></url>
<url><loc>https://engl.askiiart.net/blog/vanilla-os.html</loc></url>
<url><loc>https://engl.askiiart.net/blog/blendos.html</loc></url>
</urlset>