Cannot boot after upgrading to Fedora 40

Hi. After upgrading to Fedora 40, it doesn’t boot using the 6.8.1-300 fc40 kernel. I’m using NVIDIA GPU with proprietary drivers and encrypted LUKS. But I can still boot with the 6.7.9-200 fc39 kernel normally.

I have tried adding plymouth.enable=0 disablehooks=plymouth nomodeset on the grub commandline, but it also doesn’t work. I have also tried to reinstall the kernel (dnf reinstall kernel kernel-*) and rebuild the kernel modules (akmods --kernels '6.8.1-300.fc40.x86_64' --rebuild --force), but it also doesn’t work. It doesn’t even display the prompt to enter the password to decrypt the drive. It also doesn’t produce any log at all, journalctl -b -1 just display the previous boot, not the failed boot.

And by the way, how can I disable or blacklist the 6.8.1 kernel so GRUB doesn’t automatically boot that? Thank you.

1 Like

You might want to join the fedora test mailing list and contibute this infomation to the tester.

The problem is that you are not prompted to dectypt your disk?

Edit the boot command to remove quiet and rhgb so that you can see what is going on for the boot that fails. No need for the plymouth.enable=0 disablehooks=plymouth.

Then let us know what you find.

Also let us know the hardware you are running inxi -FGzz

FYI: I’m running the 6.8.1-201 kernel myself, but on f39 and its working.

You can us grubby to set the default kernel of your choice.

Since Fedora 40 beta has just been released rpmfusion may not have akmods built for 40 yet also kernel-devel also may not be in the repos.You may have to wait until it catches up and just choose the older kernel at boot time.

1 Like

You should not expect proprietary drivers to work immediately – that is not under kernel.org or Fedora control. With graphics issues, it may be necessary to enter the LUKS password while the screen is blank. Did you try that? While testing F40 you could disable the Nvidia proprietary drivers so nouveau is used. It is relatively easy to switch back and forth.

The failed boot never reached the stage where journalctl was active. If you can boot after “blindly” entering the LUKS password you might get useful information about the Nvidia issues.

I just checked and the nvidia drivers are available from rpmfusion for fedora 40.
I am using the fedora 40 beta and fully updated when I tested that.

The failure to display the luks prompt for unlocking may be due to how the drivers were installed.

There is a known issue when doing a driver install or kernel update if the user reboots too soon the driver may not get properly built and thus may not work properly even if it shows as installed.
I find that for some the simple 2 step process of removing the driver then reinstalling it has worked.

  1. sudo dnf remove kmod-nvidia-6.8.1* would remove the current nvidia modules for that kernel.
  2. sudo akmods --force would build the new modules for that kernel.
  3. A reboot then should load the newer modules.

You might also be able to build the drivers explicitly for the 6.8.1 kernel by first running dnf list installed kernel and see the exact version that shows for the 6.8.1 kernel. It would be in the same format as shown with uname -r (probably something like 6.8.1-300.fc40.x86_64 as it shows on my machine). The command to build the module for only that kernel would then be
sudo akmods --force --kernels 6.8.1-300.fc40.x86_64

It would be worth a try to see if that may help.
It also would be worth looking at the journalctl output for the failed boot after rebooting with the older kernel and see what it may be able to tell you, though I note you have already tried that and were unable to do so.

Thanks. I have tried this, but it still show nothing except for the GRUB “Booting from command list” message.

Thanks. It booted successfully when I blindly typed the password.

Thanks, I tried this but the problem still happen.

After I blindly typed the password, it booted normally. Then I compare the logs. The normal boots have the following lines while the “no password prompt” boots don’t:

< The simpledrm driver will not be probed
< efifb: probing for efifb
< efifb: showing boot graphics
< efifb: framebuffer at 0xfb00000000, using 8640k, total 8640k
< efifb: mode is 1920x1080x32, linelength=8192, pages=1
< efifb: scrolling: redraw
< efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
< fbcon: Deferring console take-over
< fb0: EFI VGA frame buffer device
< Console: switching to colour frame buffer device 240x67
< Console: switching to colour dummy device 80x25

My kernel options are the same between 6.7.9 and 6.8.1:

