我不需要插入nouveau
或安装专有驱动程序的“帮助”。问题是关于nvidiafb
.谢谢。
我在 Linux 6.9-rc2 上使用 nvidia GT710 GPU。我想nvidiafb
为我的旧 GPU 使用简单的驱动程序。在该系统上,我只需要帧缓冲区,不需要其他任何东西(没有 DRI)。但nvidiafb
不起作用,它崩溃了。
# modprobe nvidiafb
Killed
#
nvidiafb: Device ID: 10de1287
Console: switching to colour dummy device 80x25
nvidiafb 0000:03:00.0: vgaarb: deactivate vga console
nvidiafb: CRTC0 analog not found
nvidiafb: CRTC1 analog not found
nvidiafb: Unable to detect display type...
...Using default of CRT
nvidiafb: Unable to detect which CRTCNumber...
...Defaulting to CRTCNumber 0
nvidiafb: Using CRT on CRTC 0
fbcon: NV28 (fb0) is primary device
divide error: 0000 [#1] PREEMPT_RT SMP
CPU: 0 PID: 194915 Comm: modprobe Tainted: G OE 6.9.0-rc2-home-rt+ #3 Hardware name: OEM X79G/X79G, BIOS 4.6.5 08/02/2022
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000 R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020 R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068
FS: 00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0
Call Trace:
<TASK>
? show_regs+0x6b/0x80
? __die_body+0x24/0x70
? die+0x42/0x70
? do_trap+0xde/0x100
? do_error_trap+0x73/0xa0
? nvGetClocks+0x18f/0x290 [nvidiafb]
? exc_divide_error+0x3f/0x60
? nvGetClocks+0x18f/0x290 [nvidiafb]
? asm_exc_divide_error+0x1f/0x30
? nvGetClocks+0x18f/0x290 [nvidiafb]
NVCalcStateExt+0x1da/0x9b0 [nvidiafb]
? set_inverse_trans_unicode+0xd0/0x100
? kmalloc_trace+0xac/0x280
nvidiafb_set_par+0x4a3/0xa40 [nvidiafb]
fbcon_init+0x2af/0x600
visual_init+0xf2/0x190
do_bind_con_driver+0x1d2/0x4a0
do_take_over_console+0x144/0x240
? vprintk_default+0x21/0x30
do_fbcon_takeover+0x78/0x130
do_fb_registered+0x139/0x270
fbcon_fb_registered+0x3b/0x90
? fb_add_videomode+0x81/0xf0
register_framebuffer+0x20a/0x300
nvidiafb_probe+0x6a4/0xad0 [nvidiafb]
? rt_spin_unlock+0x1c/0x50
local_pci_probe+0x4f/0xb0
pci_device_probe+0xcc/0x280
really_probe+0xff/0x390
__driver_probe_device+0x8a/0x170
driver_probe_device+0x23/0xb0
__driver_attach+0xc9/0x190
? __pfx___driver_attach+0x10/0x10
bus_for_each_dev+0x80/0xd0
driver_attach+0x22/0x30
bus_add_driver+0x123/0x230
driver_register+0x68/0x130
? __pfx_nvidiafb_init+0x10/0x10 [nvidiafb]
__pci_register_driver+0x6e/0x80
nvidiafb_init+0x37/0x50 [nvidiafb]
do_one_initcall+0x4c/0x310
? do_init_module+0x28/0x270
? kmalloc_trace+0xac/0x280
do_init_module+0x6a/0x270
load_module+0x221b/0x22e0
init_module_from_file+0x9c/0xe0
? init_module_from_file+0x9c/0xe0
idempotent_init_module+0x173/0x230
__x64_sys_finit_module+0x61/0xc0
do_syscall_64+0x79/0x120
? ksys_mmap_pgoff+0x11c/0x260
? syscall_exit_to_user_mode+0x87/0x1c0
? do_syscall_64+0x85/0x120
? do_syscall_64+0x85/0x120
entry_SYSCALL_64_after_hwframe+0x71/0x79
RIP: 0033:0x7fa3af75988d
Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 73 b5 0f 00 f7 d8 64 89 01 48 RSP: 002b:00007ffe8864c978 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX: 0000563b56dcbf80 RCX: 00007fa3af75988d RDX: 0000000000000000 RSI: 0000563b56dbacd2 RDI: 0000000000000005 RBP: 0000000000040000 R08: 0000000000000000 R09: 0000000000000002 R10: 0000000000000005 R11: 0000000000000246 R12: 0000563b56dbacd2 R13: 0000563b56dcc1b0 R14: 0000563b56dcc950 R15: 0000563b56dc5110
</TASK> Modules linked in: nvidiafb(+) vgastate fb_ddc vmnet(OE) vmw_vsock_vmci_transport vsock vmw_vmci vmmon(OE) ip6t_REJECT nf_reject_ipv6 ip6t_rt ipt_REJECT nf_reject_ipv4 xt_recent nft_limit xt_limit xt_addrtype xt_tcpudp xt_pkttype nft_chain_nat xt_MASQUERADE xt_nat nf_nat xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nft_compat nf_tables nfnetlink binfmt_misc intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel snd_hda_codec_realtek snd_hda_codec_generic snd_hda_scodec_component snd_hda_codec_hdmi nls_iso8859_1 snd_hda_intel snd_intel_dspcfg input_leds snd_intel_sdw_acpi kvm joydev snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq rapl snd_seq_device intel_cstate snd_timer serio_raw pcspkr snd ioatdma soundcore dca mac_hid sch_fq_codel dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua parport_pc ppdev lp parport efi_pstore ip_tables x_tables autofs4 btrfs raid10 raid456 async_raid6_recov async_memcpy
async_pq async_xor async_tx raid1 raid0 gpu_sched drm_gpuvm drm_exec mxm_wmi video wmi i2c_algo_bit drm_ttm_helper ttm drm_display_helper cec rc_core drm_kms_helper cdc_ether usbnet drm hid_generic psmouse r8152 usbhid crct10dif_pclmul crc32_pclmul uas ghash_clmulni_intel sha512_ssse3 usb_storage hid sha256_ssse3 ahci sha1_ssse3 mii r8169 i2c_i801 libahci lpc_ich i2c_smbus realtek aesni_intel crypto_simd cryptd
---[ end trace 0000000000000000 ]---
RIP: 0010:nvGetClocks+0x18f/0x290 [nvidiafb]
Code: 0f 84 91 00 00 00 3d 30 03 00 00 0f 84 86 00 00 00 41 8b 89 04 05 00 00 0f b6 c5 44 0f b6 c9 c1 e9 10 0f af c2 31 d2 83 e1 0f <41> f7 f1 d3 e8 89 06 48 8b 87 a8 12 00 00 8b 88 00 05 00 00 0f b6
RSP: 0018:ffffa681b17e74e0 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff921541eb4518 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffffa681b17e7520 RDI: ffff921541eb4420
RBP: ffffa681b17e74e8 R08: ffffa681b17e7524 R09: 0000000000000000
R10: ffff921541eb4420 R11: 00000000002e18c8 R12: 0000000000000020
R13: 0000000000000008 R14: 0000000000000008 R15: 0000000000000068
FS: 00007fa3af639c40(0000) GS:ffff922406200000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f2f8401f000 CR3: 00000010275bc001 CR4: 00000000001706f0
note: modprobe[194915] exited with preempt_count 2
到底是什么问题导致它无法与我的 GPU 一起正常工作?处的划分nvGetClocks+0x18f/0x290
位于video/fbdev/nvidia/nv_hw.c
,可能在这里(第 213 行)。对于这个特定的 GPU(而不是其他较旧的 GPU),除法的除数部分如何最终为零?
谢谢。
启动级别对比内核层
来自OP的评论:
我相信OP正在尝试通过内核级修复来修复启动级问题。需要记住的一些事情:
efivars
和 版本之类的工具grub
下一步是什么
因为 GOP 只能在预启动环境中访问,所以必须在预启动环境(又名 UEFI Shell)中设置分辨率,OP 似乎已经打败了我:
因此,我为未来的读者提供了一种创建 UEFI Shell 的方法。人们可以使用这种方法来执行 shell 脚本(以设置 PC 的启动方式)、设置分辨率、修复损坏的启动选项等,而无需任何操作系统。我可以将它们写在这里,但为了篇幅和简洁起见,请按照以下步骤 1 到 7 进行操作:KilianKegel/Howto-create-a-UEFI-Shell-Boot-Drive。 - 请注意,您可以通过
shell.efi
从EDK2 发布页面下载文件将步骤 3 替换为更新的稳定版本。确定可用分辨率
startup.nsh
完成后,在提示符处输入gop mode
gop set x
的x
数字***。注
80x25
: ** 我相信如果我没记错的话,第一选择等于 的解决方案640x480
。*** 可能需要多次重新启动
set
才能选择所需的结果。现在我的决心已定
正如 OP 通过上面的评论指出的那样,请确保在使用完全基于 UEFI 的系统时,CSM 完全关闭。 CSM 被用来模拟基于 BIOS 的系统,直到 UEFI 协议被完全接受。
在我的问答中,要完全禁用 CSM,我必须启用 Windows 8.1/10 的 WHQL 支持,以便我的所有操作系统都可以在我的系统中看到 GOP 感知的 NVIDIA GeForce 1070,即使 FreeBSD 不需要Windows 驱动程序签名。我会让OP评论他们如何找到下面的6个额外的分辨率,因为在我开始写这个答案之前,我花了大约一个小时搜索令人惊讶的常见Aptio设置实用程序的屏幕截图,并且无法找到书面程序。
我们现在处于内核级别
OP 现在需要使用他们的操作系统的包管理器(他们从未说明过操作系统,但我猜测是基于 Debian 的),并发出:
sudo apt nvidia-driver
安装专有二进制 blob 的最新受支持版本,该版本将
470.xx.xx
包含在下载/安装中,应该是一个工具nvidia-xconfig
。如果不存在,请尝试:sudo apt nvidia-xconfig
该工具将写入一个
xorg.conf
文件,然后可以手动修改该文件。不幸的是,由于专有驱动程序,X.Org 中的自动检测将尝试安装该nv
驱动程序,这比该nouveau
驱动程序更糟糕,并且该nouveau
驱动程序不提供 3D 加速。根据下面的评论添加此内容
我意识到 OP 想在
fbdev
设备中运行 X.Org。我以我的方式回答这篇文章的原因(建议 OP 使用 NVIDIA 专有或nouveau
驱动程序)是因为 NVIDIA 开发人员拒绝创建允许其显卡“附加”到fbdev
或fbcon
内核驱动程序的代码,如早在 2016 年,开发人员就直接给出了答案。请注意,驱动程序的版本在这里没有实际意义,因为正如我在下面的评论中所述:Birdie的回答也证实了这一点。早在这篇文章发布之前,用户社区就一直在抱怨这个问题,并多次要求 NVIDIA 发布一个可供社区改进的开源驱动程序,但鉴于 NVIDIA 是一家营利性公司,我认为这种情况不会发生很快。