diff --git a/steps/improve/after.sh b/steps/improve/after.sh new file mode 100644 index 0000000..155a742 --- /dev/null +++ b/steps/improve/after.sh @@ -0,0 +1,24 @@ +#!/bin/sh +# +# SPDX-FileCopyrightText: 2024 Gábor Stefanik +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# After bootstrap, drop to a shell if needed, then shut down cleanly. + +. /steps/bootstrap.cfg +. /steps/env + +if [ "${INTERACTIVE}" = True ]; then + env - PATH=${PREFIX}/bin PS1="\w # " bash -i +fi + +if [ "${CHROOT}" = False ]; then + # ignore errors due to fstab or swapfile not existing + swapoff -a &> /dev/null || true + sync + # sysrq to avoid device busy; then mount to wait for it to finish + echo u > /proc/sysrq_trigger + mount -o remount,ro / + echo o > /proc/sysrq_trigger # power off +fi diff --git a/steps/jump/move_disk.sh b/steps/jump/move_disk.sh index 426e635..1825a0e 100755 --- a/steps/jump/move_disk.sh +++ b/steps/jump/move_disk.sh @@ -27,5 +27,6 @@ mkdir -p /rootonly # This doesn't recursively mount - that's why we're able to copy everything over mount --bind / /rootonly cp -ar /rootonly/* /newroot/ +sed -e 's/newroot//' /rootonly/etc/mtab | grep -v 'rootonly' > /newroot/etc/mtab umount /rootonly switch_root /newroot /init diff --git a/steps/manifest b/steps/manifest index 653d8da..7207b7c 100644 --- a/steps/manifest +++ b/steps/manifest @@ -183,3 +183,4 @@ build: binutils-2.41 build: gcc-13.1.0 improve: null_time ( FORCE_TIMESTAMPS == True ) improve: update_checksums ( UPDATE_CHECKSUMS == True ) +improve: after