Linux에서 추가 프레임버퍼 장치를 추가하는 방법은 무엇입니까?

Linux에서 추가 프레임버퍼 장치를 추가하는 방법은 무엇입니까?

X 없이 Ubuntu 12.04 LTS를 홈 NAS 서버로 실행하고 있습니다. 최근에는 이를 비디오 재생 미디어 장치로 적용하기 시작했습니다. 이 시점에서 X를 설치하는 것이 더 쉬울 수도 있지만 프레임 버퍼 재생을 사용하여 mplayer를 사용해 보기로 결정했습니다. 작동하고 모든 것이 정상입니다.

그러나 호기심과 아마도 실제적인 결과 때문에 프레임 버퍼에 대한 생각을 멈출 수 없습니다. 프레임버퍼 장치는 하나뿐인 것 같습니다 /dev/fb0. (btw. 저는 vesafs 드라이버를 사용하고 있습니다.) 프레임버퍼를 사용하는 여러 프로그램을 실행하면 혼란이 발생합니다. 예를 들어, fbterm에서 mplayer를 실행하면 충돌만 발생합니다. 이상하게도 FBI 이미지 뷰어는 어떻게든 이미지를 볼 수 있습니다. 분명히 프로그램은 장치를 공유할 수 없으며 결국 윈도우 시스템도 없습니다.

그렇다면 (vesa) fb 장치의 수는 하드웨어 디스플레이 장치로 제한됩니까? 아니면 원칙적으로 여러 개의 tty처럼 더 많은 것을 가질 수 있습니까? 더 많은 도움말을 추가하여 이를 사용하는 소프트웨어를 동시에 실행할 수 있습니까? 어떻게 더 추가할 수 있나요?

또한 프레임 버퍼가 tty에 연결되는 방식에 대한 논리가 명확하지 않습니다. 예를 들어 mplayer는 각 tty에 비디오 프레임을 표시하지만 fbi는 그렇지 않습니다. 또한 Ubuntu 기본 콘솔(fbcon?)이 비디오 오버레이 뒤에 표시되어 있어 이상하다는 생각이 들었습니다. 어떻게 되어가나요?

답변1

아직 아무도 답변하지 않았으므로 몇 시간 동안의 지루한 인터넷 검색과 테스트를 거쳐 해당 주제에 대해 어느 정도 지식을 얻었으므로 답변해 드리겠습니다.

프레임버퍼 장치 인터페이스는 상당히 일반적인 인터페이스이므로 원칙적으로 더 많은 FB 장치가 있을 수 있습니다. 하지만 제가 사용하고 있는 VESA 드라이버는 특정 하드웨어 장치와 프레임버퍼 장치 파일을 직접 연결해주는 기능을 제공하기 때문에,실제 장치 수보다 더 많은 장치를 보유하는 것은 의미가 없습니다.

가상 프레임버퍼 장치인 vfb용 드라이버가 있습니다. (참고: X용 가상 프레임 버퍼인 xvfb와 달리) 직접 테스트하지는 않았지만 가상 장치를 사용하면 FB 장치를 원하는 수만큼 가질 수 있습니다. 또한 가상 장치를 하드웨어 프레임 버퍼 장치에 연결하여 프레임 버퍼 멀티플렉서를 구성하는 것을 원칙적으로 방지하는 방법은 없다고 생각합니다.

프레임버퍼와 tty 사이의 연결에 관해:비어 있는. 프레임 버퍼는 아무것도 무시하고 단순히 화면에 그립니다.

처음에 나를 혼란스럽게 했던 것은 FBI 이미지 뷰어의 행동이었습니다. 실행 중인 tty가 열려 있는지 영리하게 확인하고 그에 따라 프레임 버퍼를 그리는 것으로 나타났습니다. (이것이 mplayer와 달리 SSH를 통한 실행을 거부하는 이유입니다. 의사 터미널을 허용하지 않습니다.) 그러나 muxer와 유사한 기능은 프레임 버퍼 자체와 아무 관련이 없습니다.

여러 프로세스가 프레임 버퍼에 쓰는 경우그들은 서로를 멈추지 않을 것이다. 이전에 여러 fb 프로그램을 동시에 사용할 때 겪었던 문제(충돌 등)는 프레임 버퍼와 전혀 관련이 없는 것으로 나타났습니다. fbterm 터미널을 사용하고 거기에서 mplayer를 실행하세요. 문제 없습니다. fbterm 및 fbcon 터미널과 FBI 이미지 뷰어는 콘텐츠를 업데이트할 때만 버퍼에 표시되므로 mplayer가 거의 100% 화면을 지배합니다. 그러나 두 mplayer를 모두 실행하려고 하면 경쟁 조건으로 버퍼에 그리려고 할 때 한 프레임과 다른 프레임이 깜박이는 화면이 표시됩니다.

유용한 링크:

http://moi.vonos.net/linux/framebuffer-drivers/

https://www.kernel.org/doc/Documentation/fb/framebuffer.txt

관련 정보