Black screen on boot after replacing Nvidia GPU

Hello!

Recently I upgraded my Nvidia GPU from 2070 to 4060 Ti.

Below are exact models:

  1. Palit GeForce RTX 2070 Dual [NE62070020P2-1060A]
  2. GIGABYTE GeForce RTX 4060 Ti GAMING OC 16G [GV-N406TGAMING OC-16GD]

Qubes OS with default nouveau driver and kernel-latest 6.10.3 doesn’t boot anymore.

Usually after selecting kernel in GRUB menu and loading initramfs, when screen turns black and keyboard/mouse disconnects for a few seconds, Qubes OS splash screen should appear with loading progress bar. It doesn’t happen anymore: keyboard/mouse connects back as usual, but screen stays black, and nothing happens.

System request key works, so I can reboot.
Changing TTY not works, Ctrl+Alt+F2 does nothing: screen stays black.

My second system, ArchLinux, with proprietary driver 560.35.03 and 6.10.10 kernel boots and works as expected w/o any issues, including GPU highly specific things like games with DLAA and video hardware acceleration.

Here is what I tried already:

  1. Just in case, restore previous working backup from a few days back (in form of Btrfs snapshot).
  2. Chroot and regenerate initramfs with dracut -f --regenerate-all.
  3. Add qubes.skip_autostart to kernel command line.
  4. Run Nvidia proprietary driver installer in chroot. It requires gcc which is not installed by default, and I’m not sure about the right way to install Qubes OS packages in chroot.

All of it had equally zero effect on the issue.

Qubes OS Nvidia Troubleshooting Guide mentions generation of xorg.conf file with XOrg -configure from TTY. I can’t access TTY, so I tried to run this command in chroot, but without success (there was an error about number of detected devices and attached screens, or something very similar, so no output file as result).

Since I have access to filesystem, I can share any logs, if you can tell me which might be relevant. Please let me know!

Most obvious thing to do now might be install Fedora in VirtualBox from Arch and try to create proprietary driver package for Qubes OS, since this driver works on Arch. Or is there an easier solution, what do you think?

Thank you for reading & any possible help!

Try to boot with nomodeset kernel command line option, you can add it in GRUB boot menu:
Autostart troubleshooting | Qubes OS
You can also try to boot the older kernel versions e.g. 6.8/.x6.9.x or the latest kernel-latest version 6.10.10.

Unfortunately, I didn’t expect to meet this issue, and have only single kernel version installed.

I can’t find any info on how to install new dom0 package without booting into a working Qubes OS system first.

qubes-dom0-update wants running qubes services, update proxy VM, etc.
dnf finds only local already installed packages in chroot.

Is there a way to install new kernel from chroot?
Like downloading ready-to-install package directly from Qubes OS repository?

I will try nomodeset option, but not sure if it would work without some kind of integrated CPU graphics. I have only Nvidia GPU in this case.

It should work for NVIDIA as well.

Thank you!

nomodeset allows me to see boot log on screen and access TTY.
However, display manager still doesn’t appear.
lightdm.service either fails on boot or keeps running (without any effect).
Looks like the reason is X server - it can’t start.

# Xorg -configure

...
Number of created screens does not match number of detected devices.
  Configuration failed.
(EE) Server terminated with error (2). Closing log file.

# mv /root/xorg.conf.new /etc/X11/xorg.conf

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
        ModulePath   "/usr/lib64/xorg/modules"
        FontPath     "catalogue:/etc/X11/fontpath.d"
        FontPath     "built-ins"
EndSection

Section "Module"
        Load  "glx"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/input/mice"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection
                                                                                                                                                                                               
Section "Device"                                                                                                                                                                               
        ### Available Driver options are:-                                                                                                                                                     
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",                                                                                                                          
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz",                                                                                                                                      
        ### <percent>: "<f>%"
        ### [arg]: arg optional
        #Option     "SWcursor"                  # [<bool>]
        #Option     "HWcursor"                  # [<bool>]
        #Option     "NoAccel"                   # [<bool>]
        Option     "ShadowFB"                   # [<bool>]
        #Option     "VideoKey"                  # <i>
        #Option     "WrappedFB"                 # [<bool>]
        #Option     "GLXVBlank"                 # [<bool>]
        #Option     "ZaphodHeads"               # <str>
        #Option     "PageFlip"                  # [<bool>]
        #Option     "SwapLimit"                 # <i>
        #Option     "AsyncUTSDFS"               # [<bool>]
        #Option     "AccelMethod"               # <str>
        #Option     "DRI"                       # <i>
        Identifier  "Card0"
        Driver      "nouveau"
        BusID       "PCI:41:0:0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     1
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     4
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     8
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     15
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     16
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

# xinit

...
Fatal server error:
(EE) no screens found(EE)
...
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error

I installed two additional kernels, latest 6.10.10 and stable 6.6.48.

Only visible thing that differs: stable is able to display Qubes OS splash screen with progress bar. Nothing happens when it reaches 100%.

I really want to make it work :C

P.S.

At first sys-usb qube failed to start:
# systemctl status qubes-vm@sys-usb.service
dom0 qvm-start[1444]: PCI device dom0:29_00.2 does not exist

dom0:29_00.2 is clearly my old 2070 GPU, so I detached it:
# qvm-pci d sys-usb dom0:29_00.2

Perhaps it’s due to 2070 has USB Type-C port, though I never used it.

Try to use kernel 6.6.36 with nomodeset.

It really works! Thank you!

But why?
And can I do something to make it work with later dom0 kernels?

I guess something broke with the recent kernel versions.
There were a few reports about similar issues in the last few days:

You can report this issue on github so devs can look into it:

1 Like

The same situation, nomodeset=0 works, but the Ctrl+Alt+F2 buttons press does nothing - console not switching.

Tried to remove plymouth.ignore-serial-consoles string from kernel cmd line, but that not works.

How-to switch to console (for then make lightdm fixes)?

Solved. This was my lenovo thinkpad trackpoint Bluetooth keyboard issue - FN buttons not works in console :no_mouth:. Successfully swithed to ttyN with my old PS/2 keyboard.

Just info for others, how-ro enable tty: How to disable all tty consoles and enable only 1 on CentOS / RHEL 7? - Ucartz Online Pvt Ltd