-
-
Save jauderho/6b7d42030e264a135450ecc0ba521bd8 to your computer and use it in GitHub Desktop.
### WARNING: READ CAREFULLY BEFORE ATTEMPTING ### | |
# | |
# Officially, this is not recommended. YMMV | |
# https://www.raspberrypi.com/news/bookworm-the-new-version-of-raspberry-pi-os/ | |
# | |
# This mostly works if you are on 64bit. You are on your own if you are on 32bit or mixed 64/32bit | |
# | |
# Credit to anfractuosity and fgimenezm for figuring out additional details for kernels | |
# | |
# Make sure everything is up-to-date | |
sudo apt-get update && sudo apt-get dist-upgrade | |
# Point to bookworm repos instead | |
sudo sed -i -e 's/bullseye/bookworm/g' /etc/apt/sources.list | |
sudo sed -i -e 's/bullseye/bookworm/g' /etc/apt/sources.list.d/raspi.list | |
# Contents of /etc/apt/sources.list | |
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware | |
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware | |
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware | |
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source' | |
#deb-src http://deb.debian.org/debian bookworm main contrib non-free | |
#deb-src http://security.debian.org/debian-security bookworm-security main contrib non-free | |
#deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free | |
# Contents of /etc/apt/sources.list.d/raspi.list | |
deb http://archive.raspberrypi.org/debian/ bookworm main | |
# Uncomment line below then 'apt-get update' to enable 'apt-get source' | |
#deb-src http://archive.raspberrypi.org/debian/ bookworm main | |
# Do actual update | |
sudo apt update && sudo apt -y full-upgrade && sudo apt -y clean && sudo apt -y autoremove | |
# Reboot | |
sudo reboot | |
# Remove old config files after doing sanity checks | |
sudo apt purge ?config-files | |
### Switch to the new kernels ### | |
# | |
## WARNING: Since this has bitten several folks. The following can completely brick your system requiring a reinstall | |
## DO NOT do this if you are unsure | |
# | |
# Prep | |
sudo dpkg --purge --force-depends raspberrypi-kernel raspberrypi-bootloader | |
sudo umount /boot | |
sudo fsck -y /boot | |
sudo mkdir /boot/firmware | |
sudo sed -i.bak -e "s#boot#boot/firmware#" /etc/fstab | |
sudo systemctl daemon-reload | |
sudo mount /boot/firmware | |
sudo apt install raspi-firmware | |
# Actually install the kernels. Make sure you pick the right version for your Pi | |
# sudo apt install linux-image-rpi-v8 linux-headers-rpi-v8 # 64bit | |
# sudo apt install linux-image-rpi-v7l linux-headers-rpi-v7l # 32bit | |
# sudo apt install linux-image-rpi-v6 linux-headers-rpi-v6 | |
# Append auto_initramfs=1 to the bottom of file where it says [all] | |
sudo sed -i.bak '$ a\auto_initramfs=1' /boot/firmware/config.txt | |
# Reboot | |
sudo reboot | |
# Verify using "uname -a" (correct as of 10/2023) | |
# Old kernel | |
# Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux | |
# New kernel | |
# Linux raspberrypi 6.1.0-rpi4-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.54-1+rpt2 (2023-10-05) aarch64 GNU/Linux | |
# If you are not converted to using NetworkManager, you might lose networking upon reboot. | |
# Check the ARP table to see what the new DHCP assigned IP address is. You may have to manually set the IP address again | |
# Thanks to solsticedhiver for identifying this | |
# | |
# Install NetworkManager if not already installed | |
sudo apt-get install --no-install-recommends network-manager | |
# | |
# Switch to NetworkManager from dhcpcd | |
sudo systemctl enable --now NetworkManager | |
sudo systemctl disable --now dhcpcd | |
# | |
# Set up static IP. Adjust as necessary | |
sudo nmcli -p connection show | |
sudo nmcli -p connection show "Wired connection 1" | |
sudo nmcli con mod "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.5/24 ipv4.gateway 192.168.1.1 | |
# Reboot | |
sudo reboot | |
# | |
# Bonus steps | |
# | |
# Install btop | |
sudo apt-get install btop | |
# | |
# Update /etc/ssh/sshd_config for up to date, secure by default config. Use ssh-audit to verify | |
KexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org | |
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519 | |
# Ciphers chacha20-poly1305@openssh.com # Disabled due to CVE-2023-48795 for now | |
Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com | |
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com |
@bcutter this is only valid if you also upgrade to the new kernel
...which is what happens (happened for me) automatically as the new kernel is part of the updated apt sources.
It was not automatic for me. After a full upgrade with the new repositories, I continued using the Raspi with the old kernel for a week, before applying the procedure to upgrade to the new kernel.
kernel.img
I installed the wrong kernel image (linux-image-rpi-v7l) on my rpi3 and now it won't boot (blinking green seven times). Can i fix this by just copying kernel7.img to the sd card or will I need to boot up a running system and running rpi-update chrooted on the sd?
Edit: okay copying the correct kernel.img to the card actually made it boot again. What confused me in the first place is that uname -a shows "armv7l" but the rpi-v7l package is not the correct one"
Another edit: I had to use rpi-update to get the latest kernel
Same for me. I checked before with
- arch
- uname -m
- sudo dpkg --print-architecture
and it gave me armv7l
which is why I choosed sudo apt install linux-image-rpi-v7l linux-headers-rpi-v7l # 32bit
.
- After reboot ended up in 7x green LED which stands for "kernel.img not found". Swapped the
kernel7l.img
(created by the Pi) bykernel7.img
(from image freshly downloaded from website), boot possible again ✅ - Thought about "maybe I should also swap
initramfs7l
byinitramfs7
?". Did so, after that the ACT LED was permanently green, no boot possible anymore ❌ - So back to the working setup:
kernel7.img
with theinitramfs7l
. ✅
So I strongly advice to rework that section (lines 50 to 53) as it really causes troubles.
I only went through the process for educational reasons on my test Pi. As mentioned, kernel got already updated to 6.1.21-v7+ #1642 SMP Mon Apr 3 17:20:52 BST 2023 armv7l GNU/Linux
.
Now after running this additional kernel update section including the kernel trouble I landed at 6.1.0-rpi7-rpi-v7 #1 SMP Raspbian 1:6.1.63-1+rpt1 (2023-11-24) armv7l GNU/Linux
- which is strange: the version is lower (6.1.0 instead of 6.1.21) but the date is newer (2023-11-24 instead of 2023-04-03).
- I didn't want to continue with that "felt mess" and simply used
rpi-update
. - ...which did not work out as the boot partition was too small. And I really did not want to go through the way highlighted at https://gist.github.com/jauderho/6b7d42030e264a135450ecc0ba521bd8?permalink_comment_id=4760043#gistcomment-4760043 as that would've cost me additionally I guess almost 2 hours.
- **So I tried with
sudo apt install raspberrypi-kernel raspberrypi-bootloader
.
Unfortunately it seems like the "mix" stays withuname -a
giving6.1.0-rpi7-rpi-v7 #1 SMP Raspbian 1:6.1.63-1+rpt1 (2023-11-24) armv7l GNU/Linux
and now a very interesting/boot
content with filled/boot
(from aptraspberrypi-kernel
) as well as/boot/firmware
(from the manual hack way).
In the end I really should have stayed with the kernel shipped with the apt sources instead of walking that hacky path in lines 39 to 53 and purely wasting time for nothing.
I'll see how things go for my other Pi's.
I agree with @bcutter . Trying to upgrade the kernel only caused more issues and led to a non-bootable situation for me. Tried to recover by manually copying the kernel .img but didn't work.
In the end, I just did a fresh install of bookworm. That's what I would recommend until the kernel upgrade process is understood better for different situations.
By the way, my situation was 64-bit kernel with 32-bit userland.
I had the identical old kernel to the OP: Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
I added the arm64 architecture using sudo dpkg --add-architecture arm64
Tried to run sudo apt install linux-image-rpi-v8 linux-headers-rpi-v8
which kept failing because it couldn't install the necessary 64 bit dependencies.
Maybe it had something to do with the purge and/or lines 39-48 in the current guide. But like I said, I gave up and did a fresh install to convert to a full 64 bit environment rather than try to cross-grade from 32 bit to 64 bit. For anyone that does want to try it, here's a guide that may or may not work: https://wiki.debian.org/Migrate32To64Bit
Thanks for the guide it worked perfectly.
Great guide, succinct, and it works!
If you ignored the below warning and your system is not booting. Are you getting blank screen and the green LED on your Raspberry Pi is flashing 8 times while the red LED is on. It is ok, it can be fixed. Tested on Raspberry Pi 3B+.
## WARNING: Since this has bitten several folks. The following can completely brick your system requiring a reinstall
## DO NOT do this if you are unsure
- Using the Raspbian imager, install a fresh copy on a USB drive (Not your SDcard).
- Backup the content of the boot of your SDcard.
- Replace the content of the SDcard boot volume with the content of boot volume from the USB drive.
- Restore the file cmdline.txt from the backup that you took. (This is important so you can restore the correct PARTUUID)
- Put the SDcard back into your Raspberry Pi and check if the problem is resolved.
If your system starts fine but still can't get into your Desktop, hit Ctrl+Alt+F1
to get into your terminal (or use SSH). From there run sudo raspi-config
.
Select "Advanced Options" --> "Wayland" --> "Wayfire". Go back to the main screen and hit "Finish" to save and reboot.
Worked great for me on a whole rack of 8 4Bs. I would recommend going here: https://www.ssh.com/ssh/sshd_config/ for the latest updates on Ciphers, Algos and MACs as these change quite frequently. The only thing I am disappointed with is that Bookworm still isn't running with GCC-13.2.0 in the stable repo like almost every other distro out there, but I know Debian is all about taking their time in the name of stability. The reason upgrading like this is probably not recommended is that for each step, it may not be cut and dried and you may have to make decisions specific to your system and configuration. For example, whether to keep your custom config files for certain services or to go with the new clean one from updated package maintainers. You definitely need to know what you are doing and you should experiment with a system you don't care too much about before you roll this procedure everywhere IMO. That said, was smooth sailing over here with a couple of additional decisions to make along the way. Thank you to jauderho for the gist - saved me lots of time.
@jnorrid,
Hello, sir.
Could you check and yield your kernel version after update? Is it 6.6.*?
Thanks.
Yes @stdenits - no problem. On my system, uname -a yields:
6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64
This saved me a bunch of time and worked beautifully on a Pi4B running bullseye on 64bit userland - including the change to the firmware folder. Thank you!
Thanks for this guide. Worked like a charm, including kernel upgrade (on my 64 bit system).
For NetworkManager, can you remove these lines? For the change to NetworkManager you should do nothing, the system does this after upgrade without any activity.
sudo systemctl enable --now NetworkManager
Will do nothing, as it is enabled after the installation.
sudo systemctl disable --now dhcpcd
Will most likely brake the system. After next reboot, there is no network any more :( . Because dhcpcd will not start (you just disabled it), and NetworkManager has a dependency to dhcpcd in /usr/lib/systemd/system/NetworkManager.service.d/10-dhcpcd.conf
:
[Unit]
After=dhcpcd.service
Conflicts=dhcpcd.service
So NetworkManager will not start, as it waits for dhcpcd ...
If you do nothing, dhcpcd starts, and after that, NetworkManager starts and stops dhcpcd due to the Conflicts=dhcpcd.service
line.
I don't see the file /usr/lib/systemd/system/NetworkManager.service.d/10-dhcpcd.conf
on a raspiOS lite 32 bit. What is your OS?
I don't see the file
/usr/lib/systemd/system/NetworkManager.service.d/10-dhcpcd.conf
on a raspiOS lite 32 bit. What is your OS?
I have it on a Raspbian Bookworm 32-bit
I just looked at the following images:
- 2024-03-15-raspios-bookworm-arm64.img.xz
- 2024-03-15-raspios-bookworm-arm64-lite.img.xz
- 2024-03-15-raspios-bookworm-armhf.img.xz
available at https://www.raspberrypi.com/software/operating-systems/
And the file is not present in the image themselves. So It must have been added after the first boot or some other way...
May be the instruction must include instead the deletion of that said failed ie.:
rm /usr/lib/systemd/system/NetworkManager.service.d/10-dhcpcd.conf
???
/lib/systemd/system/NetworkManager.service.d/10-dhcpcd.conf
is part of dhcpcd5 1:8.1.2-1+rpt9
This is about upgrading. If dhcpcd5
was part of your "old" OS version, it will be upgraded and available ... . It is not part of a new Bookworm install.
And no, I would not delete this file. You might apt-get remove dhcpcd5
, this should work (untested).
I have used these instructions to update one of my Pi4s successfully. However, today I am trying to update my other Pi4 and it fails at the 2nd last stage as follows:
root@hass:/home/pi# apt install linux-image-rpi-v8 linux-headers-rpi-v8
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
linux-image-rpi-v8 is already the newest version (1:6.6.28-1+rpt1).
linux-headers-rpi-v8 is already the newest version (1:6.6.28-1+rpt1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up linux-image-6.6.28+rpt-rpi-v8 (1:6.6.28-1+rpt1) ...
/etc/kernel/postinst.d/dkms:
dkms: running auto installation service for kernel 6.6.28+rpt-rpi-v8.
Sign command: /lib/modules/6.6.28+rpt-rpi-v8/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Building module:
Cleaning build area...
make -j4 KERNELRELEASE=6.6.28+rpt-rpi-v8 -C /lib/modules/6.6.28+rpt-rpi-v8/build M=/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build....(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.6.28+rpt-rpi-v8 (aarch64)
Consult /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/make.log for more information.
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
dkms: autoinstall for kernel: 6.6.28+rpt-rpi-v8 failed!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: error processing package linux-image-6.6.28+rpt-rpi-v8 (--configure):
installed linux-image-6.6.28+rpt-rpi-v8 package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of linux-image-rpi-v8:
linux-image-rpi-v8 depends on linux-image-6.6.28+rpt-rpi-v8 (= 1:6.6.28-1+rpt1); however:
Package linux-image-6.6.28+rpt-rpi-v8 is not configured yet.
dpkg: error processing package linux-image-rpi-v8 (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-headers-6.6.28+rpt-rpi-v8:
linux-headers-6.6.28+rpt-rpi-v8 depends on linux-image-6.6.28+rpt-rpi-v8 (= 1:6.6.28-1+rpt1) | linux-image-6.6.28+rpt-rpi-v8-unsigned (= 1:6.6.28-1+rpt1); however:
Package linux-image-6.6.28+rpt-rpi-v8 is not configured yet.
Package linux-image-6.6.28+rpt-rpi-v8-unsigned is not installed.
dpkg: error processing package linux-headers-6.6.28+rpt-rpi-v8 (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-headers-rpi-v8:
linux-headers-rpi-v8 depends on linux-headers-6.6.28+rpt-rpi-v8 (= 1:6.6.28-1+rpt1); however:
Package linux-headers-6.6.28+rpt-rpi-v8 is not configured yet.
dpkg: error processing package linux-headers-rpi-v8 (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
linux-image-6.6.28+rpt-rpi-v8
linux-image-rpi-v8
linux-headers-6.6.28+rpt-rpi-v8
linux-headers-rpi-v8
E: Sub-process /usr/bin/dpkg returned an error code (1)
The error contained in the log - /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/make.log - is:
DKMS make.log for xtrx-0.0.1+git20190320.5ae3a3e-3.2 for kernel 6.6.28+rpt-rpi-v8 (aarch64)
Tue 21 May 15:22:55 EAT 2024
make: Entering directory '/usr/src/linux-headers-6.6.28+rpt-rpi-v8'
CC [M] /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.o
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c: In function ‘xtrxfd_mmap’:
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1075:31: error: assignment of read-only member ‘vm_flags’
1075 | vma->vm_flags |= VM_LOCKED;
| ^~
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1090:31: error: assignment of read-only member ‘vm_flags’
1090 | vma->vm_flags |= VM_IO;
| ^~
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1115:31: error: assignment of read-only member ‘vm_flags’
1115 | vma->vm_flags |= VM_LOCKED;
| ^~
In file included from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/lse.h:12,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/cmpxchg.h:14,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/atomic.h:16,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/atomic.h:7,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/asm-generic/bitops/atomic.h:5,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/bitops.h:25,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/bitops.h:68,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/cache.h:40,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/cache.h:6,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/time.h:5,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/arch/arm64/include/asm/stat.h:12,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/stat.h:6,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/module.h:13,
from /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:22:
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c: In function ‘xtrx_init’:
/usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/export.h:29:22: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Werror=incompatible-pointer-types]
29 | #define THIS_MODULE (&__this_module)
| ~^~~~~~~~~~~~~~~
| |
| struct module *
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1523:35: note: in expansion of macro ‘THIS_MODULE’
1523 | xtrx_class = class_create(THIS_MODULE, CLASS_NAME);
| ^~~~~~~~~~~
In file included from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/device.h:31,
from /usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/pci.h:37,
from /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:25:
/usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/device/class.h:230:54: note: expected ‘const char *’ but argument is of type ‘struct module *’
230 | struct class * __must_check class_create(const char *name);
| ~~~~~~~~~~~~^~~~
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1523:22: error: too many arguments to function ‘class_create’
1523 | xtrx_class = class_create(THIS_MODULE, CLASS_NAME);
| ^~~~~~~~~~~~
/usr/src/linux-headers-6.6.28+rpt-common-rpi/include/linux/device/class.h:230:29: note: declared here
230 | struct class * __must_check class_create(const char *name);
| ^~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [/usr/src/linux-headers-6.6.28+rpt-common-rpi/scripts/Makefile.build:248: /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.o] Error 1
make[1]: *** [/usr/src/linux-headers-6.6.28+rpt-common-rpi/Makefile:1938: /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build] Error 2
make: *** [/usr/src/linux-headers-6.6.28+rpt-common-rpi/Makefile:246: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-6.6.28+rpt-rpi-v8'
Is there a way to fix this error?? I do not want to reboot lest I end up with an unusable Pi4
@odhiambo run
sudo apt purge xtrx-dkms
sudo apt install --reinstall linux-image-rpi-v8 linux-headers-rpi-v8
@odhiambo run
sudo apt purge xtrx-dkms sudo apt install --reinstall linux-image-rpi-v8 linux-headers-rpi-v8
Thank you for that, but I already decided to do a clean install. I hope this response will help others.
I was able to complete the upgrade on my 4B without issue (headless 64bit). Thank you!
Worked great on my Rasperry Pi Zero 2 W, including the kernel :) Thanks for the guide!
Perfect upgrade guide. The only issues I had was switching to the new Network Manager. Thanks
I tried on my 72 unit of sensecap m1 lora gateway. Work perfectly!!
I tried this update method on my pi 3i, after all the step it is unable to reboot, I used another linux machine to view the bootfs, the kernal.img is missing. Is there any way I can fix this?
I tried this update method on my pi 3i, after all the step it is unable to reboot, I used another linux machine to view the bootfs, the kernal.img is missing. Is there any way I can fix this?
Experienced the same, see https://gist.github.com/jauderho/6b7d42030e264a135450ecc0ba521bd8?permalink_comment_id=4821335#gistcomment-4821335 how I fixed it.
This went perfectly smoothly for me on a Pi4, thanks!
sudo sed -i.bak '$ a\auto_initramfs=1' /boot/firmware/config.txt
broke it for me. Raspi didn't boot with auto_initramfs
set to 1 anymore. Reverted it to 0 and boot with new kernel was successful.
# Switch to NetworkManager from dhcpcd
sudo systemctl enable --now NetworkManager
sudo systemctl disable --now dhcpcd
Noteable here is that NetworkManager ignores all interfaces defined in /etc/network/interfaces*
. The interfaces must be removed from there to get visible in NetworkManager.
Edit: I'm on a Raspberry Pi 2 Model B
Raspberry PI 4 Model B, 64bit, installed in NVMe disk. Just upgraded to bookworm with kernel, without problems :)
I've (mostly) followed these steps and now have Bookworm running on my Raspberry Pi model B. Notes:
- Lines 18-25 (contents of sources.list) only apply to 64-bit installations, not 32-bit installations. Lines 14-16 take care of sources.list based on your current install's bitness so just trust those.
- I was using an SD card from a fresh bookworm install (backed out of that, too much work) with root on an external SSD that still had bullseye installed. This booted fine with the SD card mounted at /boot, but IPv6 didn't work (I run dual stack). After making a backup copy of /boot, I followed lines 41-59, though I purged raspberrypi-kernel and raspberrypi-bootloader after unmounting /boot instead of before. New kernel (6.6.47+rpt-rpi-v6) installed fine and IPv6 was enabled after reboot.
- The above issues with IPv6 caused the initial upgrade to fail because my nginx config files had IPv6 addresses. I had to comment those out of the nginx config files then manually install nginx-full which allowed the upgrade to complete successfully.
- I already had auto_initramfs=1 in my config.txt
@bcutter this is only valid if you also upgrade to the new kernel