Genstart maskinen, hvis Chromium ikke starter korrekt


Source: Download script

Last Updated: 11. September 2025 by Agnete Moos (agms@sonderborg.dk)

Parameters:

Navn Type Standardværdi Påkrævet
Click to see the source code
#! /usr/bin/env bash

set -x

REBOOT_SCRIPT="/usr/share/os2borgerpc/bin/chromium_error_reboot.sh"
RESET_COUNTER_SCRIPT="/usr/share/os2borgerpc/bin/chromium_reboot_counter_reset.sh"
RESET_COUNTER_SERVICE="/etc/systemd/system/chromium_reboot_counter_reset.service"
PROFILE="/home/chrome/.profile"
COUNTER_FILE="/home/chrome/reboot_counter.txt"
MAXIMUM_CONSECUTIVE_REBOOTS=5
AUTOLOGIN_SCRIPT="/usr/share/os2borgerpc/bin/autologin.sh"

ACTIVATE=$1

if ! get_os2borgerpc_config os2_product | grep --quiet kiosk; then
  echo "Dette script er ikke designet til at blive anvendt på en regulær OS2borgerPC-maskine."
  exit 1
fi

mkdir --parents "$(dirname $REBOOT_SCRIPT)"

# Ensure idempotency
sed --in-place --expression "/startx/d" --expression "/for i in/d" --expression "/sleep/d" \
    --expression "/done/d" --expression "/exit/d" --expression "/$(basename $REBOOT_SCRIPT)/d" $PROFILE

if [ "$ACTIVATE" = "False" ]; then
  systemctl disable "$(basename $RESET_COUNTER_SERVICE)"
  rm --force $REBOOT_SCRIPT $RESET_COUNTER_SCRIPT $RESET_COUNTER_SERVICE $COUNTER_FILE
  echo "startx" >> $PROFILE
  if [ -f "$AUTOLOGIN_SCRIPT" ]; then
    echo "exit" >> $PROFILE
    sed --in-place --expression "s/Reboot the computer/Regular login prompt/" \
        --expression "s@$REBOOT_SCRIPT@/bin/login@" $AUTOLOGIN_SCRIPT
  fi
  exit 0
fi

echo "0" > $COUNTER_FILE
chmod 666 $COUNTER_FILE

if [ -f "$AUTOLOGIN_SCRIPT" ]; then
  cat << EOF >> $PROFILE
startx
exit
EOF
sed --in-place --expression "\@else@{ n; n; s@/bin/login@$REBOOT_SCRIPT@ }" \
    --expression "s/Regular login prompt/Reboot the computer/" $AUTOLOGIN_SCRIPT
else
  cat <> $PROFILE
for i in 1 2 3; do
  startx
  sleep 10
done
$REBOOT_SCRIPT
EOF
fi

cat < $REBOOT_SCRIPT
#! /usr/bin/env bash

COUNTER=\$(cat $COUNTER_FILE)
COUNTER=\$((COUNTER+1))
echo \$COUNTER > $COUNTER_FILE
if [ \$COUNTER -le $MAXIMUM_CONSECUTIVE_REBOOTS ]; then
  reboot
fi
EOF

chmod 755 $REBOOT_SCRIPT

cat < $RESET_COUNTER_SCRIPT
#! /usr/bin/env bash

sleep 120

if [ -n "\$(pgrep --list-full chrome)" ]; then
  echo "0" > $COUNTER_FILE
fi
EOF

chmod 700 $RESET_COUNTER_SCRIPT

cat < $RESET_COUNTER_SERVICE
[Unit]
Description=OS2borgerPC chromium error reboot service

[Service]
Type=simple
ExecStart=$RESET_COUNTER_SCRIPT

[Install]
WantedBy=multi-user.target
EOF

systemctl enable "$(basename $RESET_COUNTER_SERVICE)"

Beskrivelse

Dette script ændrer maskinens indstillinger, således at den forsøger at starte Chromium-browseren op til tre gange, hvis browseren ikke starter korrekt i første omgang. Hvis browseren stadig ikke er startet korrekt efter tredje forsøg, genstartes maskinen.

For at undgå at maskinen kommer til at sidde fast i et genstartsloop, vil scriptet maksimalt genstarte maskinen 5 gange i træk.

BEMÆRK: Dette script skal køres efter Chromium - Installér og Chromium - Autostart for at virke.

Den nye indstilling tager først effekt efter en genstart.

Parametre

Aktiver? - Sæt hak i tjekboksen for at aktivere indstillingen. Lad tjekboksen stå tom for at fjerne indstillingen og gå tilbage til det normale enkelte forsøg på at starte Chromium.