title Fedora Linux (6.8.1-300.fc40.x86_64) 40 (Workstation Edition Prerelease)
version 6.8.1-300.fc40.x86_64
linux /vmlinuz-6.8.1-300.fc40.x86_64
initrd /initramfs-6.8.1-300.fc40.x86_64.img
options root=UUID=ce2be382-d25a-47ab-b3bf-a2ffe799e312 ro rootflags=subvol=root initcall_blacklist=simpledrm_platform_driver_init rd.luks.uuid=luks-cd9ea42d-62e5-41f5-8367-3564b6baa198 rhgb quiet initcall_blacklist=simpledrm_platform_driver_init nvidia-drm.modeset=1 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau
grub_users $grub_users
grub_arg --unrestricted
grub_class fedora
System Information
System:
  Kernel: 6.8.1-300.fc40.x86_64 arch: x86_64 bits: 64
  Console: pty pts/1 Distro: Fedora Linux 40 (Workstation Edition
    Prerelease)
Machine:
  Type: Laptop System: LENOVO product: 82JW v: Legion 5 15ACH6
    serial: <filter>
  Mobo: LENOVO model: LNVNB161216 v: SDK0T76502 WIN serial: <filter>
    UEFI: LENOVO v: HHCN36WW date: 12/07/2023
Battery:
  ID-1: BAT0 charge: 34.7 Wh (56.1%) condition: 61.9/60.0 Wh (103.1%)
    volts: 15.5 min: 15.4
CPU:
  Info: 6-core model: AMD Ryzen 5 5600H with Radeon Graphics bits: 64
    type: MT MCP cache: L2: 3 MiB
  Speed (MHz): avg: 615 min/max: 400/4280 cores: 1: 400 2: 400 3: 400 4: 400
    5: 400 6: 400 7: 400 8: 400 9: 1397 10: 400 11: 400 12: 1984
Graphics:
  Device-1: NVIDIA GA107BM [GeForce RTX 3050 Ti Mobile] driver: nvidia
    v: 550.67
  Device-2: Bison Integrated Camera driver: uvcvideo type: USB
  Display: server: X.Org v: 1.20.14 with: Xwayland v: 23.2.4 driver: X:
    loaded: nvidia unloaded: fbdev,modesetting,nouveau,vesa
    gpu: nvidia,nvidia-nvswitch resolution: 1920x1080~165Hz
  API: EGL v: 1.5 drivers: nvidia,swrast
    platforms: gbm,x11,surfaceless,device
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 550.67
    renderer: NVIDIA GeForce RTX 3050 Ti Laptop GPU/PCIe/SSE2
Audio:
  Device-1: NVIDIA driver: snd_hda_intel
  Device-2: AMD ACP/ACP3X/ACP6x Audio Coprocessor driver: N/A
  Device-3: AMD Family 17h/19h HD Audio driver: snd_hda_intel
  API: ALSA v: k6.8.1-300.fc40.x86_64 status: kernel-api
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    driver: r8169
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Device-2: Realtek RTL8852AE 802.11ax PCIe Wireless Network Adapter
    driver: rtw89_8852ae
  IF: wlp4s0 state: down mac: <filter>
Bluetooth:
  Device-1: Realtek Bluetooth Radio driver: btusb type: USB
  Report: btmgmt ID: hci0 rfk-id: 2 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: <filter> bt-v: 5.2
Drives:
  Local Storage: total: 476.94 GiB used: 187.38 GiB (39.3%)
  ID-1: /dev/nvme0n1 vendor: Samsung model: MZVLB512HBJQ-000L2
    size: 476.94 GiB
Partition:
  ID-1: / size: 399.98 GiB used: 186.88 GiB (46.7%) fs: btrfs dev: /dev/dm-0
  ID-2: /boot size: 973.4 MiB used: 460.8 MiB (47.3%) fs: ext4
    dev: /dev/nvme0n1p2
  ID-3: /boot/efi size: 598.8 MiB used: 44.4 MiB (7.4%) fs: vfat
    dev: /dev/nvme0n1p1
  ID-4: /home size: 399.98 GiB used: 186.88 GiB (46.7%) fs: btrfs
    dev: /dev/dm-0
Swap:
  ID-1: swap-1 type: zram size: 8 GiB used: 0 KiB (0.0%) dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 52.9 C mobo: N/A gpu: nvidia temp: 42 C
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB available: 15.47 GiB used: 2.57 GiB (16.6%)
  Processes: 434 Uptime: 3m Shell: Sudo inxi: 3.3.33

Upgrading to 6.8.2-300.fc40.x86_64 has solved the problem for me. The changelog has mentioned the fix:

drivers/firmware: skip simpledrm if nvidia-drm.modeset=1 is set (Javier Martinez Canillas).

2 Likes