live-bootstrap/steps-guix/jump/linux64.sh

40 lines
1,015 B
Bash

#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-or-later
set -e
new_kernel="/boot/vmlinuz-linux64"
current_kernel="/boot/vmlinuz"
backup_kernel="/boot/vmlinuz-32bit.backup"
quiesce_filesystem_for_kexec() {
if command -v dhcpcd >/dev/null 2>&1; then
dhcpcd -x >/dev/null 2>&1 || true
fi
sync
echo s > /proc/sysrq-trigger || true
echo u > /proc/sysrq-trigger || true
mount -o remount,ro / || true
}
if [ ! -f "${new_kernel}" ]; then
echo "Missing new kernel image: ${new_kernel}" >&2
exit 1
fi
if [ -f "${current_kernel}" ]; then
cp -af "${current_kernel}" "${backup_kernel}"
fi
cp -af "${new_kernel}" "${current_kernel}"
sync
mkdir -p /etc
if [ "${BARE_METAL}" = True ]; then
kexec -l "${current_kernel}" \
--append="root=/dev/sda1 init=/init rw rootwait consoleblank=0"
else
kexec -l "${current_kernel}" --console-serial \
--append="console=ttyS0 root=/dev/sda1 init=/init rw rootwait consoleblank=0"
fi
quiesce_filesystem_for_kexec
kexec -e