升级到 Ubuntu 22.04 后图形行为不可靠

升级到 Ubuntu 22.04 后图形行为不可靠

我整周都被这个问题难住了,终于放弃了反社会的单独调试。希望有人能帮我理解这种行为!我最初在 nvidia-graphics-drivers-535 组件中犯了一个错误(https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-535/+bug/2031198) 但经过更多的实验后,我不再确信那里是错误发生的正确位置。

系统信息: Ubuntu:22.04

内核:6.2.0-26

视频驱动程序:nvidia-driver-535

窗口系统:X11——没有任何实验的通道。

Alienware 15 R3 笔记本电脑,

Nvidia Geforce GTX 1060 + 英特尔高清显卡 630

完整规格@https://dl.dell.com/content/manual38481186-alienware-15-r3-setup-and-specifications.pdf?language=en-us

当前行为:

我双启动到 Win10,没有图形问题。因此我不认为某些视频硬件出现故障或正在发生故障。

根据启动时是否设置nvidia-drm.modeset=0或,行为会有所不同。nvidia-drm.modeset=1

  • 在所有情况下,spash都提供了内核参数,但普利茅斯启动画面并未显示。

使用以下命令引导nvidia-drm.modeset=0

  • 登录屏幕一片漆黑,但背光亮着。
  • 此时,如果我尝试使用ctrl+alt+Fx(其中 x > 1) 转到另一个虚拟终端,我可以看到内核日志的尾部,但它不是一个可用的终端。没有登录提示,输入时什么也没有显示。
    • 我可以回到 VT1,登录屏幕应该在那里,但它仍然是一个带背光的黑屏
  • 回到 VT1,即使没有显示登录屏幕,我也可以假装登录屏幕在那里:(例如:按 Enter 选择默认用户 + 输入 pw + Enter)
    • Xorg/gnome 启动了,我可以使用桌面 GUI,好像没有任何问题!
  • 从 gnome 中,我可以使用切换回登录屏幕,ctrl+alt+F1这次它显示正常!我可以使用 X11 返回 VT,它继续显示 gnome 环境,正如人们所期望的那样。但是,尝试使用其他 VT 会产生与上述相同的结果。
  • 而不是在黑色登录屏幕上立即登录,如果我不立即登录,而是等待足够长的时间(屏幕睡眠超时?)
    • 背光最终关闭
    • 上面提到的“假装那里有一个登录屏幕”的解决方法不起作用
    • 铺垫:
      • 风扇保持稳定状态
      • top没有显示任何可疑的 CPU 占用情况
      • 没有任何记录dmesg

它的行为nvidia-drm.modeset=1相当不稳定,到目前为止我已经发现了 3 种不同的行为 - 只需重新启动一堆而不进行更改任何事物靴子之间。

