Upgrade guide for Alpine Raspberry PI (RPi) System¶
This guide describes how to upgrade a diskless (booting from the microSD card) Alpine RPi between Alpine releases.
It expects your microSD card to be mounted to the /media/mmcblk0p1
directory, if it is not mounted there on your system, adjust the instruction to match your case.
Preparations¶
Backup all data from the microSD card (/media/mmcblk0p1
directory) so you have a fall-back.
Download the version of the tar.gz
you are upgrading to, as well as the GPG signature file, to your workstation.
Example with the files for an upgrade to Alpine v3.11.
workstation $ curl -O <URL>/alpine-rpi-3.11.6-armv7.tar.gz workstation $ curl -O <URL>/alpine-rpi-3.11.6-armv7.tar.gz.asc workstation $ gpg --verify alpine-rpi-3.11.6-armv7.tar.gz.asc
Replace <URL>
above with the path to the download server used; e.g. http://nl.alpinelinux.org/alpine/v3.11/releases/armv7/
.
Copy alpine-rpi-3.11.6-armv7.tar.gz
to your RPi (suggestion in /tmp/
).
Perform the upgrade of the running system.¶
Check that LBU_MEDIA
, in file /etc/lbu/lbu.conf
, points to the device used to store the persistent configuration. In my case its /media/mmcblk0p1
. If its not /media/mmcblk0p1
in your case, adjust the commands below to fit your case (e.g. /media/mmcblk0p1
-> /media/<your device>
).
Edit file /etc/apk/repositories
to point at the version you are upgrading to, then run the upgrade.
rpi $ sudo -i rpi # apk update rpi # apk upgrade --update-cache --available
Commit the changes to /etc
with the lbu
command.
rpi # lbu commit
Quick upgrade (Option A)¶
Only use this method if you have physical access to your RPi while running the upgrade. This method might fail
to boot (RPi stuck at black screen) and you will have to perform upgrade using Option B
instead.
Upgrade the boot media in /media/mmcblk0p1
rpi # . /etc/lbu/lbu.conf rpi # mount /media/$LBU_MEDIA -o remount,rw rpi # mkdir /media/$LBU_MEDIA/new rpi # cd /media/$LBU_MEDIA/new rpi # tar xfz <path to tar file>/alpine-rpi-3.11.6-armv7.tar.gz rpi # cd .. rpi # setup-bootable -u /media/$LBU_MEDIA/new /media/$LBU_MEDIA rpi # rm -rf /media/$LBU_MEDIA/new rpi # lbu commit rpi # cd / rpi # mount /media/$LBU_MEDIA -o remount,ro
After this the RPi can be rebooted.
Safe upgrade (Option B)¶
This option uses an microSD memory card in the microSD card reader of the RPi.
This is a more safe way of upgrading, and should be used when you are performing the upgrade remotely or if you are cross upgrading from armhf
to armv7
.
WARNING Before continuing You should make sure that the (login) shell of the RPi remote user is a shell that is present in the base Alpine installation! For example the default shell /bin/ash
.
Save /media/mmcblk0p1/<hostname>.apkovl.tar.gz
and /media/mmcblk0p1/usercfg.txt
outside of /media/mmcblk0p1/
(e.g. in /tmp
).
Perform the upgrade.
rpi # . /etc/lbu/lbu.conf rpi # mount /media/$LBU_MEDIA -o remount,rw rpi # cd /media/$LBU_MEDIA rpi # rm -rf * .alpine-release rpi # tar xfz <path to tar file>/alpine-rpi-3.11.6-armv7.tar.gz rpi # mkdir /media/$LBU_MEDIA/cache
Copy back the saved <hostname>.apkovl.tar.gz
and usercfg.txt
files to /media/mmcblk0p1/
.
rpi # cp /tmp/<hostname>.apkovl.tar.gz /media/$LBU_MEDIA/ rpi # cp /tmp/usercfg.txt /media/$LBU_MEDIA/
Prepare for reboot.
rpi # sync rpi # reboot
Now the RPi will boot with only the base packages (packages added in /etc/apk/world
will not be present) so we need to update the apk
cache and reboot
again in order to have all packages.
After reboot, login and synchronize the apk
cache and do the upgrade to restore additional packages.
rpi # apk update rpi # apk cache sync rpi # apk upgrade --update-cache --available rpi # lbu commit rpi # reboot
If you are using an RTC module please follow this guide as well: Alpine Linux on a Raspberry Pi 3 B+ with a RTC module