Compare commits
No commits in common. "600bd0a7f58da65dfdcfb467ee7f6364d0c179d3" and "c0d40900dcb9ab1eebb04c45c282dba5f03b21fc" have entirely different histories.
600bd0a7f5
...
c0d40900dc
|
@ -460,6 +460,7 @@ The installer will now create a system image and reboot the computer.
|
||||||
press_any_key
|
press_any_key
|
||||||
|
|
||||||
echo "Creating system image..."
|
echo "Creating system image..."
|
||||||
run_in_target /opt/void-usb/system-image --yes
|
#TODO: make this work without user interaction
|
||||||
|
run_in_target /opt/void-usb/system-image
|
||||||
reboot
|
reboot
|
||||||
#
|
#
|
||||||
|
|
|
@ -29,8 +29,8 @@ when shutting down, let Xorg exit first, then run `loginctl {poweroff,reboot}`
|
||||||
add polkit to common packages
|
add polkit to common packages
|
||||||
https://github.com/aarnt/octoxbps
|
https://github.com/aarnt/octoxbps
|
||||||
system-image
|
system-image
|
||||||
check that all output goes to current TTY
|
make all output appear on current TTY
|
||||||
|
sync before and after creating the image
|
||||||
package selections:
|
package selections:
|
||||||
desktop
|
desktop
|
||||||
icewm-full
|
icewm-full
|
||||||
|
|
|
@ -7,60 +7,28 @@ else
|
||||||
TTY_OR_CONSOLE="/dev/console"
|
TTY_OR_CONSOLE="/dev/console"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function echo_tty {
|
|
||||||
if [ "$1" = "-n" ]; then
|
|
||||||
shift
|
|
||||||
echo -n "$@" > $TTY_OR_CONSOLE
|
|
||||||
else
|
|
||||||
echo "$@" > $TTY_OR_CONSOLE
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function yesno {
|
function yesno {
|
||||||
unset DISCARD_ME
|
unset DISCARD_ME
|
||||||
while [ -z "$DISCARD_ME" ]; do
|
while [ -z "$DISCARD_ME" ]; do
|
||||||
read -p "[y/n] " -n1 DISCARD_ME < $TTY_OR_CONSOLE > $TTY_OR_CONSOLE
|
read -p "[y/n] " -n1 DISCARD_ME < $TTY_OR_CONSOLE
|
||||||
case "$DISCARD_ME" in
|
case "$DISCARD_ME" in
|
||||||
y)
|
y)
|
||||||
echo_tty
|
echo ""
|
||||||
return 0
|
return 0
|
||||||
;;
|
;;
|
||||||
n)
|
n)
|
||||||
echo_tty
|
echo ""
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo_tty " Please enter y for yes or n for no."
|
echo " Please enter y for yes or n for no."
|
||||||
unset DISCARD_ME
|
unset DISCARD_ME
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
#TODO: refuse to run if system is running
|
|
||||||
|
|
||||||
if [ "$1" = "--yes" ]; then
|
|
||||||
DONT_ASK="true"
|
|
||||||
else
|
|
||||||
DONT_ASK="false"
|
|
||||||
|
|
||||||
echo_tty "Create a new system image?"
|
|
||||||
echo_tty
|
|
||||||
echo_tty "This will replace the existing system image with a snapshot of the currently"
|
|
||||||
echo_tty "running system. Choosing no here will discard any newly installed programs,"
|
|
||||||
echo_tty "updates, system configuration changes, etc."
|
|
||||||
echo_tty
|
|
||||||
echo_tty "This should not affect your files in /home as they are stored to disk directly."
|
|
||||||
echo_tty "Check /TODO/README.txt for more information."
|
|
||||||
echo_tty
|
|
||||||
echo_tty "Creating a new system image will take some time."
|
|
||||||
echo_tty
|
|
||||||
fi
|
|
||||||
|
|
||||||
#TODO: colors (bright white / light gray for readability)
|
|
||||||
|
|
||||||
if $DONT_ASK || yesno; then
|
|
||||||
echo_tty -n "Generating exclusion list... "
|
|
||||||
# cutting off the leading slash allows us to just ignore empty lines below
|
# cutting off the leading slash allows us to just ignore empty lines below
|
||||||
readarray -t MOUNT_LIST <<< "$(findmnt --output TARGET --noheadings --raw | sed -e 's|^/||' | sort)"
|
readarray -t MOUNT_LIST <<< "$(findmnt --output TARGET --noheadings --raw | sed -e 's|^/||' | sort)"
|
||||||
# always ignore /tmp and the package cache
|
# always ignore /tmp and the package cache
|
||||||
|
@ -89,18 +57,32 @@ if $DONT_ASK || yesno; then
|
||||||
FILE_PERMS="$(stat -c '%a %u %g' "${EXCLUDE_LIST[$I]}")"
|
FILE_PERMS="$(stat -c '%a %u %g' "${EXCLUDE_LIST[$I]}")"
|
||||||
echo "\"/${EXCLUDE_LIST[$I]}\" d $FILE_PERMS" >> /run/void-usb/system-image-pseudo
|
echo "\"/${EXCLUDE_LIST[$I]}\" d $FILE_PERMS" >> /run/void-usb/system-image-pseudo
|
||||||
done
|
done
|
||||||
echo_tty "done"
|
|
||||||
|
|
||||||
echo_tty "Building image..."
|
#TODO: refuse to run if system is running
|
||||||
mksquashfs / /run/void-usb/container/new_squashfs.img -b 1M -comp xz -progress -noappend -pf /run/void-usb/system-image-pseudo -ef /run/void-usb/system-image-excludes > $TTY_OR_CONSOLE
|
|
||||||
|
|
||||||
echo_tty -n "Moving new image in place... "
|
#TODO: add a way to force a new system image up without asking (for example a file in /run/void-usb)
|
||||||
|
|
||||||
|
#TODO: colors (bright white / light gray for readability)
|
||||||
|
echo "Create a new system image?
|
||||||
|
|
||||||
|
This will replace the existing system image with a snapshot of the currently
|
||||||
|
running system. Choosing no here will discard any newly installed programs,
|
||||||
|
updates, system configuration changes, etc.
|
||||||
|
|
||||||
|
This should not affect your files in /home as they are stored to disk directly.
|
||||||
|
Check /TODO/README.txt for more information.
|
||||||
|
|
||||||
|
Creating a new system image will take some time.
|
||||||
|
"
|
||||||
|
|
||||||
|
if yesno; then
|
||||||
|
echo "Building image..."
|
||||||
|
mksquashfs / /run/void-usb/container/new_squashfs.img -b 1M -comp xz -progress -noappend -pf /run/void-usb/system-image-pseudo -ef /run/void-usb/system-image-excludes
|
||||||
|
#TODO: check if enough disk space
|
||||||
|
# yes -> create new image next to old image
|
||||||
|
# no -> create new image in RAM
|
||||||
|
#TODO: figure out when appending to existing squashfs is a good idea
|
||||||
mv /run/void-usb/container/new_squashfs.img /run/void-usb/container/squashfs.img
|
mv /run/void-usb/container/new_squashfs.img /run/void-usb/container/squashfs.img
|
||||||
echo_tty "done"
|
|
||||||
else
|
else
|
||||||
echo_tty "Discarding system changes."
|
echo "Discarding system changes."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo_tty -n "Syncing... "
|
|
||||||
sync
|
|
||||||
echo_tty "done"
|
|
||||||
|
|
Loading…
Reference in New Issue