使用nvidia-drm.modeset=1行为 #0 进行引导:

  • 不显示登录界面,背光不亮。
  • 过了一会儿,风扇开始疯狂转动。似乎有什么东西在努力运转,但我看不到它 :(。
  • 我现在可以通过 ssh 连接到笔记本电脑了,
    • top显示plymouthd占用了 100% 的 CPU。
    • dmesg显示plymouthd被阻塞,正在等待nvidia_modeset。此消息不断重复:
[   60.327875] watchdog: BUG: soft lockup - CPU#7 stuck for 53s! [plymouthd:329]
[   60.327880] Modules linked in: rfcomm ccm snd_ctl_led snd_hda_codec_realtek snd_hda_codec_generic nvidia_uvm(POE) cmac algif_hash algif_skcipher af_alg bnep intel_tcc_cooling nvidia_drm(POE) x86_pkg_temp_thermal intel_powerclamp nvidia_modeset(POE) coretemp kvm_intel kvm irqbypass crct10dif_pclmul polyval_clmulni polyval_generic ghash_clmulni_intel sha512_ssse3 aesni_intel crypto_simd cryptd snd_soc_avs nvidia(POE) snd_soc_hda_codec snd_hda_ext_core snd_soc_core snd_hda_codec_hdmi binfmt_misc snd_compress ac97_bus snd_pcm_dmaengine snd_hda_intel snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec rapl hid_generic mei_hdcp mei_pxp intel_rapl_msr nls_iso8859_1 snd_hda_core snd_hwdep ath10k_pci i915 ath10k_core snd_pcm ath snd_seq_midi snd_seq_midi_event drm_buddy mac80211 ttm uvcvideo snd_rawmidi dell_wmi videobuf2_vmalloc drm_display_helper videobuf2_memops snd_seq btusb processor_thermal_device_pci_legacy cec btrtl intel_cstate videobuf2_v4l2 joydev input_leds btbcm snd_seq_device
[   60.327967]  processor_thermal_device rc_core processor_thermal_rfim cfg80211 snd_timer btintel videodev dell_smbios dcdbas btmtk drm_kms_helper usbhid videobuf2_common processor_thermal_mbox i2c_algo_bit dell_wmi_descriptor ledtrig_audio intel_wmi_thunderbolt wmi_bmof hid serio_raw mc bluetooth mxm_wmi snd processor_thermal_rapl mei_me intel_rapl_common syscopyarea sysfillrect libarc4 soundcore ecdh_generic ee1004 mei sysimgblt intel_soc_dts_iosf ecc intel_pch_thermal int3403_thermal int340x_thermal_zone mac_hid intel_hid int3400_thermal acpi_pad acpi_thermal_rel sparse_keymap sch_fq_codel msr parport_pc ppdev lp ramoops parport reed_solomon pstore_blk pstore_zone drm efi_pstore ip_tables x_tables autofs4 nvme ahci nvme_core xhci_pci i2c_i801 alx crc32_pclmul psmouse i2c_smbus nvme_common libahci mdio xhci_pci_renesas video wmi
[   60.328027] CPU: 7 PID: 329 Comm: plymouthd Tainted: P           OEL     6.2.0-26-generic #26~22.04.1-Ubuntu
[   60.328029] Hardware name: Alienware Alienware 15 R3/Alienware 15 R3, BIOS 1.10.0 07/21/2020
[   60.328030] RIP: 0010:_nv001596kms+0x0/0x80 [nvidia_modeset]
[   60.328065] Code: 48 48 8b 53 28 e9 e5 fd ff ff 45 31 c0 e9 e6 fc ff ff 49 c7 44 24 48 00 00 00 00 48 8b 53 28 e9 96 fd ff ff 66 0f 1f 44 00 00 <f3> 0f 1e fa 55 48 89 e5 41 55 49 89 fd 41 54 49 89 f4 53 48 8d 5f
[   60.328067] RSP: 0018:ffffa7b040433558 EFLAGS: 00000282
[   60.328069] RAX: ffffffffc56efce0 RBX: ffff92cccf488208 RCX: ffff92cccdcd68c8
[   60.328070] RDX: ffff92ccc394cc08 RSI: ffff92ccc394cc08 RDI: ffff92cccf488208
[   60.328071] RBP: ffffa7b0404335a0 R08: 0000000000000000 R09: 0000000000000000
[   60.328072] R10: 0000000000000000 R11: 0000000000000000 R12: ffff92ccc394cc08
[   60.328073] R13: ffff92ccce142008 R14: ffff92ccce142168 R15: 0000000000000000
[   60.328075] FS:  00007fbe874c7440(0000) GS:ffff92d42edc0000(0000) knlGS:0000000000000000
[   60.328076] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   60.328077] CR2: 00007f47e02f3000 CR3: 0000000117ad8005 CR4: 00000000003706e0
[   60.328079] Call Trace:
[   60.328080]  <TASK>
[   60.328081]  ? _nv001165kms+0x82/0x3a0 [nvidia_modeset]
[   60.328112]  ? nvkms_call_rm+0x5d/0x90 [nvidia_modeset]
[   60.328128]  _nv002331kms+0x145/0x210 [nvidia_modeset]
[   60.328152]  _nv000529kms+0x160/0x1b0 [nvidia_modeset]
[   60.328173]  _nv002766kms+0x4bf6/0x4cd0 [nvidia_modeset]
[   60.328198]  ? _nv000355kms+0x100/0x100 [nvidia_modeset]
[   60.328213]  nvKmsIoctl+0xf9/0x270 [nvidia_modeset]
[   60.328228]  ? _raw_spin_lock_irqsave+0xe/0x20
[   60.328232]  nvkms_ioctl_from_kapi+0x6e/0xd0 [nvidia_modeset]
[   60.328247]  _nv000019kms+0x368/0x890 [nvidia_modeset]
[   60.328272]  ? nvkms_free+0x26/0x30 [nvidia_modeset]
[   60.328287]  ? _nv000019kms+0x388/0x890 [nvidia_modeset]
[   60.328313]  nv_drm_atomic_apply_modeset_config.isra.0+0x2f1/0x520 [nvidia_drm]
[   60.328320]  ? nv_drm_atomic_apply_modeset_config.isra.0+0x401/0x520 [nvidia_drm]
[   60.328327]  nv_drm_atomic_commit+0xba/0x350 [nvidia_drm]
[   60.328333]  ? drm_atomic_check_only+0x1ad/0x400 [drm]
[   60.328360]  drm_atomic_commit+0x96/0xd0 [drm]
[   60.328379]  ? __pfx___drm_printfn_info+0x10/0x10 [drm]
[   60.328408]  nv_drm_atomic_helper_disable_all+0x23d/0x310 [nvidia_drm]
[   60.328414]  nv_drm_master_drop+0x28/0x70 [nvidia_drm]
[   60.328419]  drm_dropmaster_ioctl+0xe4/0x160 [drm]
[   60.328439]  ? __pfx_drm_dropmaster_ioctl+0x10/0x10 [drm]
[   60.328459]  drm_ioctl_kernel+0xc0/0x160 [drm]
[   60.328488]  ? raw_spin_rq_unlock+0x10/0x40
[   60.328492]  drm_ioctl+0x27b/0x4c0 [drm]
[   60.328521]  ? __pfx_drm_dropmaster_ioctl+0x10/0x10 [drm]
[   60.328541]  ? schedule+0x68/0x110
[   60.328545]  nv_drm_ioctl+0x48/0x3a0 [nvidia_drm]
[   60.328552]  __x64_sys_ioctl+0x9a/0xe0
[   60.328555]  do_syscall_64+0x59/0x90
[   60.328558]  ? syscall_exit_to_user_mode+0x2a/0x50
[   60.328560]  ? do_syscall_64+0x69/0x90
[   60.328561]  ? exit_to_user_mode_prepare+0x3b/0xd0
[   60.328564]  ? syscall_exit_to_user_mode+0x2a/0x50
[   60.328566]  ? do_syscall_64+0x69/0x90
[   60.328568]  ? exit_to_user_mode_prepare+0x3b/0xd0
[   60.328570]  ? syscall_exit_to_user_mode+0x2a/0x50
[   60.328572]  ? do_syscall_64+0x69/0x90
[   60.328574]  ? do_syscall_64+0x69/0x90
[   60.328575]  ? syscall_exit_to_user_mode+0x2a/0x50
[   60.328577]  ? do_syscall_64+0x69/0x90
[   60.328579]  ? do_syscall_64+0x69/0x90
[   60.328581]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
[   60.328584] RIP: 0033:0x7fbe8731aaff
[   60.328586] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
[   60.328587] RSP: 002b:00007ffe0f929010 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[   60.328589] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fbe8731aaff
[   60.328590] RDX: 0000000000000000 RSI: 000000000000641f RDI: 000000000000000b
[   60.328591] RBP: 000000000000641f R08: 000055e418227180 R09: 0000000000000000
[   60.328593] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000009
[   60.328594] R13: 000000000000000b R14: 000055e41820a3e0 R15: 000055e418227180
[   60.328596]  </TASK>
  • 如果我尝试使用 进入另一个虚拟终端,ctrl+alt+Fx我什么也看不到。背光保持关闭状态,用手电筒照屏幕也看不到任何暗淡的图像。所以这不是只是背光灯关闭。

