그래서 저는 Palm Pre(오리지널 P100EWW) 모델을 가지고 있고 개발자 모드를 활성화하고 Debian Squeeze chroot를 설치했습니다. 좋은 결과. 나는 그것을 휴대폰 이외의 모든 것(비트토렌트 피어, 웹 서버)에 사용할 계획입니다.
이렇게 하면 실제로 오류가 생성될 cat /dev/urandom > /dev/fb0
때까지 화면에 임의의 픽셀이 기록된다는 것을 알았습니다. No space left on device
좋습니다. 이제 모니터를 사용할 수 있습니다.
A) 텍스트를 출력할 수 있는 콘솔로 /dev/fb0을 사용하거나 B) 명령줄에서 /dev/fb0에 텍스트를 렌더링할 수 있는 유틸리티가 있습니까?
나는 이를 위해 커널을 다시 컴파일하는 것에 대해 아직 모릅니다(결국 WebOS를 완전히 제거하여 최소한의 ARM 서버로 전환하기를 희망합니다). 따라서 사용자 공간 도구(존재하는 경우)가 내가 묻는 것입니다. 또한 X를 사용하는 대신 /dev/fb0에 직접 렌더링하는 것을 선호합니다.
답변1
여러 사람들이 이미 커널 및 배치와 관련된 질문 부분에 답변했습니다.그림(텍스트 대신)을 프레임 버퍼에 저장했지만 나머지는 지금까지 해결되지 않은 상태로 남아 있습니다. 예, 커널 가상 터미널 하위 시스템을 사용하여 소위 말하는 것을 만들 수 있습니다.프레임버퍼 콘솔. 하지만 프레임버퍼 장치를 사용하여 다음 작업을 수행할 수 있는 여러 도구가 있습니다.사용자 공간 가상 터미널. 여기에는 다음이 포함됩니다.
- 종캉(더반) — 커널 하위 시스템보다 CJK I/O를 더 잘 처리하도록 설계된 사용자 공간 가상 터미널입니다. 특히 강점은 ISO 2022 비UTF 인코딩을 처리하는 것입니다. 특히 약점은 UTF 인코딩입니다.
- 페이스북 용어(더반) — 다음을 포함하여 여러 포크를 생성한 사용자 공간 가상 터미널공동 용어. 여기에는 다양한 CJK 입력 방법 플러그인이 있습니다.
- 보그-bterm(더반) — 분기된 사용자 공간 가상 터미널입니다.니템.
- 알리 골라미 루디건반— X 라이브러리에 의존하지 않는 최소한의 사용자 공간 가상 터미널입니다.
console-terminal-emulator
그리고 도구console-fb-realizer
간식— Linux 및 FreeBSD/PC-BSD 커널 가상 터미널을 복제하도록 설계된 사용자 공간 가상 터미널입니다. 또한 X 라이브러리에 의존하지 않습니다.- 킬로미터 스콘— 시스템과 밀접하게 연결된 사용자 공간 가상 터미널
logind
systemd의 서버와 "좌석" 개념.
특히 Ali Gholami Rudi는 단순한 프레임 버퍼 작업 이상의 터미널 에뮬레이터를 만들었습니다. 그는 또한 썼다Direct-to-framebuffer PDF 뷰어, VNC 뷰어, 미디어 플레이어 및 Quran 리더.
완전한 병렬 비교는 이 답변의 범위를 벗어나지만 다음은 질문과 관련된 몇 가지 핵심 사항입니다.
- 앞서 언급했듯이 일부 사용자 공간 가상 터미널 프로그램은 글꼴 처리, 키보드 매핑, CJK 입력 방법 등을 위해 X 라이브러리를 활용합니다. X 클라이언트는 아니지만 X 라이브러리에 종속됩니다.
fbpad
nosh 도구는 X 라이브러리를 사용하도록 설계되지 않았습니다. - 글꼴 처리를 위해 X 라이브러리를 사용하는 프로그램은 물론 X 글꼴도 사용합니다. 다른 사람들은 다른 계획을 가지고 있었습니다.
- bogl-bterm과 fbpad는 모두 고유한 특수 글꼴 형식을 가지고 있습니다. 하나는 이 도구를 사용하여
bdftobogl
BDF 글꼴을 BOGL 글꼴로 변환하는 것입니다. 또 하나는 ft2tf를 사용하여 TTF를 fbpad로 변환하는 것입니다.아치) 도구. - nosh
console-fb-realizer
도구 사용 및새로운 FreeBSD 10.1 커널 가상 터미널 하위 시스템이것이 실제로 사실이므로 FreeBSD 글꼴 조작 도구가 공유되었습니다.vtfontcvt
BDF 글꼴을 변환하는 데 사용됩니다.
- bogl-bterm과 fbpad는 모두 고유한 특수 글꼴 형식을 가지고 있습니다. 하나는 이 도구를 사용하여
- X 라이브러리를 사용하는 프로그램은 X 키맵을 사용합니다. 다른 모든 사람들의 경우:
- nosh 도구에는 ISO "Universal" Group 2를 위한 전체 ISO 9995-3 기능 키보드를 제공하도록 설계된 고유한 키맵 형식이 있습니다. 이
console-convert-kbdmap
도구를 사용하여 BSD kbdmap 파일을 이 형식으로 변환할 수 있습니다. 다시 말하지만, 이 kbdmap 파일은FreeBSD/PC-BSD vt 하위 시스템과 함께 사용. - fbpad는 자체 키 매핑을 전혀 수행하지 않지만 커널 가상 터미널 하위 시스템과 해당 키 매핑 메커니즘의 존재에 의존합니다.
- nosh 도구에는 ISO "Universal" Group 2를 위한 전체 ISO 9995-3 기능 키보드를 제공하도록 설계된 고유한 키맵 형식이 있습니다. 이
- 통화 및 필수 권한에는 몇 가지 차이점이 있습니다.
- zhcon, fbterm, bogl-bterm, fbpad 및 kmscon은 터미널에서 직접 쉘/로그인 프로그램을 하위 프로세스로 생성하는 터미널 에뮬레이터에 의해 작동합니다. 을 생성하려면 슈퍼유저 권한이 필요합니다
login
. - nosh 도구는 기존
/etc/ttys
(BSD),/etc/inittab
(Linux System 5init
) 또는 기타 시스템과 통합되도록 설계되었으며 getty/login/shell 생성 작업은 이러한 시스템에 맡깁니다.console-fb-realizer
프레임 버퍼 및 입력 이벤트 장치를 열고(수퍼유저 권한이 필요하지 않음) 에서 관리하는 FIFO 및 일반 파일에 액세스하는 데만 충분한 권한이 필요하며console-terminal-emulator
, 이는 특별한 권한이 전혀 필요하지 않습니다.
- zhcon, fbterm, bogl-bterm, fbpad 및 kmscon은 터미널에서 직접 쉘/로그인 프로그램을 하위 프로세스로 생성하는 터미널 에뮬레이터에 의해 작동합니다. 을 생성하려면 슈퍼유저 권한이 필요합니다
이것들은 모두터미널 에뮬레이터틀림없이. 터미널 에뮬레이션을 제거하고 프레임 버퍼에 텍스트를 더 직접적으로 넣으려면 다음과 같은 몇 가지 옵션이 있습니다.
- bogl-bterm은 물론 Ben Pfaff를 기반으로 합니다.Ben의 자체 그래픽 라이브러리시스템 설정/구조 환경에서 사용하도록 설계된 프레임 버퍼 I/O 라이브러리(및"PDA용 GUI"). 물론 이를 직접 사용하는 프로그램을 작성할 수도 있습니다.
- 자체 렌더링을 수행하기 위해 프레임 버퍼 라이브러리를 사용하는 프로그램 작성과 터미널이라고 생각하는 것에 이스케이프 시퀀스를 생성하는 프로그램 사이의 중간 전환을 위해: nosh 사용자 공간 가상 터미널은 모듈식이며 구성 요소 부분으로 나뉩니다. 전혀 작동하지 않습니다
console-terminal-emulator
.console-fb-realizer
/dev/vcsa*
유니코드 코드 포인트, ECMA-48 특성 및 24비트 RGB 색상을 갖춘 일반 파일(문자 특수 장치 파일 아님) 과 유사한 문자 셀 배열이 있는 디스플레이 파일을 사용합니다 . 따라서 이를 실행한 다음 문자+속성+색상을 문자 셀 배열 파일에 직접 쓴 다음console-fb-realizer
글꼴을 프레임 버퍼에 렌더링할 수 있습니다.그런데: 이것은 다음과 같지 않습니다.BRLTTY와 통합를 사용
console-terminal-emulator
하지만 실행되지는 않습니다console-fb-realizer
.
답변2
/dev/urandom > /dev/fb0
화면에서 임의의 픽셀을 캡처하고 얻을 수 있다면 필요한 모든 것을 갖춘 것입니다.
내 경우에는 일부 텍스트 정보를 덤프해야 합니다. 나는 이것을 busybox와 raspi에서 테스트했으므로 당신에게 도움이 될 것입니다. 답변이 다소 길 수 있습니다. 일부 콘솔을 사용하지 않는 경우에는 문자의 픽셀을 직접 인쇄해야 하기 때문입니다. 운 좋게도 누군가가 이미 어려운 일을 해냈기 때문에 우리는 그것을 함께 정리하면 됩니다.
busybox나 raspi에 바이너리 파일이 있어야 합니다 fbset
. 이는 화면 크기에 대한 설정을 찾는 데 도움이 될 수 있습니다.
내 삽입에서는 다음과 같습니다.
# fbset
mode "480x272-1"
# D: 0.104 MHz, H: 0.207 kHz, V: 0.657 Hz
geometry 480 272 480 272 16
timings 9600000 3 3 0 32 17 11
accel false
rgba 5/0,6/5,5/11,0/0
endmode
여기서 중요한 부분은 너비 480과 높이 272픽셀입니다.
언급했듯이 다음 명령을 사용하여 화면을 채울 수 있습니다
cat /dev/urandom > /dev/fb0
다음 명령으로 지울 수 있습니다cat /dev/zeros > /dev/fb0
화면을 지우는 것 외에도 올바른 치수를 얻는지 확인해야 합니다.
내 비지박스에는 .ppm 파일을 가져올 수 있는 fbsplash 바이너리가 있습니다.
제가 틀렸다면 정정해 주세요. 하지만 fb0
이 형식이 허용되는 것 같습니다. 보세요Wikipedia의 휴대용 Anymap, 여러 가지 "하위 형식"이 있습니다... fbsplash는 색상 등이 포함된 멋진 형식을 사용하지만... 읽을 수 있는 것을 인쇄할 수 있기를 원합니다. 단순화를 위해 ASCII로 인코딩된 P1을 사용합니다. 수직선을 인쇄할 수 있다면 치수가 올바른지 알 수 있습니다. 한번 시도해 봅시다:
PPM 유형 P1의 수직선은 다음과 같아야 합니다.
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
따라서 272줄, 959자 너비가 됩니다. 문서에 따르면 f 대신 1이어야 합니다. busybox에서는 raspi f가 더 밝습니다.
0 뒤에 공백이 없어야 한다는 것이 중요합니다... 이 작업은 약간 지루할 수 있습니다... 도움이 될 수 있는 텍스트 편집기를 사용하는 것이 좋습니다. vim에서는 처음 두 줄을 복사하고 명령 모드(esc)를 입력한 후 다음 문자를 입력할 수 있습니다.
of(esc)479a 0(esc)yy271p
물론, 나는 내 측정값을 사용했고 여러분도 여러분의 측정값을 사용해야 합니다. 이 파일을 에 보내면 /dev/fb0
다음과 같아야 합니다.
알았어, 내가 바람을 피우고 있는 거야... 행이 한 개가 아니라... 8개 정도인데... 작동하지 않으면(크기가 잘못되었거나 끝에 공간이 있어서 한 행만 너무 많은 것임) ) 그리고 더 쉽습니다).
여기까지 완료했다면 올바른 픽셀을 인쇄하여 문자로 처리하면 됩니다. 고마워하는Marcel Sondaar와 그의 GitHub 저장소모든 캐릭터를 그릴 필요는 없습니다.
약간만 수정하면 그의 간단한 프로그램을 공백 대신 인쇄하도록 확장하고 f
, X
각 0
문자 사이에 공백을 삽입하고, 제목을 추가할 수 있으며, 문자 코드에 해당하는 문자가 포함된 .ppm 파일을 갖게 됩니다.
한 단계 더 나아가면 문자를 입력으로 받는 대신 줄이 생깁니다. 파일을 Cat으로 지정하여 프로그램에 파이프하고 로 출력하면 /dev/fb0
텍스트 출력이 표시됩니다.
또한 Raspberry Pi에서 이 솔루션을 테스트했는데 작동했습니다. 링크를 2개 이상 올릴 수 없다고 합니다. 제가 이것을 얻을 때까지는 제 말을 따라야 합니다 :D
답변3
프레임버퍼를 콘솔로 사용하려면 이 fbdev
모듈이 필요합니다. 커널을 다시 컴파일해야 할 수도 있습니다.
프레임 버퍼 작업을 더 쉽게 해주는 라이브러리인 DirectFB 프로젝트에도 관심이 있을 수 있습니다. 이미 이를 위해 작성된 애플리케이션과 GUI 환경이 있습니다.
답변4
이것은 오래된 게시물이지만 일반적으로 프레임버퍼에서 콘솔을 실행하려면 프레임버퍼 콘솔(fbcon)이 필요하다는 것을 알고 있습니다. 구성에 있습니다. (장치 드라이버/그래픽/콘솔 디스플레이..)