News How To Upgrade Raspberry Pi OS to Bullseye from Buster

Status
Not open for further replies.
Hi Les,
I followed your fine guide and I am now (almost) happily running Bullseye on my Pi 400. I was a little hesitant about updating the firmware, because of the warning about only upgrading it, when a Raspberry Pi engineer has told you to 😱 but heck, we're living on the edge, and it went fine.
When I say almost, it is because of two peculiarities, that I am experiencing:
  1. The Num Lock is ON, after I reboot - mildly annoying
  2. Midways during the upgrade WiFi was turned off. I know because I was following it on VNC on my Mac, and it suddenly went black, even though the Pi 400 was merrily upgrading away. And now every time I reboot, I get "wlan0: Not associated". I can just hit "Turn On Wireless LAN", and everything is fine again - but... equally mildly annoying :)
Any ideas on what could have caused these oddities?
Thx,
Jesper

PS: The Raspberry guys advocate against during upgrading from Buster, and say you should do fresh image installs - any opinions on that position?
 
I get the following error:

pi@raspberrypi:~ $ sudo apt dist-upgrade

Reading package lists... Done

Building dependency tree

Reading state information... Done

Calculating upgrade... Error!

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:



The following packages have unmet dependencies:

libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
 
libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed
I worked around that by executing sudo apt install gcc-8-base, then running dist-upgrade again.

The upgrade broke wireless networking on my Pi Zero W though (I think relating to errors preventing dhcpcd from starting). My 4B is ethernet connected and stayed connected after the upgrade, but I also saw some errors relating to networking/dhcp in the systemd logs. Ended up wiping and doing a clean Bullseye install for both.
 
  • Like
Reactions: Steve Avery
I burned a new sd card and started fresh and the process was impressive.
Fortunately I have 4GB RAM.

If you keep running into dist-upgrade problems then cut your losses and burn a new card.
I copied the old card to an SSD and mounted it so I can selectively move my stuff over to the SD card.
Once I am happy and stable then I will clone the SD card to SSD and go back to booting from SSD.

SSD screams on the USB3! Special note, I have a USB powered hub that does not backfeed power into the Pi thru the USB connection.
Both by HUB and SSD Card Holder are from Orico. Very coampatible and reliable stuff for me.
 
The following packages have unmet dependencies:

libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Try:

apt full-upgrade libgcc1-

and after reboot:

sudo pip install powerline-shell
 
Last edited:
I get the following error:

pi@raspberrypi:~ $ sudo apt dist-upgrade

Reading package lists... Done

Building dependency tree

Reading state information... Done

Calculating upgrade... Error!

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:



The following packages have unmet dependencies:

libc6-dev : Breaks: libgcc-8-dev (< 8.4.0-2~) but 8.3.0-6+rpi1 is to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
I had a 64-bit buster release and I had to run:
Code:
sudo apt install libsdl2-2.0-0 libc6-dev libibus-1.0-dev libsdl2-dev libgcc-8-dev gcc-8-base
before doing the full-upgrade. After that, all proceeded well and, after a reboot, everything is working great.
 
Dont we have to go into /etc/apt/sources.list.d/ and update the references in these files as well? Otherwise I still see APT using buster for some of the 'HIT's
 
I got stuck in apt dist-upgrade.

The progress stopped at 84% and nothing after that. I reset the Rpi4 after half hour. I am not able to SSH to it again.
 
Well, it seems the upgrade instructions only update half of the system so that you end up with a mishmash of Debian buster and Debian bullseye.
After attempting to clean that up it turns out that my network does no longer start up as expected.

At least it was not a mission critical system. Now I can install a clean version of what I wanted all along…

Please don’t get me wrong but there is a little more to be done than your simplistic list of commands suggests.

Thanks.
 
The latest Raspberry Pi OS is out and you can easily upgrade your existing installation with just a few commands.

How To Upgrade Raspberry Pi OS to Bullseye from Buster : Read more
I have been starting my own cloud with "Raspberry Pi OS Buster 64". Some time after "Bullseye" has been out i started reading about how to switch. Altough a fresh install is recommended rather than doing an upgrade, i decided to give it a try. It is working, but not to my full satisfaction.

I have PostgreSQL running as RDBMS and i'm doing regular backups at filesystem level (rsync, raspiBackup) for disaster recovery. After having done a restore, PostgreSQL does not start to a usable state. I always and each time need to do a reinstall for the package. After having done so, it starts and is usable. But i'm nevertheless not sure if it runs as expected and my cloud pending on a silky thread.

I tested the backup/restore cycle on a newly installed "Raspberry Pi OS Bullseye 64" and it does not have the issue. So to overcome this, i will probably need to do a fresh install from scratch of my cloud instance.

Be aware of attempting an upgrade.
 
I worked around that by executing sudo apt install gcc-8-base, then running dist-upgrade again.

