After bootstrap, drop to a shell if needed, then shut down cleanly

This commit is contained in:
Gábor Stefanik 2024-01-01 23:36:13 +01:00
parent 133c05426c
commit 2a095a3301
3 changed files with 26 additions and 0 deletions

24
steps/improve/after.sh Normal file
View File

@ -0,0 +1,24 @@
#!/bin/sh
#
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# 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

View File

@ -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

View File

@ -182,3 +182,4 @@ build: binutils-2.41
build: gcc-13.1.0
improve: null_time ( FORCE_TIMESTAMPS == True )
improve: update_checksums ( UPDATE_CHECKSUMS == True )
improve: after