diff options
| author | Philip J Freeman <elektron@halo.nu> | 2025-05-31 12:34:14 -0700 |
|---|---|---|
| committer | Philip J Freeman <elektron@halo.nu> | 2025-05-31 15:47:31 -0700 |
| commit | 34105077c777b0d2c5c69f39921f376b84ce1443 (patch) | |
| tree | 606152d6f739a0ee7fd8e5127e79b595f3fe8c85 /build-os | |
| parent | 5392080129b1093f36533e47c155f618c283ea57 (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-x | build-os | 50 |
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 |
