나는 모든 면에서 "가장자리가 잘려진"(즉, 모든 픽셀이 표시되지 않는) 새로운 저렴한 8인치 TFT LCD 모니터를 가지고 있습니다. 이는 HDMI 입력을 사용하는 TV에 주로 영향을 미치는 것으로 보이는 "오버스캔" 때문인 것으로 알고 있습니다.
내 커널은 먼저 efifb로 부팅한 다음 inteldrmfb로 전환합니다. 문제는 두 프레임 버퍼 드라이버 모두에서 발생합니다. 나는 X 창을 사용하지 않으며 이 작은 모니터에서 X를 사용하고 싶지도 않습니다. Linux 텍스트 콘솔을 사용하고 싶습니다. 따라서 "xrandr"을 사용하는 솔루션은 더 이상 사용되지 않습니다.
나는 열심히 노력했다모든 것"비디오" 커널 부팅 매개변수를 사용하여 해상도 설정을 조정하고 fbset를 사용하여 부팅 후 타이밍 설정을 조정하는 것을 포함하여 이 문제를 해결하기 위한 드라이버 수준(커널 수준) 프레임 버퍼 설정에 대한 정보를 찾을 수 있지만 fbset으로 무엇을 하든 상관 없습니다. , 무시된 것 같습니다.
그래서 내 질문은: 프레임 버퍼 드라이버보다 더 높은 수준에서 프레임 버퍼 콘솔 주위에 여백을 추가할 수 있는 방법이 있습니까?
나는 "stty"를 사용하여 Linux가 콘솔에서 사용할 열과 행의 수를 줄일 수 있다는 것을 알고 있지만 이것은 오른쪽과 아래쪽의 문제만 해결하고 여전히 왼쪽의 문자가 잘리는 상태로 남게 됩니다. 맨 위. "stty"를 사용하여 콘솔에 "첫 번째 열" 및 "첫 번째 행" 오프셋(예: 일부 공백 패딩)을 추가하는 방법이 있습니까? stty를 사용하지 않는 경우 다른 경량 도구(X windows 아님)를 사용하시겠습니까?
답변1
이 명령을 시도해 볼 수 있습니다 fbset
.
실행하면 fbset -i
"타이밍" 라인을 포함하여 현재 프레임 버퍼 설정에 대한 일부 정보가 표시됩니다. 나에게는 모든 값이 0이므로 사용되지 않는다는 의미일 수 있지만 거기에 실제 값이 보이면 조정해 볼 수 있습니다.
발췌 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에서 이 작업을 수행하는 방법을 잘 모르겠습니다.