The upgrade broke wireless networking on my Pi Zero W though (I think relating to errors preventing dhcpcd from starting). My 4B is ethernet connected and stayed connected after the upgrade, but I also saw some errors relating to networking/dhcp in the systemd logs. Ended up wiping and doing a clean Bullseye install for both.
This did not go well for me on my RPI 4 with 4GB of RAM (starting from buster 10.12). I'm glad I made a full media backup (even though that took an hour) before attempting this. I brought "buster" up to the most current with upgrade and dist-upgrade. I did NOT update the firmware, because it said my partition was too small at 255MB and it wanted 256MB plus the scary message. I don't think that was my root cause, however, nor do I know how I could increase the size of that partition if I did want to try it. Then I changed the apt/sources.list file and then started the upgrade. During the initial update, I got a pop-up about restarting services impacted by library changes, and I guessed my best and told it to do those automatically. This wasn't mentioned in your process, so perhaps this is where train jumped the tracks. I got the same error and took the suggested action of "apt install gcc-8-base" and then ran dist-upgrade again, and that got past the error, but things did not go well thereafter. During the shutdown, the system hung at displaying the "debian" animated logo on the blue field. After power-cycling, it booted, but things were not good. I have no background image, just black. The icon for the application menu is gone. Video streaming does not work. The auto-mounts for my additional media did not appear. Those were just the first things I noticed/tested. Since I use this Raspberry as my media center, this makes it unuseable for that purpose. I went back to the original SD card and things are OK, but I would like to get upgraded to Bullseye so I can run Kodi 19. Am open to suggestions. Willing to try this again, despite the 3-4 hours of elapsed time the entire process took. Otherwise, I may just have to start with a fresh bullseye image and try to capture all my packages and modifications.... Ugh.
 
The upgrade broke wireless networking on my Pi Zero W though (I think relating to errors preventing dhcpcd from starting). My 4B is ethernet connected and stayed connected after the upgrade, but I also saw some errors relating to networking/dhcp in the systemd logs. Ended up wiping and doing a clean Bullseye install for both.

Same with my Zero 2W. I was installing through SSH and suddenly my session was cut off while it was still installing. The device became unavailable on network, so I tried to plug HDMI and mouse but I only got a black screen, so I forced rebooted by unplugging and instead of RaspiOS I got a Debian loading screen, then I had a broken desktop (black background instead of the default wallpaper). I went to network manager because it wasn't auto-reconnecting to wifi and found out that networking was basically broken: the software connman reports an active ethernet connection and no wifi networks available. I'll probably make a clean Bullseye install.

I did not backup the device because there wasn't much stuff to preserve, but this is quite annoying. Why did this procedure break the device? How is one supposed to securely update their RaspiOS when a new debian (then RaspiOS) version is released, if mostly something like this happens!?
 
Has anyone found a way to do this without effectively bricking the device? I have a dozen RPi's that I need to upgrade and so far the first 2 attempts have going poorly. With the first refusing ssh after "rpi-update & reboot" and the other just stopped responding to ICMP after rpi-update & reboot. These are all remote devices so I need to get someone to plug a monitor into them to see wth is going on.
 
So there's definitely a lot of information missing that could potentially brick a device, especially for those that are running headless and only accessing over SSH.

https://pimylifeup.com/upgrade-raspberry-pi-os-bullseye/ has a pretty comprehensive list of steps, some of which I'll highlight here:

Look for the files in /etc/apt/sources.list.d/ and update them from buster to bullseye.

After running apt update but before apt dist-upgrade[/ICODE}, run [ICODE]sudo apt install -y libgcc-8-dev gcc-8-base to solve the dependency issues that many comments have mentioned.

Once that's done, run sudo apt full-upgrade

After the upgrade and BEFORE REBOOTING, a change needs to be made to the dhcpcd file. This can lead to networking not reconnecting after reboot, which again, for embedded systems running headless, can be a problem.

In sudo nano /etc/systemd/system/dhcpcd.service.d/wait.conf, replace ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w with ExecStart=/usr/sbin/dhcpcd -q -w

Finally, a change to the boot config to address a video driver change. In the /boot/config.txt file, comment out the line: dtoverlay=vc4-fkms-v3d.

In the same file, find the [all] section, and add: dtoverlay=vc4-kms-v3d.

Now reboot, cross your fingers, say a prayer to Cthulhu, and all should be good to go :)
 
  • Like
Reactions: bit_user
So there's definitely a lot of information missing that could potentially brick a device, especially for those that are running headless and only accessing over SSH.
Thanks for signing up just to share this!

I followed those instructions to successfully upgrade from the 64-bit beta that I installed last summer (May 2021), except that my main repos were all from https://deb.debian.org/, rather than raspian.raspi.org. I kept them at deb.debian.org and just changed the release name to bullseye.

The one issue I ran into, with that, is that the line for security updates had to be edited from "buster" to "bullseye-security".

After running apt update but before apt dist-upgrade, run sudo apt install -y libgcc-8-dev gcc-8-base to solve the dependency issues that many comments have mentioned.
As for the GCC update, I found it was unnecessary when starting from a buster image that's completely up-to-date. You can run the command, but it says the packages are already up-to-date.