使用nvidia-drm.modeset=1行为 #1 进行引导:

  • 出现登录屏幕,UI 元素按预期工作。

  • 此阶段的虚拟终端与以下情况不同nvidia-drm.modeset=0

    • 点击ctrl+alt+Fx(其中 x > 1) 进入黑屏并带有背光离开
    • 这次我无法回到 VT1。(或者如果我可以,我看不到我已经回到 VT1,因为背光仍然关闭)。
  • 当我尝试登录并立即输入凭据时,屏幕变黑,没有背光。

    • 片刻之后,风扇开始疯狂运转。似乎又有什么东西在努力运转。
    • 此时我可以 ssh 到笔记本电脑,并top显示它Xorg占用了 100% 的 CPU。
    • dmesg显示Xorg被阻塞,等待nvidia_modeset。此错误不断重复:
[  140.254729] watchdog: BUG: soft lockup - CPU#2 stuck for 86s! [Xorg:1059]
[  140.254735] Modules linked in: rfcomm ccm snd_ctl_led snd_hda_codec_realtek snd_hda_codec_generic nvidia_uvm(POE) cmac algif_hash algif_skcipher af_alg bnep intel_tcc_cooling x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul polyval_clmulni polyval_generic nvidia_drm(POE) ghash_clmulni_intel sha512_ssse3 aesni_intel crypto_simd nvidia_modeset(POE) cryptd binfmt_misc nls_iso8859_1 rapl snd_soc_avs snd_soc_hda_codec snd_hda_ext_core nvidia(POE) hid_generic mei_hdcp mei_pxp intel_rapl_msr snd_soc_core snd_compress ac97_bus snd_hda_codec_hdmi snd_pcm_dmaengine i915 ath10k_pci snd_hda_intel ath10k_core snd_intel_dspcfg snd_intel_sdw_acpi snd_hda_codec ath snd_hda_core uvcvideo snd_hwdep drm_buddy videobuf2_vmalloc ttm videobuf2_memops snd_pcm videobuf2_v4l2 snd_seq_midi joydev intel_cstate mac80211 snd_seq_midi_event drm_display_helper input_leds snd_rawmidi videodev usbhid btusb dell_wmi btrtl snd_seq cec dell_smbios btbcm dcdbas btintel btmtk
[  140.254841]  videobuf2_common snd_seq_device ledtrig_audio intel_wmi_thunderbolt mxm_wmi wmi_bmof ee1004 dell_wmi_descriptor serio_raw hid mc bluetooth snd_timer processor_thermal_device_pci_legacy cfg80211 rc_core processor_thermal_device snd ecdh_generic processor_thermal_rfim ecc drm_kms_helper libarc4 soundcore processor_thermal_mbox i2c_algo_bit syscopyarea processor_thermal_rapl mei_me intel_rapl_common sysfillrect intel_pch_thermal sysimgblt mei intel_soc_dts_iosf int3403_thermal int340x_thermal_zone intel_hid int3400_thermal mac_hid sparse_keymap acpi_thermal_rel acpi_pad sch_fq_codel msr parport_pc ppdev lp ramoops parport reed_solomon pstore_blk pstore_zone drm efi_pstore ip_tables x_tables autofs4 nvme ahci nvme_core i2c_i801 alx xhci_pci crc32_pclmul psmouse i2c_smbus nvme_common mdio libahci xhci_pci_renesas video wmi
[  140.254885] CPU: 2 PID: 1059 Comm: Xorg Tainted: P           OEL     6.2.0-26-generic #26~22.04.1-Ubuntu
[  140.254887] Hardware name: Alienware Alienware 15 R3/Alienware 15 R3, BIOS 1.10.0 07/21/2020
[  140.254889] RIP: 0010:_nv001596kms+0x0/0x80 [nvidia_modeset]
[  140.254924] Code: 48 48 8b 53 28 e9 e5 fd ff ff 45 31 c0 e9 e6 fc ff ff 49 c7 44 24 48 00 00 00 00 48 8b 53 28 e9 96 fd ff ff 66 0f 1f 44 00 00 <f3> 0f 1e fa 55 48 89 e5 41 55 49 89 fd 41 54 49 89 f4 53 48 8d 5f
[  140.254925] RSP: 0018:ffffab6d43513a00 EFLAGS: 00000282
[  140.254927] RAX: ffffffffc55edce0 RBX: ffff8aeb044a0e08 RCX: ffff8aeb14df7608
[  140.254928] RDX: ffff8aeb0434c808 RSI: ffff8aeb0434c808 RDI: ffff8aeb044a0e08
[  140.254929] RBP: ffffab6d43513a48 R08: 0000000000000000 R09: 0000000000000000
[  140.254930] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8aeb0434c808
[  140.254931] R13: ffff8aeb049c2808 R14: ffff8aeb049c2968 R15: 0000000000000000
[  140.254933] FS:  00007f528f02ba80(0000) GS:ffff8af26ec80000(0000) knlGS:0000000000000000
[  140.254934] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  140.254935] CR2: 00007ffd06139000 CR3: 0000000118a98004 CR4: 00000000003706e0
[  140.254937] Call Trace:
[  140.254938]  <TASK>
[  140.254939]  ? _nv001165kms+0x82/0x3a0 [nvidia_modeset]
[  140.254970]  ? nvkms_call_rm+0x5d/0x90 [nvidia_modeset]
[  140.254985]  _nv002331kms+0x145/0x210 [nvidia_modeset]
[  140.255010]  _nv000529kms+0x160/0x1b0 [nvidia_modeset]
[  140.255030]  _nv002766kms+0x4bf6/0x4cd0 [nvidia_modeset]
[  140.255055]  ? _nv000355kms+0x100/0x100 [nvidia_modeset]
[  140.255070]  nvKmsIoctl+0xf9/0x270 [nvidia_modeset]
[  140.255084]  ? _raw_spin_lock_irqsave+0xe/0x20
[  140.255088]  nvkms_ioctl+0x121/0x190 [nvidia_modeset]
[  140.255103]  nvidia_frontend_unlocked_ioctl+0x55/0xa0 [nvidia]
[  140.255352]  __x64_sys_ioctl+0x9a/0xe0
[  140.255356]  do_syscall_64+0x59/0x90
[  140.255359]  ? handle_mm_fault+0x119/0x330
[  140.255362]  ? lock_mm_and_find_vma+0x44/0x250
[  140.255364]  ? do_user_addr_fault+0x1d0/0x640
[  140.255367]  ? exit_to_user_mode_prepare+0x3b/0xd0
[  140.255370]  ? irqentry_exit_to_user_mode+0x9/0x20
[  140.255372]  ? irqentry_exit+0x43/0x50
[  140.255374]  ? exc_page_fault+0x92/0x1b0
[  140.255376]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
[  140.255379] RIP: 0033:0x7f528f31aaff
[  140.255381] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00
[  140.255383] RSP: 002b:00007ffd061336e0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[  140.255385] RAX: ffffffffffffffda RBX: 00000000c0106d00 RCX: 00007f528f31aaff
[  140.255386] RDX: 00007ffd06133740 RSI: 00000000c0106d00 RDI: 0000000000000013
[  140.255387] RBP: 00007ffd06133740 R08: 0000000000000000 R09: 00005654791362c0
[  140.255388] R10: 00007ffd0614aab0 R11: 0000000000000246 R12: 0000000000000013
[  140.255389] R13: 00007f528ea1cbc8 R14: 00007ffd06136048 R15: 0000000000000003
[  140.255392]  </TASK>
  • 如果我不立即登录,而是等待登录屏幕上的屏幕变暗事件(屏幕睡眠超时?)足够长的时间,登录屏幕就会消失,背光灯会关闭,并且风扇会疯狂转动。
    • top显示Xorg占用了 100% 的 CPU。
    • dmesg显示Xorg被阻塞并等待nvidia_modeset,并且出现与上面相同的重复软锁定调用跟踪。

