Integration harness: say when the install is over and the first boot is awaited

The wait loop printed "installing (Ns)" until SSH answered on the
installed system. A nightly run sat on that line for twelve minutes
while the install had finished after two: the first boot was what hung.

The firmware names what it starts on the serial port, so the loop now
notices the installed disk's Limine starting, logs how long the install
took, and counts the first boot from there.
This commit is contained in:
Emir Beganovic committed 2026-10-09 19:56:45 +02:00
1 parent 98b20a6829
commit 32f917fdff
1 file changed
+16 -2
+16 -2
View File
@@ -535,7 +535,7 @@ install_phase() {
-device usb-storage,drive=cidata -device usb-storage,drive=cidata
log "Waiting for the unattended install to finish (timeout ${INSTALL_TIMEOUT}s)" log "Waiting for the unattended install to finish (timeout ${INSTALL_TIMEOUT}s)"
local waited=0 text progress_name local waited=0 text progress_name first_boot_at=""
while true; do while true; do
# An unattended install reboots on its own; SSH answering means the # An unattended install reboots on its own; SSH answering means the
# installed system is up (cidata's authorized_keys enables sshd). # installed system is up (cidata's authorized_keys enables sshd).
@@ -576,7 +576,21 @@ install_phase() {
printf -v progress_name 'success-install-progress-%04ds' "$waited" printf -v progress_name 'success-install-progress-%04ds' "$waited"
capture_console "$progress_name" capture_console "$progress_name"
fi fi
((waited % 30 == 0)) && echo " ... installing (${waited}s)" # The firmware names what it starts on the serial port. Once that is the
# installed disk's Limine, the install is over and what is being waited
# for is the first boot: say so, or a hung first boot reads as a slow
# install.
if [[ -z $first_boot_at ]] && grep -aq 'starting Boot.*"Limine"' "$RUN_DIR/install-serial.log" 2>/dev/null; then
first_boot_at=$waited
log "Install finished after about ${waited}s. Waiting for the installed system's first boot."
fi
if ((waited % 30 == 0)); then
if [[ -n $first_boot_at ]]; then
echo " ... first boot ($((waited - first_boot_at))s, install took about ${first_boot_at}s)"
else
echo " ... installing (${waited}s)"
fi
fi
sleep 10 sleep 10
((waited += 10)) ((waited += 10))