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:

  1. Kør scriptet “Opgradering til Ubuntu 22.04 trin 1”. Det skal stå som udført.

  2. 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.

  3. Genstart computeren fx via scriptet “System - Genstart computeren NU”

  4. 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.

  5. Genstart computeren fx via scriptet “System - Genstart computeren NU”

  6. Kør scriptet “Opgradering til Ubuntu 22.04 trin 4”. Dette script udfører de sidste justeringer. Det skal stå som udført.

  7. Maskinen er nu opgraderet til Ubuntu 22.04

Herunder beskrives opgraderingsprocessen for OS2borgerPC Kiosk:

  1. Kør scriptet “Opgradering til Ubuntu 22.04 trin 1”. Det skal stå som udført.

  2. 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.

  3. Genstart computeren fx via scriptet “System - Genstart computeren NU”

  4. 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.

  5. Kør scriptet “Kiosk Opgradering til Ubuntu 22.04 trin 4”. Dette script udfører de sidste justeringer. Det skal stå som udført.

  6. Maskinen er nu opgraderet til Ubuntu 22.04