有人能解释一下这些内核命令行参数吗?

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap"

这行是什么意思? 有人能逐字解释吗?
1个回答

quiet禁用了大部分的日志消息(通过dmesg命令显示)。


我认为splash选项在内核经过一些初始化代码后从初始ram-disk启动plymouth服务。Plymouth用于显示发行版的标志或systemd初始化的日志。


是在启动时禁用内核模式设置(也称KMS)的。模式设置使内核能够控制图形硬件本身并改变GPU的模式(图形或文本模式,分辨率,旋转等),并且它可用于制作平滑和无闪烁的启动画面(上面的选项),但它可能会导致某些图形硬件或甚至黑屏的问题。禁用它会强制内核使用BIOS模式。有关更多信息,请参见this answer

视频选项是指视频模式选项。一些全局选项可用于底层GPU。而uvesafb实际上是一个通用的帧缓冲驱动程序,它使用了VESA协会制定的标准。mode_option=1280x800-24表示分辨率1280x800,颜色深度或称为每像素位数为24(红、绿和蓝通道各8位)。

mtrr=3意味着write-combining属性。实际上,这是一种缓存技术,用于缓冲读/写请求,以便以突发模式释放它们,以更好地利用带宽,并防止连续的读/写周期和资源耗尽。
由于读/写操作不按顺序释放,如果在大多数程序中使用,可能会导致严重的错误和问题(线程安全性是基于这样一个假设:这些操作是按顺序完成的),但在帧缓冲区中,乱序内存操作并不是一个问题(当在少于50毫秒内渲染一帧时,您不关心屏幕上的左上角先绘制还是底部左角)。因此,在帧缓冲区操作中使用它(我们谈论的是帧缓冲区驱动程序uvesafb)是有意义的。它可以显著提高性能。
然而,在内核中使用MTRR API几乎完全被页面归因表取代。因为使用PAT,您可以更精细地控制要缓存的内存区域,并且它具有比MTRR更多的属性。
最后,scroll=选项有三个可能的值: ypan:使用VESA受保护模式接口启用显示平移。可见屏幕只是视频内存的一个窗口,控制台滚动通过更改窗口的起始位置来完成。此选项仅适用于x86架构,并且是该架构上的默认选项。 ywrap:与ypan相同,但假设您的图形板可以在视频内存末尾到达时从顶部开始读取(即循环)。比ypan更快。仅适用于x86架构。 redraw:通过重新绘制屏幕上受影响的部分进行滚动,这是非x86架构上的默认选项。
实际上,它是用于设置文本模式下(例如文本模式控制台而非图形控制台)滚动操作的模式。
您可以在此处阅读有关该驱动程序的更多信息。
如果你想了解更多关于内核命令行选项的内容,请查看官方文档
希望有所帮助。

1当你说MTRR选项已经过时时,是否意味着实际上有一个选项可以设置相应的PAT条目?如果没有,那么从内核命令行的角度来看,它就不能被视为过时。 - Ruslan
@Ruslan 我必须承认,虽然命令行选项仍可以用于uvesafb,但MTRR API的使用几乎已经被从内核和驱动程序中完全淘汰,转而采用PAT。而且你说得对,对于uvesafb选项来说,PAT没有MTRR的确切替代方案,所以它不应该过时。我在那里犯了一个小错误,把它们混淆了。不过还是要感谢你的指出,我已经更新了我的帖子。 - Parsa Mousavi
@isanae 是的,你说得对。谢谢指出。已更新。 - Parsa Mousavi