summaryrefslogtreecommitdiff
path: root/build-os
diff options
context:
space:
mode:
authorPhilip J Freeman <elektron@halo.nu>2025-05-31 12:34:14 -0700
committerPhilip J Freeman <elektron@halo.nu>2025-05-31 15:47:31 -0700
commit34105077c777b0d2c5c69f39921f376b84ce1443 (patch)
tree606152d6f739a0ee7fd8e5127e79b595f3fe8c85 /build-os
parent5392080129b1093f36533e47c155f618c283ea57 (diff)
Deploying a demo amd64 debian-based OS via ostree
This is a prototype outline for building and deploying a debian based OS with ostree. For purposes of demonstration, the OS runs from a bootable USB device on a UEFI capable amd64 machine. Once a USB device is created and booted, the OS can be updated using a simple shell script. <https://ostreedev.github.io/ostree/> <https://www.nin.wiki/Halo_numbers>
Diffstat (limited to 'build-os')
-rwxr-xr-xbuild-os50
1 files changed, 50 insertions, 0 deletions
diff --git a/build-os b/build-os
new file mode 100755
index 0000000..17f41bb
--- /dev/null
+++ b/build-os
@@ -0,0 +1,50 @@
+#!/bin/bash -xe
+
+set -o pipefail
+
+. config
+. sh-lib
+
+version=$( date +%Y%m%d.%H%M%S )
+
+# Check for dependencies:
+package_deps debootstrap
+
+function unmount_pseudo_filesystems(){
+ set +e
+ for dir in dev sys proc; do umount -v "$root"/"$dir"; done
+ set -e
+}
+
+function on_exit(){
+ set +e
+ unmount_pseudo_filesystems
+}
+trap on_exit EXIT
+
+root="${roots:?}"/"$version"
+
+mkdir -p "$root"
+
+# bootstrap the OS
+
+debootstrap "$codename" "$root"
+
+for dir in /proc /sys /dev; do
+ mount --bind "$dir" "$root"/"$dir"
+done
+
+export DEBIAN_FRONTEND=noninteractive
+export version
+export root
+export osname
+export osversion
+export osdesc
+export branch
+export remote
+
+run-parts --exit-on-error -- hooks/build-os
+
+unmount_pseudo_filesystems
+
+run-parts --exit-on-error -- hooks/build-os-post