mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 18:31:52 +00:00
* wip * wip * wip * wip * wip * wip * remove debian dir * lazy env and git hash * remove env and git hash on clean * don't leave project dir * use docker for native builds * start9 rust * correctly mount registry * remove systemd config * switch to /usr/bin * disable sound for now * wip * change disk list * multi-arch images * multi-arch system images * default aarch64 * edition 2021 * dynamic wifi interface name * use wifi interface from config * bugfixes * add beep based sound * wip * wip * wip * separate out raspberry pi specific files * fixes * use new initramfs always * switch journald conf to sed script * fixes * fix permissions * talking about kernel modules not scripts * fix * fix * switch to MBR * install to /usr/lib * fixes * fixes * fixes * fixes * add media config to cfg path * fixes * fixes * fixes * raspi image fixes * fix test * fix workflow * sync boot partition * gahhhhh
96 lines
2.2 KiB
Bash
Executable File
96 lines
2.2 KiB
Bash
Executable File
# Local filesystem mounting -*- shell-script -*-
|
|
|
|
#
|
|
# This script overrides local_mount_root() in /scripts/local
|
|
# and mounts root as a read-only filesystem with a temporary (rw)
|
|
# overlay filesystem.
|
|
#
|
|
|
|
. /scripts/local
|
|
|
|
local_mount_root()
|
|
{
|
|
echo 'using embassy initramfs module'
|
|
|
|
local_top
|
|
local_device_setup "${ROOT}" "root file system"
|
|
ROOT="${DEV}"
|
|
|
|
# Get the root filesystem type if not set
|
|
if [ -z "${ROOTFSTYPE}" ]; then
|
|
FSTYPE=$(get_fstype "${ROOT}")
|
|
else
|
|
FSTYPE=${ROOTFSTYPE}
|
|
fi
|
|
|
|
local_premount
|
|
|
|
# CHANGES TO THE ORIGINAL FUNCTION BEGIN HERE
|
|
# N.B. this code still lacks error checking
|
|
|
|
modprobe ${FSTYPE}
|
|
checkfs ${ROOT} root "${FSTYPE}"
|
|
|
|
if [ "${FSTYPE}" != "unknown" ]; then
|
|
mount -t ${FSTYPE} ${ROOTFLAGS} ${ROOT} ${rootmnt}
|
|
else
|
|
mount ${ROOTFLAGS} ${ROOT} ${rootmnt}
|
|
fi
|
|
|
|
echo 'mounting embassyfs'
|
|
|
|
mkdir /embassyfs
|
|
|
|
mount --move ${rootmnt} /embassyfs
|
|
|
|
if ! [ -d /embassyfs/current ] && [ -d /embassyfs/prev ]; then
|
|
mv /embassyfs/prev /embassyfs/current
|
|
fi
|
|
|
|
if ! [ -d /embassyfs/current ]; then
|
|
mkdir /embassyfs/current
|
|
for FILE in $(ls /embassyfs); do
|
|
if [ "$FILE" != current ]; then
|
|
mv /embassyfs/$FILE /embassyfs/current/
|
|
fi
|
|
done
|
|
fi
|
|
|
|
mkdir -p /embassyfs/config
|
|
|
|
if [ -f /embassyfs/config/upgrade ] && [ -d /embassyfs/next ]; then
|
|
mv /embassyfs/current /embassyfs/prev
|
|
mv /embassyfs/next /embassyfs/current
|
|
rm /embassyfs/config/upgrade
|
|
fi
|
|
|
|
if ! [ -d /embassyfs/next ]; then
|
|
if [ -d /embassyfs/prev ]; then
|
|
mv /embassyfs/prev /embassyfs/next
|
|
else
|
|
mkdir /embassyfs/next
|
|
fi
|
|
fi
|
|
|
|
mkdir /lower /upper
|
|
|
|
mount -r --bind /embassyfs/current /lower
|
|
|
|
modprobe overlay || insmod "/lower/lib/modules/$(uname -r)/kernel/fs/overlayfs/overlay.ko"
|
|
|
|
# Mount a tmpfs for the overlay in /upper
|
|
mount -t tmpfs tmpfs /upper
|
|
mkdir /upper/data /upper/work
|
|
|
|
# Mount the final overlay-root in $rootmnt
|
|
mount -t overlay \
|
|
-olowerdir=/lower,upperdir=/upper/data,workdir=/upper/work \
|
|
overlay ${rootmnt}
|
|
|
|
mkdir -p ${rootmnt}/media/embassy/config
|
|
mount --bind /embassyfs/config ${rootmnt}/media/embassy/config
|
|
mkdir -p ${rootmnt}/media/embassy/next
|
|
mount --bind /embassyfs/next ${rootmnt}/media/embassy/next
|
|
mkdir -p ${rootmnt}/media/embassy/embassyfs
|
|
mount -r --bind /embassyfs ${rootmnt}/media/embassy/embassyfs
|
|
} |