Linux에서 그래픽의 다양한 부분에 대한 이해를 정리하려고 하는데 다음 각 개념이 수행하는 역할에 대해 혼란스럽습니다.
- 서버 표시
- 창 관리자
- 그래픽 드라이버
내 질문:
- 그래픽 드라이버는 Linux 커널 내부 또는 외부에서 구현됩니까? 커널 외부에 있다면 네트워크, 디스크, 파일 시스템이 모두 커널 내부에 있는데 왜 제외됩니까?
- X Windows, Gnome, Ubuntu Unity, KDE, Mir, Wayland 디스플레이 서버, 창 관리자 및 그래픽 드라이버는 누가 담당합니까?
이 질문에 답하는 나의 목표는 어떤 프로젝트가 Linux 그래픽 경험의 어떤 부분에 기여하는지 이해하는 것입니다.
고쳐 쓰다 http://blog.mecheye.net/2012/06/the-linux-graphics-stack/ 제가 찾고 있던 세부정보가 많이 있습니다.
답변1
- 그래픽 드라이버는 로드되어야 하는 커널 모듈로 구현됩니다. 그래서 기본적으로 그들은외부핵심. 이를 포함하도록 커널을 구축할 수 있는지 여부는 나보다 지식이 풍부한 사람이 대답할 질문입니다. 커널이 드라이버로 빌드된 경우
nouveau
나중에 독점 NVIDIA 드라이버를 로드하면 충돌이 발생하기 때문에 커널에서 제외된 것 같습니다. - X Windows, Wayland 및 Mir는 디스플레이 서버입니다.
- Gnome, Ubuntu Unity 및 KDE는 모두 창 관리자가 아닌 데스크탑 환경입니다. 창 관리자는 데스크톱 환경(예: Gnome에서 사용
metacity
)의 일부입니다. 즉, 데스크탑 환경 없이 독립형 창 관리자를 실행할 수 있습니다.놀라운,xmonad또는언박싱
어떤 구성 요소가 어떤 역할을 하는지에 대해서는 다음과 같습니다.
- 그래픽 드라이버는 커널이 그래픽 카드와 "대화"하는 방식입니다.
- 디스플레이 서버는 디스플레이의 창과 기타 그래픽 요소를 생성하고 관리하는 데 사용됩니다.
- 데스크탑 환경 또는 창 관리자는 디스플레이 서버에 대한 클라이언트 역할을 하며 창, 패널 등을 그리거나 장식하는 방법을 지시합니다.
답변2
"그래픽 드라이버"라는 용어는 여러 가지 다른 것을 가리키는 데 사용됩니다. 그 중 하나가 커널 드라이버입니다. 커널 드라이버는 주로 비디오 모드를 설정하고 카드와의 데이터 전송을 용이하게 합니다. 또한 일반적으로 카드의 GPU에 펌웨어를 다운로드합니다. 펌웨어는 GPU 자체에서 실행되는 프로그램이지만 안타깝게도 그래픽 공급업체에서는 이를 바이너리 blob으로만 제공하므로 소스 코드를 볼 수 없습니다.
그 외에도 일반적으로 일반 X11 또는 OpenGL 그리기 호출을 카드가 이해하는 명령으로 변환하고 실행을 위해 카드로 보내는 자체 드라이버가 있는 Xorg를 실행하게 됩니다. GPU가 지원하는 명령과 지원하지 않는 명령에 따라 자체적으로 일부 작업을 수행할 수도 있습니다. OpenGL 호출의 경우 직접 렌더링 인프라를 사용하면 드라이버의 이 부분이 실제로 X 서버 대신 클라이언트 응용 프로그램에서 직접 실행되어 허용 가능한 성능을 얻을 수 있습니다. 또한 부팅 시 Xorg와 커널 드라이버의 조정과 도움 덕분에 클라이언트 애플리케이션의 드라이버가 GPU에 직접 명령을 보낼 수 있습니다.
Wayland와 Mir는 단순화된 유형의 디스플레이 서버로서 Xorg를 대체해야 합니다.
Unity는 셸(데스크탑/런처 제공)이자 합성 창 관리자입니다.
GNOME과 KDE는 데스크탑 환경입니다. 이는 많은 구성 요소로 구성된 대규모 프로젝트입니다. 이들의 핵심은 각각의 애플리케이션 툴킷, 즉 GNOME용 GTK와 KDE용 Qt입니다. 이는 애플리케이션 작성을 위한 라이브러리 프레임워크이며 다른 모든 것이 구축되는 기반을 제공합니다. 그들이 제공하는 기본 서비스에는 이벤트 및 개체 처리, Windows, 기본 그리기 기능, I/O 등이 포함됩니다.