启动时出现nvidia-drm.modeset=1行为 #2:极其罕见;到目前为止,只发生过一次。

  • 出现登录屏幕,UI 元素按预期工作。
  • 登录后,Xorg/gnome 启动,我可以使用桌面 GUI,好像没有任何问题!
  • 从 gnome,我可以使用 ctrl+alt+F1 切换回登录屏幕,然后从那里使用 切换回我登录的 gnome 会话ctrl+alt+F2
  • 如果我尝试使用 ctrl+alt+Fx(其中 x > 2)进入另一个虚拟终端,我可以看到内核日志的末尾,但它不是一个可用的终端。没有登录提示,输入时什么也没有显示。

我尝试过的事情

  • 添加nomodeset内核参数
    • 结果:无效果。
  • 切换到 nvidia-driver 525
    • 结果:无效果。
  • 卸载 nvidia 软件包(apt remove --purge '*nvidia*'apt autoremove)并尝试使用 nouveau 驱动程序
    • 结果:启动时,屏幕为黑色,背光打开。loginctl报告称无论什么东西都在 Wayland 上运行,与上述所有实验不同,这些实验都报告 x11。我无法使用上面描述的“假装那里有一个登录屏幕”技巧。不知道这是因为 Wayland 登录屏幕不同,还是这次根本没有登录屏幕。

