Trin 4 - Kiosk Opgradering til Ubuntu 22.04
Dette script er fjerde og sidste skridt i opgraderingen til Ubuntu 22.04 på OS2borgerPC Kiosk.
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
#================================================================
# HEADER
#================================================================
#% SYNOPSIS
#+ kiosk_lts_upgrade_in_place_step_4.sh
#%
#% DESCRIPTION
#% Step four of the upgrade from 20.04 to 22.04.
#% Designed for Kiosk machines
#%
#================================================================
#- IMPLEMENTATION
#- version kiosk_lts_upgrade_in_place_step_4.sh 0.0.1
#- author Andreas Poulsen
#- copyright Copyright 2023, Magenta Aps
#- license BSD/MIT
#- email info@magenta.dk
#-
#================================================================
# HISTORY
# 2023/02/01 : ap : Script creation
#
#================================================================
# END_OF_HEADER
#================================================================
set -ex
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
PREVIOUS_STEP_DONE="/etc/os2borgerpc/third_upgrade_step_done"
if [ ! -f "$PREVIOUS_STEP_DONE" ]; then
echo "22.04 opgradering - Kiosk Opgradering til Ubuntu 22.04 trin 3 er ikke blevet gennemført."
exit 1
fi
# Make double sure that the crontab has been emptied
TMP_ROOTCRON=/etc/os2borgerpc/tmp_rootcronfile
if [ -f "$TMP_ROOTCRON" ]; then
crontab -r || true
fi
# Remove the old client and the remainder of the old version of python
NEW_CLIENT="/usr/local/lib/python3.10/dist-packages/os2borgerpc/client/jobmanager.py"
if [ -f $NEW_CLIENT ]; then
rm -rf /usr/local/lib/python3.8/
apt-get --assume-yes remove --purge python3.8-minimal || true
fi
# Remove any dependencies of the old version of python that are no longer used
apt-get --assume-yes autoremove
# Set danish timezone and language
timedatectl set-timezone Europe/Copenhagen
dpkg-reconfigure -f noninteractive tzdata
sed -i 's/# \(da_DK.UTF-8 UTF-8\)/\1/' /etc/locale.gen
dpkg-reconfigure --frontend=noninteractive locales
update-locale LANG=da_DK.UTF-8
# Update the time accordingly
export DEBIAN_FRONTEND=noninteractive
apt-get install -y ntpdate
ntpdate pool.ntp.org
# Setup Chromium user
USER="chrome"
if ! id $USER &>/dev/null; then
useradd $USER -m -p 12345 -s /bin/bash -U
fi
# Setup autologin of default user
mkdir -p /etc/systemd/system/getty@tty1.service.d
# Note: The empty ExecStart is not insignificant!
# By default the value is appended, so the empty line changes it to an override
cat << EOF > /etc/systemd/system/getty@tty1.service.d/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin $USER %I $TERM
Type=idle
EOF
# Change rotate_screen.sh and .xinitrc to the new versions
ROTATE_SCREEN="/usr/local/bin/rotate_screen.sh"
XINITRC="/home/chrome/.xinitrc"
if [ -f $ROTATE_SCREEN ]; then
TIME=$(grep "sleep" $ROTATE_SCREEN | cut --delimiter ' ' --fields 2)
ORIENTATION=$(grep -- "--rotate" $ROTATE_SCREEN | cut --delimiter ' ' --fields 11)
sed --in-place "s/local\/bin\/rotate_screen.sh/share\/os2borgerpc\/bin\/rotate_screen.sh $TIME $ORIENTATION/" $XINITRC
rm $ROTATE_SCREEN
fi
mkdir --parents "/usr/share/os2borgerpc/bin"
cat << EOF > /usr/share/os2borgerpc/bin/rotate_screen.sh
#!/usr/bin/env sh
set -x
TIME=\$1
ORIENTATION=\$2
sleep \$TIME
export XAUTHORITY=/home/$USER/.Xauthority
# --listactivemonitors lists the primary monitor first
ALL_MONITORS=\$(xrandr --listactivemonitors | tail -n +2 | cut --delimiter ' ' --fields 6)
# Make all connected monitors display what the first monitor displays, rather than them extending the desktop
PRIMARY_MONITOR=\$(echo "\$ALL_MONITORS" | head -n 1)
OTHER_MONITORS=\$(echo "\$ALL_MONITORS" | tail -n +2)
echo "\$OTHER_MONITORS" | xargs -I {} xrandr --output {} --same-as "\$PRIMARY_MONITOR"
# Rotate screen - and if more than one monitor, rotate them all.
echo "\$ALL_MONITORS" | xargs -I {} xrandr --output {} --rotate \$ORIENTATION
EOF
chmod +x /usr/share/os2borgerpc/bin/rotate_screen.sh
# If they were using an onboard keyboard, maintain our custom settings
if [ -f /usr/share/onboard/layouts/Compact_orig.onboard ]; then
cat << EOF > /usr/share/onboard/layouts/Compact.onboard
EOF
chmod 644 /usr/share/onboard/layouts/Compact.onboard
fi
# Reset jobmanager timeout to default value
set_os2borgerpc_config job_timeout 900
os2borgerpc_push_config_keys job_timeout
# Update distribution to show ubuntu22.04
set_os2borgerpc_config distribution ubuntu22.04
os2borgerpc_push_config_keys distribution
# Fix dpkg settings
cat << EOF > /etc/apt/apt.conf.d/local
Dpkg::Options {
"--force-confdef";
"--force-confold";
};
Dpkg::Lock {Timeout "300";};
EOF
# Restore crontab and reenable potential wake plans
TMP_ROOTCRON=/etc/os2borgerpc/tmp_rootcronfile
if [ -f "$TMP_ROOTCRON" ]; then
crontab $TMP_ROOTCRON
rm -f $TMP_ROOTCRON
fi
if [ -f /etc/os2borgerpc/plan.json ]; then
systemctl enable --now os2borgerpc-set_on-off_schedule.service
fi
rm --force $PREVIOUS_STEP_DONE
Beskrivelse
Læs HELE beskrivelsen før I kører dette eller et andet opgraderingsscript. Det anbefales at I starter med at teste opgraderingen på en enkelt maskine.
Maskinen må ikke slukkes eller sættes i dvale, mens trin 2 eller 3 kører. Det første trin i opgraderingsprocessen slår eventuelle planlagte nedlukninger fra, og det sidste trin genaktiverer dem, men det er vigtigt, at maskinen ikke slukkes på knappen eller får taget strømmen, mens trin 2 eller 3 kører.
Undgå at køre andre scripts på maskinen, før hele opgraderingsprocessen er færdig.
Herunder beskrives opgraderingsprocessen for almindelig OS2borgerPC:
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 1”. Det skal stå som udført.
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 2”. Det skal stå som udført. Dette script opdaterer computeren og kan tage op til 30-40 minutter, hvis computeren ikke er blevet opdateret i længere tid. Hvis det fejler med en besked ala “Unable to acquire dpkg frontend lock…” er det fordi computeren er ved at køre automatiske opdateringer. Vent 5 minutter og prøv at køre scriptet igen. Hvis det fejler med en besked om “uopfyldte afhængigheder” kan det ofte løses ved at køre scriptet igen.
-
Genstart computeren fx via scriptet “System - Genstart computeren NU”
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 3”. Det skal stå som udført. Dette script udfører selve opgraderingen og kan tage op til en time.
-
Genstart computeren fx via scriptet “System - Genstart computeren NU”
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 4”. Dette script udfører de sidste justeringer. Det skal stå som udført.
-
Maskinen er nu opgraderet til Ubuntu 22.04
Herunder beskrives opgraderingsprocessen for OS2borgerPC Kiosk:
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 1”. Det skal stå som udført.
-
Kør scriptet “Opgradering til Ubuntu 22.04 trin 2”. Det skal stå som udført. Dette script opdaterer computeren og kan tage op til 30-40 minutter, hvis computeren ikke er blevet opdateret i længere tid. Hvis det fejler med en besked ala “Unable to acquire dpkg frontend lock…” er det fordi computeren er ved at køre automatiske opdateringer. Vent 5 minutter og prøv at køre scriptet igen. Hvis det fejler med en besked om “uopfyldte afhængigheder” kan det ofte løses ved at køre scriptet igen.
-
Genstart computeren fx via scriptet “System - Genstart computeren NU”
-
Kør scriptet “Kiosk Opgradering til Ubuntu 22.04 trin 3”. Det skal stå som udført. Dette script udfører selve opgraderingen og kan tage op til en time.
-
Kør scriptet “Kiosk Opgradering til Ubuntu 22.04 trin 4”. Dette script udfører de sidste justeringer. Det skal stå som udført.
-
Maskinen er nu opgraderet til Ubuntu 22.04