Once that's done, run sudo apt full-upgrade
I noted a difference between the two articles, with Toms saying dist-upgrade and PiMyLifeUp saying full-upgrade. From what I could find, they seem to be synonymous, with dist-upgrade being deprecated. I went ahead and used dist-upgrade, just in case, but noted that the apt manpage no longer mentions it.

After the upgrade and BEFORE REBOOTING, a change needs to be made to the dhcpcd file.
I didn't have this file, so no I made no modifications.

Finally, a change to the boot config to address a video driver change. In the /boot/config.txt file, comment out the line: dtoverlay=vc4-fkms-v3d.

In the same file, find the [all] section, and add: dtoverlay=vc4-kms-v3d.
Mine was already set to the new driver. I didn't add an [all] section, and it seems to work fine... except I'm getting llvmpipe for the OpenGL renderer on my Raspberry Pi v3 hardware. I've read that you can change it to Glamor, using raspi-config, but I've read there's a rendering bug in Mesa that you might hit on Pi versions < 4, in Chromium. It has been fixed upstream but will probably take a while to reach us.

I went ahead and tried it. First, I enabled the "GL Driver", in the "Advanced Options" menu and rebooted. That still left me using llvmpipe. So, next I enabled "Glamor", also in the "Advanced Options" menu and rebooted. After that, glxinfo | grep "renderer string" reports Vc4 V3D 2.1 and glxgears delivered about 50% higher fps in full-screen mode (leave it running for about 15 seconds). These two programs are both in the mesa-utils package. More importantly, window scrolling and dragging was much smoother. Sadly, the trackballs game would not run (but I think it would be too slow, anyhow).

I also installed vulkan-tools and checked vulkaninfo, but it indicated it was still using llvmpipe. I forget whether Vulkan is supposed to work on any older Pi GPUs, but I don't have any Vulkan programs to run on it anyhow. Just curious.

The one thing missing from the PiMyLifeUp instructions that Toms had was:

sudo apt autoclean

Not necessary, but it saves you some storage space. Also, you probably want to do:

sudo apt clean

Not sure of the difference, but the second command reclaimed an additional 120 MB. After rebooting, I would also recommend:

sudo fstrim -a

That benefits the wear-leveling in your storage device, if it supports TRIM.

After the upgrade & reboot, I had a handful of python/python2 packages with conflicts. The only python3 package was python3-six, which I manually upgraded and that obsoleted some of the others. Then, I upgraded the remaining ones and the default conflict resolution seemed reasonable.
 
Last edited:
Hi There,

I followed all the steps to upgrade from Buster to Bullseye on my RPi 3B+
It went all OK without any error. However when I checked cat /etc/os-release it still shows Buster instead off Bullseye.
My Rpi is running fine and Domoticz also. When I do again an update and upgrade it says all is already upto date See the screenprints below.

Code:
pi@mcmellow-pi:~ $ sudo apt-get update && sudo apt-get full-upgrade -y
Hit:1 [url=http://archive.raspberrypi.org/debian]http://archive.raspberrypi.org/debian[/url] bullseye InRelease
Hit:2 [url=http://raspbian.raspberrypi.org/raspbian]http://raspbian.raspberrypi.org/raspbian[/url] bullseye InRelease
Get:3 [url=http://giteduberger.fr]http://giteduberger.fr[/url] rpimonitor/ InRelease [1,933 B]
Hit:4 [url=https://packages.grafana.com/oss/deb]https://packages.grafana.com/oss/deb[/url] stable InRelease
Hit:5 [url=https://download.docker.com/linux/raspbian]https://download.docker.com/linux/raspbian[/url] bullseye InRelease
Hit:6 [url=https://packages.sury.org/php]https://packages.sury.org/php[/url] bullseye InRelease
Hit:7 [url=https://deb.nodesource.com/node_16.x]https://deb.nodesource.com/node_16.x[/url] bullseye InRelease
Hit:8 [url=https://packagecloud.io/ookla/speedtest-cli/debian]https://packagecloud.io/ookla/speedtest-cli/debian[/url] bullseye InRelease
Fetched 1,933 B in 3s (655 B/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

pi@mcmellow-pi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

pi@mcmellow-pi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

How can I update the /etc/os-release file as well.

Thanks in advance
McMelloW
 
Hi There,

I followed all the steps to upgrade from Buster to Bullseye on my RPi 3B+
It went all OK without any error. However when I checked cat /etc/os-release it still shows Buster instead off Bullseye.

...

How can I update the /etc/os-release file as well.
Unfortunately, I've never seen this author respond to posts on his articles. So, don't expect any help from there.

I'd recommend reading the posts, above, and see if you can spot some step you missed. This is not my area of expertise, so I can't give you any more help than what's in my post.
 
Unfortunately, I've never seen this author respond to posts on his articles. So, don't expect any help from there.

I'd recommend reading the posts, above, and see if you can spot some step you missed. This is not my area of expertise, so I can't give you any more help than what's in my post.
I have checked and rechecked it a number of times. No error no steps missed. But the /etc/os-release stil is showing buster?
 
Status
Not open for further replies.