mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
* import marketplac preview for sideload * fix: improve state service (#2977) * fix: fix sideload DI * fix: update Angular * fix: cleanup * fix: fix version selection * Bump node version to fix build for Angular * misc fixes - update node to v22 - fix chroot-and-upgrade access to prune-images - don't self-migrate legacy packages - #2985 - move dataVersion to volume folder - remove "instructions.md" from s9pk - add "docsUrl" to manifest * version bump * include flavor when clicking view listing from updates tab * closes #2980 * fix: fix select button * bring back ssh keys * fix: drop 'portal' from all routes * fix: implement longtap action to select table rows * fix description for ssh page * replace instructions with docsLink and refactor marketplace preview * delete unused translations * fix patchdb diffing algorithm * continue refactor of marketplace lib show components * Booting StartOS instead of Setting up your server on init * misc fixes - closes #2990 - closes #2987 * fix build * docsUrl and clickable service headers * don't cleanup after update until new service install succeeds * update types * misc fixes * beta.35 * sdkversion, githash for sideload, correct logs for init, startos pubkey display * bring back reboot button on install * misc fixes * beta.36 * better handling of setup and init for websocket errors * reopen init and setup logs even on graceful closure * better logging, misc fixes * fix build * dont let package stats hang * dont show docsurl in marketplace if no docsurl * re-add needs-config * show error if init fails, shorten hover state on header icons * fix operator precedemce --------- Co-authored-by: Matt Hill <mattnine@protonmail.com> Co-authored-by: Alex Inkin <alexander@inkin.ru> Co-authored-by: Mariusz Kogen <k0gen@pm.me>
107 lines
2.9 KiB
Bash
Executable File
107 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SOURCE_DIR="$(dirname $(realpath "${BASH_SOURCE[0]}"))"
|
|
|
|
if [ "$UID" -ne 0 ]; then
|
|
>&2 echo 'Must be run as root'
|
|
exit 1
|
|
fi
|
|
|
|
POSITIONAL_ARGS=()
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--no-sync)
|
|
NO_SYNC=1
|
|
shift
|
|
;;
|
|
--create)
|
|
ONLY_CREATE=1
|
|
shift
|
|
;;
|
|
-*|--*)
|
|
echo "Unknown option $1"
|
|
exit 1
|
|
;;
|
|
*)
|
|
POSITIONAL_ARGS+=("$1") # save positional arg
|
|
shift # past argument
|
|
;;
|
|
esac
|
|
done
|
|
|
|
set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters
|
|
|
|
if [ -z "$NO_SYNC" ]; then
|
|
echo 'Syncing...'
|
|
umount -R /media/startos/next 2> /dev/null
|
|
umount -R /media/startos/upper 2> /dev/null
|
|
rm -rf /media/startos/upper /media/startos/next
|
|
mkdir /media/startos/upper
|
|
mount -t tmpfs tmpfs /media/startos/upper
|
|
mkdir -p /media/startos/upper/data /media/startos/upper/work /media/startos/next
|
|
mount -t overlay \
|
|
-olowerdir=/media/startos/current,upperdir=/media/startos/upper/data,workdir=/media/startos/upper/work \
|
|
overlay /media/startos/next
|
|
mkdir -p /media/startos/next/media/startos/root
|
|
mount --bind /media/startos/root /media/startos/next/media/startos/root
|
|
fi
|
|
|
|
if [ -n "$ONLY_CREATE" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p /media/startos/next/run
|
|
mkdir -p /media/startos/next/dev
|
|
mkdir -p /media/startos/next/sys
|
|
mkdir -p /media/startos/next/proc
|
|
mkdir -p /media/startos/next/boot
|
|
mount --bind /run /media/startos/next/run
|
|
mount --bind /tmp /media/startos/next/tmp
|
|
mount --bind /dev /media/startos/next/dev
|
|
mount --bind /sys /media/startos/next/sys
|
|
mount --bind /proc /media/startos/next/proc
|
|
mount --bind /boot /media/startos/next/boot
|
|
|
|
if [ -z "$*" ]; then
|
|
chroot /media/startos/next
|
|
CHROOT_RES=$?
|
|
else
|
|
chroot /media/startos/next "$SHELL" -c "$*"
|
|
CHROOT_RES=$?
|
|
fi
|
|
|
|
umount /media/startos/next/run
|
|
umount /media/startos/next/tmp
|
|
umount /media/startos/next/dev
|
|
umount /media/startos/next/sys
|
|
umount /media/startos/next/proc
|
|
umount /media/startos/next/boot
|
|
umount /media/startos/next/media/startos/root
|
|
|
|
if [ "$CHROOT_RES" -eq 0 ]; then
|
|
|
|
if [ -h /media/startos/config/current.rootfs ] && [ -e /media/startos/config/current.rootfs ]; then
|
|
${SOURCE_DIR}/prune-images $(du -s --bytes /media/startos/next | awk '{print $1}')
|
|
fi
|
|
|
|
echo 'Upgrading...'
|
|
|
|
if ! time mksquashfs /media/startos/next /media/startos/images/next.squashfs -b 4096 -comp gzip; then
|
|
umount -R /media/startos/next
|
|
umount -R /media/startos/upper
|
|
rm -rf /media/startos/upper /media/startos/next
|
|
exit 1
|
|
fi
|
|
hash=$(b3sum /media/startos/images/next.squashfs | head -c 32)
|
|
mv /media/startos/images/next.squashfs /media/startos/images/${hash}.rootfs
|
|
ln -rsf /media/startos/images/${hash}.rootfs /media/startos/config/current.rootfs
|
|
|
|
sync
|
|
|
|
reboot
|
|
fi
|
|
|
|
umount -R /media/startos/next
|
|
umount -R /media/startos/upper
|
|
rm -rf /media/startos/upper /media/startos/next |