This page looks best with JavaScript enabled

Raspberry Pi 2 Rainbow Screen

 ·   ·  ☕ 2 min read

I have a Raspberry Pi 2 Model B that I use for my WireHole setup. It’s pretty aged at this point and sort of fails whenever I try to update it. Oftentimes SSH just stops randomly working entirely until I update sshd, but doing a general system upgrade causes the device to fail to boot properly. I get stuck with a rainbow screen on boot and it continues to not respond to SSH. I think what happens involves the out of date hardware trying to run the modern firmware and there’s an issue somewhere in the process. That said, I have no clue what causes the SSH problem.

To fix the rainbow boot screen the last time I experienced it, I downloaded the entire boot folder located here in the Pi firmware repository and copied it to the boot partition of the Pi’s SD card (have to remove it from the device and plug it in to my computer, which is a giant pain).

That got me past the rainbow boot screen, but instead I get a systemd failed to start load kernel modules error. However it did respond to SSH again lol! From here I learned you should do:
sudo apt update
sudo apt full-upgrade
and NOT sudo apt upgrade which of course is what I did. This got my system to boot and respond to SSH but docker wouldn’t launch and systemctl was giving me failed to start create static device nodes in dev. To fix this:
sudo apt install --reinstall libraspberrypi10 libraspberrypi-{bin,dev,doc} raspberrypi-{kernel,bootloader}
sudo apt reinstall systemd
and rebooting it and it was fixed.

Next problem was WireGuard not starting with /bin/sh: symbol lookup error: /bin/sh: undefined symbol: getpwnam, version GLIBC_2.4. Fix was stopping all containers, then:
docker container prune -a -f
Starting the containers again from my compose files and everything was good. This prune command will delete your existing containers so be aware of that. After this they started correctly, though maybe a docker image prune -a -f would also be necessary in case it’s the images that are the problem.

I suppose the long term fix would be to image the entire SD card with the most up-to-date OS provided for the device, then port my WireHole config over. In the meantime I just have to do this every time I need access to the device again…currently it’s not responding to SSH, but thankfully WireHole will run for literally years without needing any assistance so it doesn’t super matter.

Share on
Support the author with

omar saleem
WRITTEN BY
omar saleem
Software/DevOps Engineer