iMac 上的 Linux 问题
我在 iMac 上安装了 Ubuntu 18.04.4 LTS 和 Arch Linux,我认为它不支持 KMS。我已经让 Ubuntu 能够与多个桌面、窗口管理器和显示管理器一起工作。当我尝试安装 Manjaro 时,没有任何效果,即使使用nomodeset
,所以我尝试了 Arch。我已经让 TTY 可以在 Arch 上工作,但不能在 X 上工作(我还没有尝试过 Wayland)。到目前为止我遇到的问题:
- 启动时没有
nomodeset
导致黑屏无响应 - 即使使用,我也无法成功
startx
或在 Arch 上xinit
nomodeset
- 在 Ubuntu 中挂起会导致黑屏无响应
- Ubuntu 亮度键不起作用,但屏幕上的图像显示它起作用
我有很多信息,如果有必要,或者我需要添加更多详细信息,请告诉我。
更多启动信息
当我在没有启动的情况下启动时nomodeset
,我会看到一些以以下内容结尾的信息:
*Error* No UMS support in radeon module!
此时,分辨率会稍微锐化,然后屏幕变黑。使用 时nomodeset
,屏幕不会变黑,而是显示更多日志,然后进入登录屏幕。
更新:我曾经能够看到该消息,但似乎无法将其恢复。不过,其他一切都一样。
乌班图18.04
系统信息(可在设置 GUI 中找到):
- 内存:3.8 GiB
- 处理器:Intel® Core™️ i3 CPU 540 @ 3.07GHz x 4
- 显卡:llvmpipe(LLVM 9.0,128 位)
- 侏儒:3.28.2
- 操作系统类型:64位
- 磁盘:376.9 GB
lspci | grep VGA
印刷01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV730/M96-XT [Mobility Radeon HD 4670]
cat /var/log/Xorg.0.log
打印一大堆东西,如果你需要的话请告诉我。
拱
startx &
印刷:
X.Org X Server 1.20.8
X Protocol Version 11, Revision 0
Build Operating System: Linux Arch Linux
Current Operating System: Linux amc-arch 5.6.5-arch3-1 #1 SMP PREEMPT Sun, 19, Apr 2-2- 13:14:25 +0000 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-linux root=/dev/sda3 nomodeset
Build Date: 30 March 2020 05:05:45AM
Current version of pixman: 0.38.4
before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file:"/var/log/Xorg.0.log", Time: Mon Apr 20 19:53:22 2020
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
ile at "/var/log/Xorg.0.log" for additional information.(EE) (EE) Server terminated with error (1). Closing log file.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
Job 1, 'startx &' has ended
日志文件较小,但仍然很大。如果有必要请告诉我。
KMS——内核模式设置
我查了一下互联网,我认为问题出在内核模式设置上。如果您知道这一点,我将不胜感激。唯一的解决方案是支持 KMS 的外部显卡吗?我可以使用或制作不需要 KMS 的窗口管理器或桌面环境吗?我可以向 Linux 内核提出建议,以提供仍然有效的 KMS 替代方案吗?
为什么 Ubuntu 可以(大部分)工作而 Manjaro 却不能?
答案1
不幸的是,这个问题没有简单的解决办法。我只知道一个非常非常复杂的解决方法。
更新,到目前为止,EFI 的位数与所使用的内核(64 位 EFI 和 64 位内核)相同,存在替代方法。查看我的其他答案以获取更多信息。
主要问题是 Linux 内核无法(从 Apple EFI 固件)获取必要的视频 BIOS 信息来继续其 KMS(内核模式设置)GPU 初始化。这会产生该*Error* No UMS support in Radeon module!
消息。
可以在以下链接中找到一个相当复杂的解决方案。这描述了首先必须在 Mac OS 下转储 vBios。然后,需要建立一个自己的风俗Linux 内核包含之前转储的 vBios 文件。
https://forum.artixlinux.org/index.php/topic,586.0.html
不管怎样,这个问题在某种程度上表明,废弃以前使用的 UMS(用户空间模式设置)的决定在任何情况下都不是一件好事。对于像这里这样的情况,应该存在替代的后备选项。我正在考虑一种方法来手动指定和加载所需的 vBios 文件,以便整个 KMS 过程可以继续。不幸的是,这样的紧急选择并不存在。
所以现在,有必要走很长的路,构建一个定制的 Linux 内核。
答案2
以下是一个简短的附录。经过对这个主题的一些更深入的研究后,似乎存在一种更简单的方法来完成这项工作。因此,并非在所有情况下都需要构建包含视频 BIOS 的自定义内核。
笔记,EFI 的位数必须与操作系统的位数相对应(64 位 EFI 和 64 位内核),否则以下内容将不起作用!
简而言之,替代方法是通过启动EFISTUB特征:https://www.rodsbooks.com/efi-bootloaders/efistub.html
这允许直接启动来自 Apple EFI 固件的 Linux 内核。这反过来又允许 Linux 内核获取必要的 Radeon Video BIOS。
当通过 GRUB 启动时,这是不可能的,因为 Apple EFI 固件仅在开机时短时间内公开视频 BIOS 信息。所以直接通过 EFISTUB 启动是绝对有必要的。唯一可以提供帮助的引导加载程序是参考文献。它延长了访问 vbios 的时间并将信息移交给 Linux 内核。https://en.wikipedia.org/wiki/REFInd
最后,Linux 内核 5.7 获得了一些非常有趣的 EFI 增强功能。理论上,这些更改允许 EFISTUB 也可以在混合模式(32 位 EFI 和 64 位内核)环境。来源: 在 32 位 UEFI 上引导 64 位内核 添加对通用 EFI 混合模式启动的支持