These instructions also apply to the Lubuntu and Xubuntu images available on the Ubuntu Pi Flavour Maker website, as well as any other 32-bit distro for the Raspberry Pi.
People have been reporting that Ubuntu MATE has not been booting on the Pi 3B+ but boots perfectly on older Pi models. This is because Ubuntu MATE and some other distros uses old bootloader files which are incompatible with the Pi 3B+ and 3A+. You can easily update the bootloader files to the latest available versions using rpi-update, but this downloads the very latest bootloader files which may be unstable.
You can install the latest stable bootloader directly on your desired OS on a supported Pi model (such as the Pi 2) or on another PC.
Updating bootloader files directly on a Pi running desired OS
Updating the bootloader directly on another Pi running your desired OS is very easy. Simply run:
wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20181112-1_armhf.deb
sudo dpkg -i raspberrypi-bootloader_1.20181112-1_armhf.deb
After that, you’ll need to add some WiFi firmware files so that the built-in WiFi works:
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.bin
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.clm_blob
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.txt
sudo cp *sdio* /lib/firmware/brcm/
Then shutdown the Pi, take out the microSD card, and insert it into your Pi 3B+ or 3A+, and then power it on. Your desired OS should start booting up.
Updating bootloader files on another PC
Updating the bootloader files on another PC is harder than updating them directly on the Pi. You’ll need to be running a Linux distro to be able to do this. This tutorial assumes that you are using either Ubuntu or Debian.
First of all, install QEMU User Emulation support packages so that you can chroot into Linux filesystems designed for different architectures:
sudo apt install qemu-user-static binfmt-support
Find out the block name device of your microSD card by running sudo fdisk -l
and looking for a device that describes your microSD card. For example, if you have an 8GB microSD, a 7.9GB device is likely your microSD card.
Once you’ve found out the device name of your microSD, mount it to /mnt. For example, if your microSD’s device name was /dev/mmcblk0, run:
sudo mount /dev/mmcblk0p2 /mnt
sudo mount /dev/mmcblk0p1 /mnt/boot
After that, copy over your PC’s resolv.conf file (required for internet access which you will need):
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
Now, mount proc and dev directories:
sudo mount -o bind /proc /mnt/proc
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts
Then chroot in!
sudo chroot /mnt
Update the bootloader files:
wget http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-bootloader_1.20181112-1_armhf.deb
sudo dpkg -i raspberrypi-bootloader_1.20181112-1_armhf.deb
Add WiFi firmware files:
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.bin
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.clm_blob
wget https://github.com/RPi-Distro/firmware-nonfree/raw/master/brcm/brcmfmac43455-sdio.txt
sudo cp *sdio* /lib/firmware/brcm/
If you get an operation not permitted error when trying to update the bootloader, then run the following commands outside of the chroot:
git clone https://github.com/raspberrypi/firmware.git
sudo cp -r firmware/boot/* /mnt/boot/
Once cp has finished copying the bootloader files, add the WiFi firmware by chrooting into the filesystem and following the instructions to add WiFi files.
Exit your microSD card’s root filesystem by entering ‘exit’ in the bash prompt. Then unmount dev, proc, and your microSD card:
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/boot
sudo umount /mnt
Put the microSD card into your Pi 3B+ or 3A+ and turn it on. If all’s gone well, your desired OS should load successfully.