diff --git a/initramfs/ubuntu/hooks/grub-btrfs-overlay b/initramfs/ubuntu/hooks/grub-btrfs-overlay new file mode 100755 index 0000000..75d4644 --- /dev/null +++ b/initramfs/ubuntu/hooks/grub-btrfs-overlay @@ -0,0 +1,14 @@ +#!/bin/sh -e +PREREQ= +prereqs() { + echo "$PREREQ" +} +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +. /usr/share/initramfs-tools/hook-functions +manual_add_modules overlay diff --git a/initramfs/ubuntu/scripts/local-bottom/grub-btrfs-overlay b/initramfs/ubuntu/scripts/local-bottom/grub-btrfs-overlay new file mode 100755 index 0000000..1481587 --- /dev/null +++ b/initramfs/ubuntu/scripts/local-bottom/grub-btrfs-overlay @@ -0,0 +1,30 @@ +#!/bin/sh -e +PREREQ= +prereqs() { + echo "$PREREQ" +} +case $1 in + prereqs) + prereqs + exit 0 + ;; +esac + +. /scripts/functions +on_err() { + panic 'script error' +} +trap on_err ERR +if [ "$readonly" = y ] +then + log_begin_msg 'remount read-only root as read-only layer in non-persistent, writable overlay' + lower_dir="$(mktemp -d -p /)" + ram_dir="$(mktemp -d -p /)" + upper_dir="$ram_dir"/upper + work_dir="$ram_dir"/work + mount --move "$rootmnt" "$lower_dir" + mount -t tmpfs cowspace "$ram_dir" + mkdir -p "$upper_dir" "$work_dir" + mount -t overlay -o lowerdir="$lower_dir",upperdir="$upper_dir",workdir="$work_dir" rootfs "$rootmnt" + log_end_msg +fi diff --git a/initramfs/ubuntu/setup b/initramfs/ubuntu/setup new file mode 100755 index 0000000..b9c5aff --- /dev/null +++ b/initramfs/ubuntu/setup @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +SCRIPT_DIR="$(cd -P -- "$(dirname -- "$BASH_SOURCE")" && pwd)" +install {"$SCRIPT_DIR",/etc/initramfs-tools}/hooks/grub-btrfs-overlay +install {"$SCRIPT_DIR",/etc/initramfs-tools}/scripts/local-bottom/grub-btrfs-overlay