X가없는 가정용 NAS 서버로 Ubuntu 12.04 LTS를 실행하고 있습니다. 최근에는 비디오 재생 미디어 장치로도 사용하도록 조정했습니다. 이 시점에서 X를 설치하는 것이 더 쉬울 수도 있지만 프레임 버퍼 재생으로 mplayer를 사용해보기로 결정했습니다. 그것은 효과가 있었고 모든 것이 좋았습니다.
그러나 호기심과 실제 결과에 대해서도 프레임 버퍼에 대한 생각을 멈출 수 없습니다. 프레임 버퍼 장치는 하나만있는 것 같습니다 /dev/fb0
. (Btw. vesafs 드라이버를 사용하고 있습니다) 프레임 버퍼를 사용하는 여러 프로그램을 실행하면 혼돈이 발생합니다. 예를 들어 fbterm에서 mplayer를 실행하면 충돌이 발생합니다. 흥미롭게도 fbi 이미지 뷰어는 어떻게 든 이미지를 볼 수 있습니다. 분명히 프로그램은 장치를 공유 할 수 없으며 결국 윈도우 시스템이 없습니다.
그렇다면 (vesa) fb 장치의 수는 하드웨어 디스플레이 장치로 제한됩니까? 아니면 여러 tty가있는 것처럼 원칙적으로 더있을 수 있습니까? 이를 사용하는 소프트웨어를 동시에 실행하는 데 도움이 더 필요하십니까? 어떻게 더 추가 할 수 있습니까?
또한 프레임 버퍼가 tty에 연결되는 논리는 나에게 분명하지 않습니다. 예를 들어, mplayer는 모든 tty에서 비디오 프레임을 보여 주지만 fbi는 그렇지 않습니다. 또한 우분투 기본 콘솔 (fbcon?)은 비디오 오버레이 뒤에 표시되어 이상한 느낌을줍니다. 이게 다 뭐야?
답변
아직 아무도 대답하지 않았고 지루한 인터넷 검색 및 테스트 후 몇 시간 동안 주제를 파악하고 대답하겠습니다.
프레임 버퍼 장치 인터페이스는 매우 일반적인 인터페이스이므로 원칙적으로 더 많은 fb 장치가있을 수 있습니다. 그러나 내가 사용한 VESA 드라이버는 특정 하드웨어 장치와 프레임 버퍼 장치 파일간에 직접 연결을 제공하기 때문에 실제 장치가있는 것보다 더 많은 것을 갖는 것은 의미가 없습니다.
가상 프레임 버퍼 장치 용 드라이버 인 vfb가 있습니다. (참고 : X의 가상 프레임 버퍼 인 xvfb와는 다릅니다.)이 직접 테스트하지는 않았지만 가상 장치를 사용하려는만큼 많은 fb 장치를 가질 수 있습니다. 또한 원칙적으로 가상 장치를 하드웨어 프레임 버퍼 장치에 파이핑하여 프레임 버퍼 멀티플렉서를 만들 수있는 것은 아무것도 없다고 생각합니다.
프레임 버퍼와 tty 간의 연결에 대한 정보 는 없습니다. 프레임 버퍼는 아무 것도 무시하고 단순히 화면에 그려집니다.
원래 혼란스러워했던 것은 fbi 이미지 뷰어의 동작입니다. 그것은 실행중인 tty가 열려 있는지 아닌지를 영리하게 확인하고 그에 따라 프레임 버퍼에 그립니다. (그래서 mplayer와 달리 SSH를 통한 실행을 거부하는 이유는 의사 터미널을 허용하지 않습니다.) 그러나 멀티플렉서와 같은 기능은 프레임 버퍼 자체와 관련이 없습니다.
프레임 버퍼에 쓰는 프로세스가 여러 개인 경우 서로 차단하지 않습니다 . 여러 fb 프로그램을 동시에 사용하는 초기 문제 (크래쉬 등)는 전혀 프레임 버퍼에 관한 것이 아닙니다. fbterm 터미널을 가져 와서 mplayer를 실행하십시오 : 문제 없습니다. fbterm 및 fbcon 터미널과 fbi 이미지 뷰어는 무언가가 업데이트 될 때만 버퍼링을하기 때문에 mplayer는 시간의 거의 100 %를 차지합니다. 그러나 두 개의 mplayer를 실행하려고하면 경쟁 조건이있는 버퍼에 그리려고 할 때 하나의 프레임과 다른 프레임을 표시하는 깜박임이 나타납니다.
유용한 링크들 :