在注意到 nvidia-drm.modeset 模式之前,或者有时即使没有显示登录屏幕我也可以登录之前,我也尝试了所有这些

  • 切换到 nvidia-driver 470 和 390(非服务器版本)
    • 结果:没有图形、背光或无法切换到另一个 VT
  • 使英特尔显卡成为主要nvidia-prime
    • 结果:没有图形、背光或无法切换到另一个 VT
  • 禁用 Wayland/etc/gdm3/custom.conf
    • 结果:没有图形、背光或无法切换到另一个 VT
  • 完全重新安装 ubuntu(这需要使用安全图形模式 - 正常模式在安装程序中产生相同的行为)

升级前行为

多年来,我一直在这台笔记本电脑上使用 gnome GUI 和专有 nvidia 驱动程序。我从未遇到过plymouth启动画面、登录画面或 gnome 桌面的问题。但是...

免责声明 - 我不太了解升级前的状态。它发生在我不在场的一夜之间。遗憾的是,我不知道 ubuntu 版本(可能是 20.04?)、nvidia 驱动程序版本、是 wayland 还是 X11,或者内核版本。我希望我能为您提供这些信息 :(。当我重新安装 Ubuntu 22.04 并徒劳地尝试使其正常工作时,所有这些历史记录都被丢弃了 :(

相关内容