Skip to content

Instantly share code, notes, and snippets.

@bzub
Created November 30, 2018 18:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bzub/9323bd58894609a10058229d1217dc60 to your computer and use it in GitHub Desktop.
Save bzub/9323bd58894609a10058229d1217dc60 to your computer and use it in GitHub Desktop.
IWD/DBUS OCI container build script using pacstrap (Arch Linux)
#!/usr/bin/env sh
set -e
set -x
# Boilerplate setup
alias buildah="sudo buildah"
container="$(buildah from scratch)"
alias run="buildah run ${container}"
alias copy="buildah copy ${container}"
alias add="buildah add ${container}"
config() {
buildah config "$@" "${container}"
}
# Only build with a clean environment
if [ -d rootfs ]; then
echo "ERROR: rootfs directory exists. Delete before building."
exit 1
fi
# Initialize Archlinux rootfs
mkdir rootfs
# Install software
sudo pacstrap -c rootfs -d -d --needed libsystemd expat glibc dbus iwd \
xz lz4 libgcrypt libgpg-error filesystem
echo 'dbus:x:81:81:System Message Bus:/:/sbin/nologin' | \
sudo tee -a rootfs/etc/passwd
sudo mkdir -p rootfs/run/dbus
sudo mkdir -p rootfs/var/lib/iwd
sudo mkdir -p rootfs/usr/local/bin
# Build run.go and populate container
go build run.go
sudo tar -cvf rootfs.tar -C rootfs .
add rootfs.tar
copy run /usr/local/bin
# Configure image
config --author="bzub"
config --os="linux"
config --volume="/run/dbus"
config --volume="/var/lib/iwd"
config --workingdir="/"
config --entrypoint='["/usr/local/bin/run"]'
config --cmd=
# Create image
buildah commit "${container}" agamigo.io/oci/iwd:latest
# Cleanup
sudo rm -rf rootfs
rm rootfs.tar
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment