acpi_os_name="字符串"告诉ACPI BIOS操作系统的名称。
常用于哄骗有缺陷的BIOS,让其以为运行的是Windows系统而不是Linux系统。
"Linux" = Linux
"Microsoft Windows" = Windows 98
"Windows 2000" = Windows 2000
"Windows 2001" = Windows XP
"Windows 2001 SP2" = Windows XP SP2
"Windows 2001.1" = Windows Server 2003
"Windows 2001.1 SP1" = Windows Server 2003 SP1
"Windows 2006" = Windows Vista
"Windows 2006 SP1" = Windows Vista SP1
"Windows 2006.1" = Windows Server 2008
"Windows 2009" = Windows 7 / Windows Server 2008 R2
"Windows 2012" = Windows 8 / Windows Server 2012
"Windows 2013" = Windows 8.1 / Windows Server 2012 R2[HW,ACPI]
acpi_osi="字符串"对于较新的内核(Linux-2.6.23之后)而言,当BIOS询问内核:"你是Linux吗?",内核都会回答"No",但历史上(Linux-2.6.22及更早版本)内核会如实回答"Yes",结果造成很多BIOS兼容性问题(主要是电源管理方面)。具体故事的细节请到内核源码文件drivers/acpi/osl.c中搜索"The story of _OSI(Linux)"注释。
此选项用于修改内核中的操作系统接口字符串(_OSI string)列表默认值,这样当BIOS向内核询问:"你是xxx吗?"的时候,内核就可以根据修改后的列表中是否存在"xxx"回答"Yes"或"No"了,主要用于解决BIOS兼容性问题导致的故障(例如屏幕亮度调整)。
acpi_osi="Linux"表示添加"Linux";
acpi_osi="!Linux"表示删除"Linux";
acpi_osi=!* 表示删除所有字符串(v3.13新增),可以和多个acpi_osi="Linux"格式联合使用;
acpi_osi=! 表示删除所有内置的字符串(v3.13新增),可以和多个acpi_osi="Linux"格式联合使用;
acpi_osi= 表示禁用所有字符串,仅可单独使用(不能联合使用)。
这两天我帮朋友安装deepin系统,两台笔记本都是960的N卡,同样遇到了卡黑屏无法安装,即使禁用显卡加nomodeset参数成功安装后仍然存在问题。我在论坛中找到了snake同学写的方法,成功解决了进不了系统,卡黑屏的问题。
这里我做一下补充,在修改/boot/grub/grub.cfg时,一些内核参数的变动都会导致我们所加的内核参数失效被还原,这说明并未彻底更改内核参数。
执行: sudo nano /etc/default/grub
在 " quiet splash 后面加 acpi_osi=! acpi_osi=\"Windows 2009\"
特别注意的是需要加 " \ " ,进行转义
执行: sudo update-grub
更新所有grub有关参数
通过以上改进,系统可较为稳定的运行
原理我查了一下有关Linux内核参数的资料,找到如下:
acpi_os_name="字符串"告诉ACPI BIOS操作系统的名称。
常用于哄骗有缺陷的BIOS,让其以为运行的是Windows系统而不是Linux系统。
"Linux" = Linux
"Microsoft Windows" = Windows 98
"Windows 2000" = Windows 2000
"Windows 2001" = Windows XP
"Windows 2001 SP2" = Windows XP SP2
"Windows 2001.1" = Windows Server 2003
"Windows 2001.1 SP1" = Windows Server 2003 SP1
"Windows 2006" = Windows Vista
"Windows 2006 SP1" = Windows Vista SP1
"Windows 2006.1" = Windows Server 2008
"Windows 2009" = Windows 7 / Windows Server 2008 R2
"Windows 2012" = Windows 8 / Windows Server 2012
"Windows 2013" = Windows 8.1 / Windows Server 2012 R2[HW,ACPI]
acpi_osi="字符串"对于较新的内核(Linux-2.6.23之后)而言,当BIOS询问内核:"你是Linux吗?",内核都会回答"No",但历史上(Linux-2.6.22及更早版本)内核会如实回答"Yes",结果造成很多BIOS兼容性问题(主要是电源管理方面)。具体故事的细节请到内核源码文件drivers/acpi/osl.c中搜索"The story of _OSI(Linux)"注释。
此选项用于修改内核中的操作系统接口字符串(_OSI string)列表默认值,这样当BIOS向内核询问:"你是xxx吗?"的时候,内核就可以根据修改后的列表中是否存在"xxx"回答"Yes"或"No"了,主要用于解决BIOS兼容性问题导致的故障(例如屏幕亮度调整)。
acpi_osi="Linux"表示添加"Linux";
acpi_osi="!Linux"表示删除"Linux";
acpi_osi=!* 表示删除所有字符串(v3.13新增),可以和多个acpi_osi="Linux"格式联合使用;
acpi_osi=! 表示删除所有内置的字符串(v3.13新增),可以和多个acpi_osi="Linux"格式联合使用;
acpi_osi= 表示禁用所有字符串,仅可单独使用(不能联合使用)。