%EC%9D%84%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Ctrl나는 전체 화면 콘솔( ++ ... 로 열리는 콘솔)을 적극적으로 사용했고 일종의 "벽지"(물론 다소 어둡고 단조로운 콘솔)로 장식해 보고 싶다는 생각에 이르렀습니다 Alt. 가독성이 떨어지지 않도록) 아마도 보기에도 좋고 느낌이 좋을 수도 있습니다(아니면 시도해야 하지만). 다른 콘솔의 배경(하나는 + + , 다른 하나는 + + 등) 으로 다른 그림을 설정할 수 있다면 더욱 좋습니다 .F1F6CtrlAltF1CtrlAltF2
콘솔이 순수 텍스트 모드가 제공하는 것보다 훨씬 더 높은 해상도를 가지고 있다는 사실은 본격적인 그래픽 모드가 콘솔에 사용되며 모든 것이 가능하다는 것을 암시합니다. 하지만 어떻게?
답변1
나는 Linux 콘솔 드라이버에 이 기능이 내장되어 있지 않다고 확신합니다. 그러나 이 기능을 수행할 수 있는 응용 프로그램이 있습니다 fbterm
. 배경 이미지가 작동하도록 하려면 다음과 같이 프레임 버퍼에 이미지를 표시할 수 있는 유틸리티도 필요합니다 fbi
.
sudo apt-get install fbterm fbi
fbterm
실제로 배경 이미지 자체를 읽거나 표시하지 않으며, 시작하기 전에 다른 프로그램이 화면에 배경 이미지를 설정할 것으로 예상합니다. fbterm
이 작업을 수행하는 방법에 대한 지침이 매뉴얼 페이지에 있습니다. 이 fbv
유틸리티는 최신 Ubuntu 시스템에서 컴파일할 수도 없는 완전히 구식이고 지원되지 않는 유틸리티입니다. fbi
는 프레임 버퍼에 대한 훨씬 더 깨끗하고 멋진 이미지 뷰어이지만 안타깝게도 더 간단한 의 "설정 및 종료" 기능이 없으므로 직접 사용하려고 하면 fbv
방해가 됩니다 . fbterm
그러나 나는 효과적인 대안을 생각해낼 수 있었습니다.
먼저, 원하는 이미지를 사용 fbi
하고 표시한 다음 이를 "프레임 버퍼 원시 형식" 이미지 파일에 덤프해야 합니다. cat
프레임버퍼 콘솔에서 루트로 다음을 실행합니다.
( sleep 1; cat /dev/fb0 > nifty-background.fbimg ) & fbi -t 2 -1 --noverbose -a nifty-background.png
(이렇게 하면 몇 초 동안 이미지가 표시되고 결과가 파일에 저장되어 종료됩니다 nifty-background.fbimg
. 물론 nifty-background.fbimg
및 를 원하는 파일 이름으로 바꾸세요.)nifty-background.png
명령의 첫 번째 부분은 프레임 버퍼 내용을 파일로 보내기 전에 1초 동안 기다립니다. 동시에 두 번째 부분(& 뒤)이 실행되어 fbi
프레임 버퍼에 이미지를 표시하므로 cat 명령이 실행될 때(1초 후) 덤프할 이미지가 있습니다. 순서대로 나열되어 있는 이유는 포그라운드에서 실행되지 않으면 문제가 있다는 것을 알았기 때문입니다 fbi
. 즉, 목록의 마지막 명령이어야 합니다.
그 이후에는 를 실행하고 싶을 때마다 fbterm
다음과 같이 시작할 수 있습니다(작은 래퍼 스크립트를 만들 수도 있습니다).
export FBTERM_BACKGROUND_IMAGE=1
cat nifty-background.fbimg > /dev/fb0; fbterm
답변2
실제 텍스트 모드와 그래픽 에뮬레이션을 구별할 수 있습니다.
…이것은 관찰자가 Windows의 실제 BSOD와 10년 정도 전에 유행했던 농담 BSOD 화면 보호기의 동작을 구별할 수 있는 방법 중 하나입니다. 그래픽 모드에서 디스플레이 어댑터 하드웨어를 사용하여 블록 그래픽 문자를 표시하는 것은 텍스트 모드에서 디스플레이 어댑터 하드웨어로 생성된 문자와 미묘하게 다릅니다.
예, 디스플레이 어댑터가 그래픽 모드입니다. 지금은 꽤 오랫동안 이런 상태였습니다. 그것은언제나PC 디스플레이 어댑터 하드웨어가 없는 시스템에서는 이렇게 합니다. Linux 초기에는 PC 호환 콘솔에서 텍스트 모드의 디스플레이 어댑터 하드웨어를 사용했습니다. 그러나 이 용도는 조용히 침식되어 거의 아무 것도 없게 되었습니다. 현재 대부분의 사용자를 위한 유니코드 지원에는 텍스트 모드 하드웨어보다 더 큰 문자 모양 세트가 필요합니다. 물론 머신 펌웨어는 Linux 로더 및 시스템 초기화와 마찬가지로 스플래시 화면(예쁜 그림 및 회사 로고 포함)에 그래픽 모드를 사용합니다.
Linux 커널에는 터미널 에뮬레이터 프로그램이 내장되어 있습니다. 이는 내부 커널 인터페이스를 사용하여 액세스하는 프레임 버퍼 및 입력 이벤트 하위 시스템 위에 계층화됩니다. 이는 일련의 애플리케이션 모드 시스템에 나타납니다.커널 가상 터미널장치 /dev/tty1
등.
이 프로그램은 실행되는 터미널 에뮬레이터에 비해 상당히 제한적입니다.와 나가다Linux 커널은 일반 응용 프로그램과 같습니다. 실제 터미널 기능의 제한된 하위 집합만 에뮬레이션하며 후자 터미널 에뮬레이터의 추가 기능은 부족합니다.
이를 위해 찾아야 할 것은 바로 이것입니다. xterm, lxterminal, gnome-console, konsole, eterm, wterm 등과 같이 입력/출력에 X를 사용하는 터미널 에뮬레이터에 익숙할 수 있습니다. 입/출력을 위해 프레임 버퍼 장치와 입력 이벤트 장치를 사용하는 장치는 잘 알려져 있지 않습니다. 제공사용자 공간 가상 터미널:
- zhcon(우분투 패키지),
- 페이스북,
- fbterm(우분투 패키지) 및 그 포크는 다음과 같습니다.jfbterm(우분투 패키지),
- bogl-bterm (우분투 패키지),
- nosh
console-terminal-emulator
와console-fb-realizer
, 그리고 - kmscon.
후자 중 일부는 원하는 것을 수행할 수 있습니다.
예를 들어, fbterm은 시작 시 프레임 버퍼에 있는 모든 것을 배경 이미지로 사용하도록 구성할 수 있습니다. 따라서 해야 할 일은 fbterm을 실행하기 전에 배경 이미지를 설정하기 위해 이미지를 Linux 프레임 버퍼 장치에 직접 표시하기 위한 여러 다른 유틸리티 중 하나를 사용하는 것입니다. 다음과 같은 여러 가지 도구가 있습니다.
fbvis 및 fbi는 종료 시 화면을 지우고 Foogod의 답변에 더 자세히 설명된 회선이 필요합니다. 그러나 dfbg는 자체적으로 정리되지 않으므로 이 특정 작업에 더 적합합니다.
추가 읽기
- https://unix.stackexchange.com/a/177209/5132
- https://unix.stackexchange.com/a/178807/5132
- https://unix.stackexchange.com/a/194218/5132
- 조나단 드 보인 폴라드(2015)."사용자 공간 가상 터미널". 노쉬 가이드. 1.20. nosh. JdeBP의 소프트웨어.
- 조나단 드 보인 폴라드(2015).사용자 공간 가상 터미널에 대한 간략한 살펴보기 nosh. JdeBP의 소프트웨어.
- Geert Uytterhoeven (1998-10-25).참고: 2.1.107 이후 프레임 버퍼 콘솔 변경 사항. 리눅스 커널.
답변3
fbi
Foogod의 답변은 저에게 효과적이지 않았지만 솔루션의 절반을 제공하여(즉, TTY 화면에 이미지를 표시하는 동안 프레임 버퍼 데이터 읽기) 올바른 방향으로 안내했습니다 . 그러므로 나는 그의 대답에 현상금을 수여했습니다.
fbterm
Bellow는 단일 명령줄 인수로 이미지에 대한 부분 경로를 사용하여 쉽게 시작할 수 있게 해주는 스크립트입니다.
용법
스크립트는 변수에 나열된 디렉터리에 저장되어야 합니다 $PATH
. 가급적이면 개인 $HOME/bin
폴더에 있어야 합니다. 인용하다PATH에 디렉토리를 추가하는 방법은 무엇입니까?bin
에 개인을 추가하는 방법에 대한 설명이 있지만 홈 디렉터리에 $PATH
라는 디렉터리를 만드는 것만 으로도 다시 로그인할 때 bin
추가할 수 있습니다 .PATH
스크립트에는 실행 권한도 있어야 합니다. 으로 설정할 수 있습니다 chmod +x /path/to/script.sh
.
sudo
마지막 으로 를 읽고 쓰기 위한 루트 액세스를 허용하려면 를 사용하여 실행해야 합니다 /dev/fb0
.
스크립트 소스
다음에서도 사용 가능내 Github 저장소.
#!/bin/bash
# Author : Serg Kolo
# Date: Dec 5, 2015
# Description: Script to render image and set it as background
# in conjunction with fbterm
# Depends: fbterm,fbi, awk
# Written for: https://askubuntu.com/q/701874/295286
function printUsage
{
echo "<<< Script to set background image in TTY console"
echo "<<< Written by Serg Kolo, Dec 5 , 2015"
echo "<<< Usage: scriptName.sh /path/to/image"
echo "<<< Must be ran with root privileges, in TTY only"
echo "exiting"
}
# check if we're root, if there's at least one ARG, and it is a TTY
if [ "$(whoami)" != "root" ] || [ "$#" -eq 0 ] || [ "$( tty | awk '{gsub(/[[:digit:]]/,""); gsub(/\/dev\//,"");print}' )" != "tty" ] ;then
printUsage
exit 1
fi
# read the full path of the image
IMAGE="$( readlink -f "$@" )"
# Launch fbi with whatever image was supplied as command line arg
# then take out whatever is the data in framebuffer;
# Store that data to /tmp folder
( sleep 1; cat /dev/fb0 > /tmp/BACKGROUND.fbimg ; sleep 1; pkill fbi ) & fbi -t 2 -1 --noverbose -a "$IMAGE"
# This portion is really optional; you can comment it out
# if you choose so
echo "LAUNCH FBTERM ?(y/n)"
read ANSWER
if [ "$ANSWER" != "y" ] ; then
echo exiting
exit 1
fi
# The man page states that fbterm takes screenshot of
# what is currently in framebuffer and sets it as background
# if FBTERM_BACKGROUND_IMAGE is set to 1
# Therefore the trick is to send the framebuffer data captured
# in the last step (which will display the image on screen)
# and then launch fbterm. Note, that I send output from the command
# send to background in order to avoid the extra text displayed on
# screen. That way we have clear image in framebuffer, without
# the shell text, when we launch fbterm
export FBTERM_BACKGROUND_IMAGE=1
clear
( cat /tmp/BACKGROUND.fbimg > /dev/fb0 &) > /dev/null; sleep 0.25; fbterm
추가 정보
사용자가 반드시 를 사용할 필요는 없다는 것이 밝혀졌습니다 sudo
. 그룹 /dev/fb0
에 속하므로 video
사용자는그 그룹에 자신을 추가사용하여
sudo usermod -a -G video $USER
따라서 위 스크립트의 루트 검사는 더 이상 사용되지 않습니다. 특히 [ "$(whoami)" != "root" ] ||
일부는 더 이상 사용되지 않습니다.
답변4
답변~ 위에나를 위해 일했다
하지만 지정해야 함장치FBI의 경우:
fbi -d /dev/fb0
내 경우에는 FBI가 다음과 같이 시도하고 있었습니다./dev/dri/card0
을 위한가독성imagemagick을 사용할 수 있습니다:
convert -fill '#202020' -colorize 80% "$1" /tmp/background
이미지를 가시성이 있는 색상 #202020
으로 오버레이되도록 변환하여 투명한 배경을 모방합니다.80%