从 Linux 转储 VGA BIOS

从 Linux 转储 VGA BIOS

有人知道如何转储vga固件吗?我努力了这里但不起作用。任何人都知道如何转储 vga BIOS 或者可以尝试链接中的命令是否适合您?

非常感谢。

答案1

这是一个很棒的话题。下面是我获取 vbios.rom 的方法库班图 20.04 LTS:

起初,我不确定在哪里寻找 rom 文件,幸运的是,有一个命令可以查找并显示任何 rom 文件:

clemens@iMac-4:~$ find /sys/devices -name rom

这向我显示了两个文件:

/sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/rom
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom

但哪一个才是正确的呢?为此,还有一个很好的命令:

clemens@iMac-4:~$ lspci | grep 02:00.0
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)

打错了,这个好像是Marvell网卡的rom。另一次尝试...

clemens@iMac-4:~$ lspci | grep 01:00.0
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV530/M56-P [Mobility Radeon X1600]

我们到了!这是 AMD/ATI Mobility Radeon X1600 GPU 卡的视频 BIOS!

因此,我执行了其他两个命令,但首先使用了更符合逻辑的语法:

clemens@iMac-4:~$ echo 1 | sudo tee /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom
1

那个刚刚给我看了一个“1”,-很好。但第二个最后给了我 vbios.rom 文件,它直接落在我的用户文件夹:

sudo cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom > vbios.rom

最后一点,-也会在下面尝试一下苹果系统。也许这在那里也有效。更新:这在 Mac OS 上不起作用,因为 Mac OS 不支持该sysfs功能。

来源:

Reddit - 转储 VGA BIOS

Colin Ian King - 使用 PCI sysfs 接口转储视频 BIOS ROM

答案2

root@gonzo:/home/jasen# dd if=/dev/mem bs=64k skip=12 count=1 | strings | head
1+0 records in
1+0 records out
65536 bytes (66 kB, 64 KiB) copied, 8.9787e-05 s, 730 MB/s
K7400
VIDEO 
IBM VGA Compatible
P10/24/11
DPMIDl
3GV-N560OC-1GI/F32
Version 70.24.21.00.02 
Copyright (C) 1996-2011 NVIDIA Corp.
GF104B Board - 10400050

对我来说看起来像 VGA ROM。

答案3

如果您发出命令来查找您的 ROM:

find /sys/devices -name rom

结果将与此类似:

/sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0/0000:66:08.0/0000:67:00.0/0000:68:00.0/0000:69:00.0/rom
/sys/devices/pci0000:64/0000:64:00.0/0000:65:00.0/0000:66:10.0/0000:6a:00.0/0000:6b:00.0/0000:6c:00.0/rom
/sys/devices/pci0000:16/0000:16:00.0/0000:17:00.0/0000:18:08.0/0000:19:00.0/0000:1a:10.0/0000:22:00.0/0000:23:00.0/0000:24:00.0/rom
/sys/devices/pci0000:16/0000:16:00.0/0000:17:00.0/0000:18:08.0/0000:19:00.0/0000:1a:04.0/0000:1b:00.0/rom

假设您想从以下位置复制 ROM 0000:24:00.0

sudo su
setpci -s 0000:24:00.0 COMMAND=2:2 (manually manipulate the memory enable bit with setpci)
export PATH_TO_ROM=/sys/devices/pci0000:16/0000:16:00.0/0000:17:00.0/0000:18:08.0/0000:19:00.0/0000:1a:10.0/0000:22:00.0/0000:23:00.0/0000:24:00.0/rom
echo 1 > $PATH_TO_ROM
mkdir -p /var/lib/libvirt/vbios/
cat $PATH_TO_ROM > /var/lib/libvirt/vbios/gpu.rom
echo 0 > $PATH_TO_ROM
setpci -s 0000:24:00.0 COMMAND=0:2 (Clear memory enable bit with setpci)
exit

相关内容