From f314e2258e35d2de528feeb5cacc527bcc40ae5d Mon Sep 17 00:00:00 2001 From: askiiart Date: Thu, 3 Oct 2024 10:49:00 -0500 Subject: [PATCH] add building blendos --- blog/building-blendos.html | 115 +++++++++++++++++++++++++++++++++++++ blog/building-blendos.md | 75 ++++++++++++++++++++++++ feed.xml | 6 +- glossary.html | 21 +++++-- glossary.md | 8 ++- sitemap.xml | 1 + 6 files changed, 218 insertions(+), 8 deletions(-) create mode 100644 blog/building-blendos.html create mode 100644 blog/building-blendos.md diff --git a/blog/building-blendos.html b/blog/building-blendos.html new file mode 100644 index 0000000..a5e8b0c --- /dev/null +++ b/blog/building-blendos.html @@ -0,0 +1,115 @@ + + + + + Building blendOS (and its packages) + + + + +

Building blendOS (and + its packages)

+

This one was pretty simple. First off, I just made an organization + to hold all my blendOS code 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 from image-builder (blendOS / + image-builder · GitLab), it seems the only blendOS-specific + packages it uses are:

+
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

+
        |-----------------|
+        |                 |
+        | package builder |
+        |                 |
+        |-----------------|
+                 |
+                 |
+
+      |-----------------------------|
+      |          ↓                  |
+      |    |----------|             |
+      |    | packages |             |
+      |    |----------|             |
+      |                             |
+      | Arch/blendOS                |
+      | repository                  |
+      |                             |
+      |           |-----------|     |
+      |           | blendOS   |     |
+      |           | iso files |←---←|←---←
+      |           |-----------|     |    |
+      |                             |    |
+      |-----------------------------|    |
+             |                           |
+             |                           |
+             |                           |
+             ↓                           |
+    |-------------------------|          |
+    |                         |          |
+    | Arch/blendOS            |          |
+    | clients                 |          |
+    |                         |          |
+    |   |--------------|      |          |
+    |   | blendOS iso  |-----→|→---------↑
+    |   |   builder    |      |
+    |   |--------------|      |
+    |                         |
+    |-------------------------|
+

Citations

+

 Saraswat, Rudra, et al. “blendOS · GitLab.” GitLab, + git.blendos.co/blendOS. + Accessed 2 Oct. 2024.
+  Saraswat, Rudra, and Asterisk. “blendOS / image-builder · + GitLab.” GitLab, git.blendos.co/blendOS/image-builder. + Accessed 3 Oct. 2024.
+

+ + + + + diff --git a/blog/building-blendos.md b/blog/building-blendos.md new file mode 100644 index 0000000..9e02e89 --- /dev/null +++ b/blog/building-blendos.md @@ -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 + + Saraswat, Rudra, et al. “blendOS · GitLab.” *GitLab*, [git.blendos.co/blendOS](https://git.blendos.co/blendOS). Accessed 2 Oct. 2024.\ + Saraswat, Rudra, and Asterisk. “blendOS / image-builder · GitLab.” *GitLab*, git.blendos.co/blendOS/image-builder. Accessed 3 Oct. 2024.\ diff --git a/feed.xml b/feed.xml index 9322e12..a3df57b 100644 --- a/feed.xml +++ b/feed.xml @@ -5,7 +5,7 @@ eng.askiiart.net This is the feed for engl.askiiart.net, I guess https://askiiart.net - Thu, 19 Sep 2024 15:42:25 +0000 + Thu, 03 Oct 2024 15:46:35 +0000 Glossary https://engl.askiiart.net/glossary.html @@ -14,6 +14,10 @@ OCI Images as a "Filesystem": Vanilla OS https://engl.askiiart.net/blog/vanilla-os.html + + Building blendOS (and its packages) + https://engl.askiiart.net/blog/building-blendos.html + Checking out blendOS https://engl.askiiart.net/blog/blendos.html diff --git a/glossary.html b/glossary.html index 390cb26..e9264d8 100644 --- a/glossary.html +++ b/glossary.html @@ -36,10 +36,14 @@ track of different versions of files, can be used to resolve conflicting changes, etc.
  • 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 @@
  • 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.
  • diff --git a/glossary.md b/glossary.md index 9fa807d..551e6af 100644 --- a/glossary.md +++ b/glossary.md @@ -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 \ No newline at end of file + - 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. diff --git a/sitemap.xml b/sitemap.xml index e2dc273..2ba30f7 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,6 +1,7 @@ https://engl.askiiart.net/index.html https://engl.askiiart.net/glossary.html +https://engl.askiiart.net/blog/building-blendos.html https://engl.askiiart.net/blog/vanilla-os.html https://engl.askiiart.net/blog/blendos.html