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.


This site uses Just the Docs, a documentation theme for Jekyll.