GPU 드라이버는 *실제로* Linux에서 어떻게 작동합니까?

GPU 드라이버는 *실제로* Linux에서 어떻게 작동합니까?

참고: 내 생각엔~해야 한다배포판과 관련이 없지만 그렇다면 KDE Plasma 5 및 SDDM과 함께 Arch Linux를 사용하고 있습니다.

짧게 유지하고 절대적으로 관련된 세부 사항만 유지하려고 노력할 것입니다.

Arch Linux를 새로 설치했고 Optimus/Prime 기능을 위해 Bumblebee를 설정하고 싶습니다(Optimus 노트북 - Asus X550V가 있습니다). Bumblebee를 사용하면서 몇 가지 문제가 있었고 다음 실험에서 이를 해결하는 동안 xorg와 그래픽 드라이버가 어떻게 작동하는지 아직도 이해하지 못한다는 것을 깨달았습니다.생각하다하이브리드 그래픽 카드에 대한 멀티플렉싱이 없는 솔루션이 있습니다. 적어도 BIOS에서 활성 카드를 변경할 수는 없습니다.

내가 생각하는 작동 방식:

1) 독점 드라이버가 설치되지 않은 경우 시스템은 기본적으로 intel을 사용하여 intel 및 nouveau 드라이버를 모두 로드하고 DRI_PRIME=1을 명령에 전달할 때 nouveau를 로드합니다.

2) 독점 드라이버가 설치된 경우 xorg 구성이 여기에 설명된 대로 설정되지 않으면 시스템이 해당 드라이버를 로드하지 않습니다(https://wiki.archlinux.org/index.php/NVIDIA_Optimus- "Nvidia 사용" 섹션).

3) 전용 드라이버가 설치되어 있고 올바른 xorg 구성이 설정된 경우 시스템은 nvidia 드라이버와 nvidia GPU를 사용하려고 시도하지만 nvidia GPU가 모니터에 연결되어 있지 않기 때문에 검은색 화면이 표시됩니다. - ~/ xorg가 제거를 사용하도록 지시하려면 디스플레이 관리자 구성 파일에 .xinitrc(startx를 사용하는 경우) 또는 두 개의 xrandr 행이 필요합니다.

실제로 일어나는 일:

Bumblebee 문제를 조사하기 위해 nvidia 또는 bumblebee와 관련된 모든 것을 제거하고 nvidia 드라이버만 설치했습니다.

놀랍게도 시작 시 SDDM이 나타나지 않았습니다. 무료 tty로 전환하고 sddm을 종료하고(sudo systemctl stop sddm) startx를 사용했습니다(.xinitrc는 exec startkde로 설정되었지만아니요두 개의 xrandr 라인 포함). 놀랍게도 (다시 한번) KDE가 시작되었습니다. 내 글꼴은 작거나 해상도가 낮아 보이지만 그 외에는 괜찮습니다. glxinfo | grep NVIDIA는 내가 nvidia를 사용하고 있음을 확인합니다.

그 후 두 xrandr 줄을 /usr/share/sddm/scripts/Xsetup에 추가했고 SDDM이 문제 없이 시작되어 Plasma에 로그인할 수 있었습니다. 글꼴은 여전히 ​​형편없지만 nvidia에서는 작동합니다.

질문:

  • xorg.conf 파일이 전혀 없는데 시스템이 Nvidia 드라이버를 사용하는 이유는 무엇입니까? (xorg.conf.d도 비어 있으며 키보드 파일을 저장합니다.) 기본적으로 Nvidia 드라이버를 사용하는 경우 왜 모든 곳에서(Arch Wiki, Nvidia 문서) nvidia 드라이버용 xorg.conf 파일을 생성하라는 메시지가 표시됩니까(원하는 경우) 그걸 써? 더 중요한 것은, Bumblebee를 설치한 후 시스템이 기본적으로 Intel을 사용하는 이유는 무엇입니까? /etc/X11 폴더는 두 경우 모두 동일한 내용을 갖습니다.아니요xorg.conf 파일. 또는 내장 PRIME 애플릿을 사용할 때 Ubuntu에서도 동일한 일이 발생합니다. NVIDIA로 전환하면 xorg.conf 파일이 사용되지만 Intel을 사용하면 xorg.conf가 비활성화됩니다. 그렇다면 왜 NVIDIA를 사용하지 않는 걸까요? 제 경우에는 NVIDIA를 사용하고 있는데,xorg가 NVIDIA를 사용하도록 지시하는 xorg.conf 파일이 없습니다.?

  • NVIDIA에서 플라즈마를 실행할 수 있는데 startx에 xrandr 라인이 없는 이유는 무엇입니까? SDDM에만 문제가 있습니다. startx를 사용하여 실행할 수 있습니다. 이 줄이 존재하는 경우에만 제거를 수행해야 한다고 생각합니까?

답변1

작동 방식은 해당 배포판에 따라 다릅니다. 설명하는 실제 동작은 대부분의 배포판과 일치하지만 Gentoo(전용 드라이버를 로드하기 위해 커널 드라이버를 수동으로 블랙리스트에 추가해야 함)와 같은 이상한 경우가 있는데, 여기서는 이 작업을 수행하지 않습니다.

에 관해서는작동 방식은 최신 X 서버가 언급한 구성 파일 없이도 대부분의 항목을 자동으로 올바르게 감지한다는 것입니다. 실제로 현재의 모범 사례는 명시적으로아니요자동 감지를 통해 설정이 올바르게 작동하지 않는 한 이러한 프로필을 보유하십시오. 따라서 주변 하드웨어를 변경해도(예: 다른 그래픽 카드 설치) X 구성이 손상되지 않습니다. 많은 문서가 아직 이에 대해 다루지 않았다는 점도 주목할 가치가 있으며, Arch는 특히 원하는 동작을 얻을 수 있도록 이러한 파일을 가질 것을 권장합니다(최선의 옵션일 수도 있고 아닐 수도 있음). 여기서 중요한 것은

이는 다음과 같은 질문을 제기합니다: 왜 커널이 nouveau 대신 독점 드라이버를 로드하고 있습니까? 정확한 구성에 대한 많은 정보 없이 이런 일이 발생하는 이유를 정확히 말할 수는 없지만 Arch의 현재 동작이 대부분의 배포판과 일치하며 Not nouveau보다 독점 드라이버를 선호할 것이라고 확신합니다. 이런 경우라고 가정하면, 부트로더의 커널 명령줄에 다음을 추가하여 nouveau를 강제로 사용하도록 할 수 있습니다:

modules_blacklist=nvidia

이렇게 하면 독점 드라이버가 로드되는 것을 방지할 수 있으며(유사한 도구를 사용하여 명시적으로 지시하는 경우에도 modprobe -f) 이로 인해 nouveau가 로드됩니다.

관련 정보