Skip to content

Commit d554125

Browse files
committed
specialize overlay script & refactor
kernel parameters normally identify root filesystem as readonly before boot process remounts them writable, so the readonly parameter does not identify readonly filesystems the script reduces scope to btrfs for simplicity as a standard linux util, findmnt is copied & used arrange commands so executables are checked before file system queries and short-circuit evaluation skips unavailable commands for robustness, trap on error & exit events replace panic with failure logging, since panic doesn't appear to break to shell
1 parent 4e4e853 commit d554125

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

initramfs/ubuntu/hooks/grub-btrfs-overlay

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ esac
1212

1313
. /usr/share/initramfs-tools/hook-functions
1414
manual_add_modules overlay
15+
copy_exec /usr/bin/findmnt /usr/bin
Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
11
#!/bin/sh -e
22
PREREQ=
33
prereqs() {
4-
echo "$PREREQ"
4+
echo "$PREREQ"
55
}
66
case $1 in
7-
prereqs)
8-
prereqs
9-
exit 0
10-
;;
7+
prereqs)
8+
prereqs
9+
exit 0
10+
;;
1111
esac
1212

1313
. /scripts/functions
1414
on_err() {
15-
panic 'script error'
15+
log_failure_msg 'error setting up overlay'
1616
}
1717
trap on_err ERR
18-
if [ "$readonly" = y ]
18+
if [ -x /usr/bin/btrfs -a -x /usr/bin/findmnt ] &&
19+
[ "$(findmnt -no FSTYPE -M "$rootmnt")" = btrfs ] &&
20+
[ "$(btrfs property get $rootmnt ro)" != ro=false ]
1921
then
20-
log_begin_msg 'remount read-only root as read-only layer in non-persistent, writable overlay'
21-
lower_dir="$(mktemp -d -p /)"
22-
ram_dir="$(mktemp -d -p /)"
22+
log_begin_msg 'remount read-only subvolume as read-only layer in non-persistent, writable overlay'
23+
trap log_end_msg EXIT
24+
lower_dir="$(mktemp -dp /)"
25+
ram_dir="$(mktemp -dp /)"
2326
upper_dir="$ram_dir"/upper
2427
work_dir="$ram_dir"/work
2528
mount --move "$rootmnt" "$lower_dir"
2629
mount -t tmpfs cowspace "$ram_dir"
2730
mkdir -p "$upper_dir" "$work_dir"
2831
mount -t overlay -o lowerdir="$lower_dir",upperdir="$upper_dir",workdir="$work_dir" rootfs "$rootmnt"
29-
log_end_msg
3032
fi

0 commit comments

Comments
 (0)