通过grub修改linux内核启动参数
Tofloor
poster avatar
老陌
deepin
2018-09-16 05:39
Author
这里记录几个常用的linux内核参数。
在开机的时候我们会发现有一个菜单让我们选择。



通过光标键可以高亮选择某个菜单,此时按e键可以编辑菜单中的内容(c键进入grub命令行),如:

  1. menuentry 'Deepin 15.7 GNU/Linux' --class deepin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b66d8ffa-aed9-466c-bc12-6bb801e45901' {
  2.         load_video
  3.         insmod gzio
  4.         if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
  5.         insmod part_gpt
  6.         insmod ext2
  7.         set root='hd2,gpt1'
  8.         if [ x$feature_platform_search_hint = xy ]; then
            else
  9.           search --no-floppy --fs-uuid --set=root 56a1a52b-599c-40c1-906a-8be908fb3ac4
  10.         fi
  11. linux        /vmlinuz-4.15.0-29deepin-generic root=UUID=b66d8ffa-aed9-466c-bc12-6bb801e45901 ro  splash quiet
  12. initrd        /initrd.img-4.15.0-29deepin-generic
  13. }
Copy the Code

我们发现有一行:


  1. linux        /vmlinuz-4.15.0-29deepin-generic root=UUID=b66d8ffa-aed9-466c-bc12-6bb801e45901 ro splash quiet
Copy the Code

这行表示加载linux内核文件,后面是内核的参数
  • root 告诉内核根分区设备
  • ro 表示在设备启动时为read-only,如果是rw表示read-write
  • splash 表示开机画面
  • quiet 示在启动过程中只有重要信息显示,类似硬件自检的消息不回显示
  • single 以单用户模式登录,一般用于修复系统,比如密码忘记了。


我们可以修改这些参数,之后按f10键启动系统。

Example:

1. 开机不显示画面,而显示一行行的字符信息:
  1. linux        /vmlinuz-4.15.0-29deepin-generic root=UUID=b66d8ffa-aed9-466c-bc12-6bb801e45901 ro
Copy the Code

2. 单用登录:
  1. linux        /vmlinuz-4.15.0-29deepin-generic root=UUID=b66d8ffa-aed9-466c-bc12-6bb801e45901 rw single init=/bin/bash
Copy the Code

3. 开机卡机的处理
  1. linux        /vmlinuz-4.15.0-29deepin-generic root=UUID=b66d8ffa-aed9-466c-bc12-6bb801e45901 ro  splash quiet  acpi_osi=! acpi="windows 2009"
Copy the Code

重点说一下最后一个,很多网友用笔记本装系统,重启机器就卡住了,用例3就可以解决大部分这样的情况。

其中ACPI就是高级配置与电源管理接口(Advanced Configuration and Power Interface)是提供操作系统与应用程序管理所有电源管理接口,包括了各种软件和硬件方面的规范。ACPI可以实现的功能包括:电源管理;性能管理;配置与即插即用;系统事件;温度管理;电池管理;SMBus控制器;嵌入式控制器。

这里windowss 2009表示windows 7或 windwos server 2008 R2。可以参考下面的列表:

cpi_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


acpi_osi=“字符串”
对于较新的内核而言,当BIOS询问内核:“你是Linux吗?”,内核都会回答"No",但早版本内核会如实回答"Yes",结果造成很多BIOS兼容性问题
此参数用于修改内核中的操作系统接口字符串(_OSI string)列表默认值,这样当BIOS向内核询问:"你是xxx吗?"的时候,内核就可以根据修改后的列表中是否存在"xxx"回答"Yes"或"No"了,主要用于解决BIOS兼容性问题导致的故障。



那么内核参数加了这个参数:acpi_osi=! acpi=“windows 2009” , 当bios寻问内核,是windows 7 吗? 内核说是啊,所以就不卡机了。

引用网友的话:
bios遇到不认识的系统,就不启动独显,所以卡机了。

万恶的BIOS …


Reply Favorite View the author
All Replies
wtz
deepin
2018-09-16 11:06
#1
楼主你进步神速啊……
Reply View the author
老陌
deepin
2018-09-16 19:58
#2
https://bbs.deepin.org/post/168918
楼主你进步神速啊……

昨天一些人在官方群讨论之后,我整理的笔记。
Reply View the author
RedPanda
deepin
2018-09-16 21:16
#3
老陌已经深入到如此境地了!可喜可贺!
Reply View the author
绿竹
deepin
2018-09-17 03:06
#4
老陌越来越厉害了
Reply View the author
lixiaobai
deepin
2018-09-19 06:59
#5
总结的很好
Reply View the author
nero28
deepin
2018-09-19 17:42
#6
為什麼這句acpi_osi=! acpi=“windows 2009” , 当bios寻问内核,是windows 7 吗? 内核说"是"?
與你說的----当BIOS询问内核:“你是Linux吗?”,内核都会回答"No",但早版本内核会如实回答"Yes",因為內核會回覆NO,所以加個!,雙重否定=YES,是嗎?
Reply View the author
老陌
deepin
2018-09-19 20:57
#7
https://bbs.deepin.org/post/168918
為什麼這句acpi_osi=! acpi=“windows 2009” , 当bios寻问内核,是windows 7 吗? 内核说"是"?
與你說的- ...

我是整理的笔记,=! 表示删除内置的字符串, 如果你是程序员,想要知道内部原理,参考内核的源码。
Reply View the author
176******80
deepin
2018-09-19 21:17
#8
不知道哪些机型比较友好?
Lenovo Yoga系列,ThinkPad T系列/L系列/X系列,Lenovo IdeaPad系列,这些支持怎么样?

现在还有没有笔记本BIOS/EFI支持关闭独显的,算是从硬件层关闭吧
Reply View the author
主观能动性
deepin
2018-09-19 23:57
#9
https://bbs.deepin.org/post/168918
楼主你进步神速啊……

何止神速啊,火箭都没他快
Reply View the author
tonydeng974
deepin
2018-09-20 00:15
#10
我刚装好系统,开机启动只能进grub>提示符下,是怎么回事。在grub提示符下如何启动DeepIn
Reply View the author
老陌
deepin
2018-09-20 00:27
#11
https://bbs.deepin.org/post/168918
我刚装好系统,开机启动只能进grub>提示符下,是怎么回事。在grub提示符下如何启动DeepIn ...

uefi还是mbr?
Reply View the author
MaxBill
deepin
2018-09-20 02:38
#12
大佬,我开机关机有报错信息,能去掉么,看的好烦
Reply View the author
老陌
deepin
2018-09-20 14:37
#13
https://bbs.deepin.org/post/168918
大佬,我开机关机有报错信息,能去掉么,看的好烦

最好的方法是把眼睛闭上,哈哈。
Reply View the author
aida
deepin
2018-09-29 23:30
#14
这个要加精一波  鼓励原创分享!
Reply View the author