需要研究建议 - 在Linux下操作SMBIOS

时间:2016-07-25 08:00:19

标签: linux bios

我有一台笔记本电脑(MSI GT72S),配有手动GPU开关按钮。它可以帮助我在Nvidia GPU和Intel之间切换,以便将被禁用的一个隐藏到操作系统中。

但是,此功能需要名为SCM的驱动程序,支持Windows。当我按下Windows下的按钮时,会出现一个弹出窗口,要求我重新启动机器,以便它可以切换到另一个GPU。

这对我来说真的是一个PIA,因为我经常使用Linux,每当我需要切换GPU时,我必须重新启动进入Windows,然后重新启动。所以我想在Linux下存档这个功能。

这似乎是通过编辑SMBIOS的块来实现的(不确定)。启用Intel GPU后,此块将为:

Handle 0x0052, DMI type 221, 96 bytes
OEM-specific Type
        Header and Data:
                DD 60 52 00 0D 01 00 00 00 00 00 00 02 00 FF FF
                FF FF FF 03 04 FF FF FF FF FF 05 06 FF FF FF FF
                FF 07 08 FF FF FF FF FF 09 00 00 00 00 00 00 0A
                00 FF FF FF FF FF 0B 00 FF FF 00 00 00 0C 00 00
                09 00 35 10 0D 00 FF FF FF FF FF 0E 00 FF FF FF
                FF FF 0F 00 FF FF FF FF FF 10 11 01 02 02 03 00
        Strings:
                Lan Phy Version
                Sensor Firmware Version
                Debug Mode Status
                Enabled 
                Performance Mode Status
                Disabled
                Debug Use USB(Disabled:Serial)
                Disabled
                ICC Overclocking Version
                UNDI Version
                EC FW Version
                GOP Version
                BIOS Guard Version
                Base EC FW Version
                EC-EC Protocol Version
                Royal Park Version
                BP1.2.2.0_RP03

...当启用Nvidia GPU时,

Handle 0x0052, DMI type 221, 96 bytes
OEM-specific Type
        Header and Data:
                DD 60 52 00 0D 01 00 00 00 00 00 00 02 00 FF FF
                FF FF FF 03 04 FF FF FF FF FF 05 06 FF FF FF FF
                FF 07 08 FF FF FF FF FF 09 00 00 00 00 00 00 0A
                00 FF FF FF FF FF 0B 00 FF FF 00 00 00 0C 00 FF
                FF FF FF FF 0D 00 FF FF FF FF FF 0E 00 FF FF FF
                FF FF 0F 00 FF FF FF FF FF 10 11 01 02 02 03 00

但我之前没有触及过这些东西,我甚至不知道从哪里开始。我用谷歌搜索了它,但发现的材料很少。所以我现在强烈要求一些建议。任何帮助都将受到高度赞赏,谢谢!

1 个答案:

答案 0 :(得分:0)

看起来这是一个OEM定义的结构(类型221),它报告状态和版本信息。此信息由BIOS在POST期间构建,并发布到内存以供基于操作系统的管理代理(如Linux中的dmidecode)读取。更改该信息不会改变基础配置。