나는 모든 면에서 "가장자리를 잘라내는"(즉, 모든 픽셀을 표시하지 않는) 새로 구입한 값싼 8인치 TFT LCD 디스플레이를 가지고 있습니다. 나는 이것이 주로 HDMI 입력을 사용하는 TV를 괴롭히는 "오버스캔" 때문이라는 것을 이해하게 되었습니다.
내 커널은 먼저 efifb로 부팅한 다음 inteldrmfb로 전환합니다. 두 프레임 버퍼 드라이버 모두 문제가 발생합니다. 나는 X 창을 사용하지 않고 있으며 이 작은 디스플레이에서 X를 사용하고 싶지도 않습니다. 내가 하고 싶은 것은 Linux 텍스트 콘솔을 사용하는 것뿐입니다. 따라서 "xrandr"을 사용하는 솔루션은 종료되었습니다.
나는 시도했다모든 것"비디오" 커널 부팅 매개변수를 사용하여 해상도 설정을 조정하고 fbset를 사용하여 부팅 후 타이밍 설정을 조정하는 등 이 문제를 해결하기 위한 드라이버 수준(커널 수준) 프레임 버퍼 설정에 대해 찾을 수 있지만, 내가 무엇을 하든 상관 없습니다. fbset과 관련이 있으면 무시되는 것 같습니다.
그래서 제 질문은 이렇습니다. 프레임 버퍼 드라이버 수준보다 더 높은 수준에서 프레임 버퍼 콘솔 주위에 여백을 추가할 수 있는 방법이 있습니까?
"stty"를 사용하여 Linux가 콘솔에서 사용할 열과 행의 수를 줄일 수 있다는 것을 알고 있지만 이렇게 하면 오른쪽과 아래쪽의 문제만 해결되고 여전히 왼쪽과 아래쪽에 문자가 잘린 채로 남게 됩니다. 윗면. "stty"를 사용하여 "첫 번째 열"과 "첫 번째 행" 오프셋을 콘솔에 추가하는 방법이 있습니까(예: 공백 채우기)? stty가 아닌 경우 다른 경량 도구(X 창이 아닌)를 사용합니까?
답변1
명령을 시도해 볼 수도 있습니다 fbset
.
실행하면 fbset -i
"타이밍" 라인을 포함하여 현재 프레임 버퍼 설정에 대한 일부 정보가 표시됩니다. 나에게 있어서 모든 값은 0-s입니다. 이는 아마도 사용되지 않는다는 의미일 것입니다. 그러나 거기에 실제 값이 있으면 조정해 볼 수 있습니다.
다음에서 발췌 man fbset
:
Display timings:
-pixclock <value>
set the length of one pixel (in picosec‐
onds). Note that the frame buffer device
may only support some pixel lengths
-left <value>
set left margin (in pixels)
-right <value>
set right margin (in pixels)
-upper <value>
set upper margin (in pixel lines)
-lower <value>
set lower margin (in pixel lines)
-hslen <value>
set horizontal sync length (in pixels)
-vslen <value>
set vertical sync length (in pixel lines)
--timings, -t ...
set all timing parameters at once in the
order <pixclock> <left> <right> <upper>
<lower> <hslen> <vslen>, e.g. -t 35242 64
96 35 12 112 2
-left
, -right
, -upper
, 매개변수를 참고하세요 -lower
. 이 값 중 하나를 늘리고 동시에 반대 값을 줄이는 명령 fbset
도 있습니다 .-move
Display positioning:
-move {left|right|up|down}
move the visible part of the display in the
specified direction
-step <value>
set step size for display positioning (in
pixels or pixel lines), if -step is not
given display will be moved 8 pixels hori‐
zontally or 2 pixel lines vertically
답변2
DP-1 왼쪽에 HDMI 화면이 있고 왼쪽에 간격을 두려는 경우 아래 스크립트를 실행할 수 있습니다.
#!/bin/bash
# Usage: .script pixel_height pixel_width
new_mode_spec=$(cvt "$1" "$2" 60 | sed -n 's/Modeline *//p')
new_mode_name=$(echo "$new_mode_spec" | grep -o '"[^"]*"')
new_mode_res=$(echo "$new_mode_name" | sed 's/"//g' | sed 's/_.*$//')
xrandr --newmode "${new_mode_spec}"
xrandr --addmode HDMI-1 "${new_mode_name}"
xrandr --output HDMI-1 --left-of DP-1 \
--mode "${new_mode_name}" \
--panning "${new_mode_res}" \
--scale-from 1920x1080 \
--output DP-1 --mode 1920x1080
echo "Changed to ${new_mode_res}, remember that it must be a multiple of 8!"
원래 해상도가 1920x1080이라고 가정하고 대상 픽셀 높이와 너비를 매개변수로 사용합니다.
부작용은 패딩이 검은색이 아니고 화면의 왼쪽 부분을 오른쪽(DP-1)에서 반복한다는 것입니다.
노트
- 관련 답변:깨진 디스플레이를 피하려고 하는 Xrandr 문제
- 다양한 설정을 시도해 보는 것이 유용합니다.아란드르, xrandr용 GUI(x11-xserver-utils).
- Wayland에서 이 작업을 수행하는 방법을 잘 모르겠습니다.