busybox: init: mount squashfs early

to have a full set of binaries in the init process as early as possible
it now mounts the squashfs direct after mounting /flash.
there is also a hook /flash/post-sysroot.sh for custom scripting.
i will use this e.g. for lvm2 and cryptsetup in the init process,
because they are very big and i dont like them in initramfs.
This commit is contained in:
sky42 2019-09-13 19:12:07 +02:00
parent 28ecf8f4ac
commit f44f964127

View File

@ -15,6 +15,9 @@
/usr/bin/busybox mkdir -p /sysroot /usr/bin/busybox mkdir -p /sysroot
/usr/bin/busybox mkdir -p /storage /usr/bin/busybox mkdir -p /storage
# temp mountpoint for updates
/usr/bin/busybox mkdir -p /update
# mount all needed special filesystems # mount all needed special filesystems
/usr/bin/busybox mount -t devtmpfs devtmpfs /dev /usr/bin/busybox mount -t devtmpfs devtmpfs /dev
/usr/bin/busybox mount -t proc proc /proc /usr/bin/busybox mount -t proc proc /proc
@ -243,16 +246,29 @@ mount_part() {
$MOUNT_CMD "$MOUNT_TARGET" "$2" "$3" "$4" $MOUNT_CMD "$MOUNT_TARGET" "$2" "$3" "$4"
} }
mount_sysroot() {
if [ "$SYSTEM_TORAM" = "yes" ]; then
cp /flash/$IMAGE_SYSTEM /dev/$IMAGE_SYSTEM
mount_part "/dev/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
else
mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
fi
if [ -f /flash/post-sysroot.sh ]; then
. /flash/post-sysroot.sh
fi
}
# mount the specified SYSTEM file and output arch from /etc/os-release # mount the specified SYSTEM file and output arch from /etc/os-release
get_project_arch() { get_project_arch() {
mount_part "$1" "/sysroot" "ro,loop" || return mount_part "$1" "/update" "ro,loop" || return
if [ -f /sysroot/etc/os-release ]; then if [ -f /update/etc/os-release ]; then
. /sysroot/etc/os-release . /update/etc/os-release
echo "${LIBREELEC_ARCH:-${OPENELEC_ARCH}}" echo "${LIBREELEC_ARCH:-${OPENELEC_ARCH}}"
fi fi
umount /sysroot umount /update
} }
# If the project/arch of current matches the upgrade, then it is considered compatible. # If the project/arch of current matches the upgrade, then it is considered compatible.
@ -265,13 +281,13 @@ is_compatible() {
if [ "${2}" = "${3}" ]; then if [ "${2}" = "${3}" ]; then
result=0 result=0
else else
mount_part "$1" "/sysroot" "ro,loop" mount_part "$1" "/update" "ro,loop"
if [ -f /sysroot/usr/share/bootloader/canupdate.sh ]; then if [ -f /update/usr/share/bootloader/canupdate.sh ]; then
sh /sysroot/usr/share/bootloader/canupdate.sh "${2}" "${3}" && result=0 sh /update/usr/share/bootloader/canupdate.sh "${2}" "${3}" && result=0
fi fi
umount /sysroot umount /update
fi fi
return ${result} return ${result}
@ -341,9 +357,9 @@ update_bootloader() {
local result local result
export BOOT_ROOT="/flash" export BOOT_ROOT="/flash"
export SYSTEM_ROOT="/sysroot" export SYSTEM_ROOT="/update"
mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop" mount_part "/flash/$IMAGE_SYSTEM" "$SYSTEM_ROOT" "ro,loop"
if [ -f $SYSTEM_ROOT/usr/share/bootloader/update.sh ]; then if [ -f $SYSTEM_ROOT/usr/share/bootloader/update.sh ]; then
StartProgress spinner "Updating Boot Files... " StartProgress spinner "Updating Boot Files... "
@ -353,7 +369,7 @@ update_bootloader() {
[ -n "${result}" ] && echo "${result}" [ -n "${result}" ] && echo "${result}"
fi fi
umount /sysroot umount $SYSTEM_ROOT
} }
load_modules() { load_modules() {
@ -913,6 +929,7 @@ check_update() {
else else
update_file "Kernel" "$UPDATE_KERNEL" "/flash/$IMAGE_KERNEL" update_file "Kernel" "$UPDATE_KERNEL" "/flash/$IMAGE_KERNEL"
fi fi
umount /sysroot
update_file "System" "$UPDATE_SYSTEM" "/flash/$IMAGE_SYSTEM" update_file "System" "$UPDATE_SYSTEM" "/flash/$IMAGE_SYSTEM"
update_bootloader update_bootloader
do_cleanup do_cleanup
@ -922,13 +939,6 @@ check_update() {
prepare_sysroot() { prepare_sysroot() {
progress "Preparing system" progress "Preparing system"
if [ "$SYSTEM_TORAM" = "yes" ]; then
cp /flash/$IMAGE_SYSTEM /dev/$IMAGE_SYSTEM
mount_part "/dev/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
else
mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop"
fi
mount --move /flash /sysroot/flash mount --move /flash /sysroot/flash
mount --move /storage /sysroot/storage mount --move /storage /sysroot/storage
@ -1083,6 +1093,7 @@ for BOOT_STEP in \
set_consolefont \ set_consolefont \
check_disks \ check_disks \
mount_flash \ mount_flash \
mount_sysroot \
cleanup_flash \ cleanup_flash \
update_bootmenu \ update_bootmenu \
load_splash \ load_splash \