나는이 텍스트 부분을 어디에 넣을 지 궁금해했다. 자신의 웹 사이트가 가능한 후보이거나 superuser.com에서 내 주제와 가장 가까운 스레드를 찾으십시오 (그리고 아마도 도움이되었을 것입니다). 이것이 제가 여기에 도착한 방법입니다 :-)
내 특별한 문제는 텍스트 콘솔에 특정 비디오 모드를 강제 적용하는 방법이었습니다. 시스템 설정 : Debian 9 Haswell 하드웨어에 스트레치가 적용되었습니다. Linux에서 i915 드라이버가 처리하는 IGP (현재는 KVM 및 DRI / DRM을 지원합니다). 어떤 어리석은 아날로그 KVM 스위치는 DDC / EDID를 통해 PC에 최대 해상도가 1600x1200이지만 실제로는 1280x1024의 LCD 디스플레이를 사용할 수 있다고 말하면서 :-)
나는 주변에서 놀기 시작했다. vbetool
과 fbset
이는 KMS + DRM과 호환되지 않기 때문에 목적에 맞지 않거나 부적합합니다.
"inteldrmfb"는 KMS + DRM에 대한 단순한 것으로 보이며 (자체 커널 모듈에 구현되지 않은 것으로 보입니다) 형상 매개 변수는 읽기 전용입니다.
최소한 fbset은 능동적 인 해상도를 수동적으로 표시 할 수 있습니다.이 해상도에는 약간의 정보가 있습니다.
그러나 커널 명령어 라인에서 해상도와 수직 리프레시를 설정하는 방법이 있습니다 ( "linux"로 시작하는 라인의 부트 로더 매개 변수는 현대의 끝 부분에 위치합니다). 멀티 라인 grub.conf 섹션 참조).
부팅 할 때 매개 변수를 입력 할 수 있습니다. e
Grub은 타임 아웃을 카운트 다운합니다. 거기서부터 도움을 청하십시오. 편집이 만족 스러우면 Ctrl + X 또는 F10을 눌러 수정 된 프로파일을 부팅하십시오. (변경 사항은 일시적입니다 - 부팅시 실행중인 커널의 / proc / cmdline에 나타나지만 grub.conf에 기록되지는 않습니다.)
추가 부팅 매개 변수 (커널 cmdline 인수)를 영구 저장하려면 데비안에서 다음 명령을 입력해야합니다. /etc/default/grub
,라는 변수에 GRUB_CMDLINE_LINUX_DEFAULT
. 그리고, 달리다. update-grub
.
이제 args.
첫째, 당신은 i915.modeset=1
(그래픽 서브 시스템이 Intel IGP 인 경우). 내가 한 동일한 문제, 즉 커널이 너무 높은 해상도를 설정하는 경우, 기본적으로 이미 modeet = 1 (커널에 컴파일 됨)이 있습니다.
cmdline의 문법에 어려움을 겪고있는 동안, 어떤 작업 그래픽 모드에서 i915.modeset=0
. 이것은 분명히 그래픽 모드 변경을 막아 주며 콘솔 로그인까지는 거의 모든 고전적인 80x25 문자 콘솔을 사용하게됩니다. dmesg에는 / dev / fb0 및 DRM 디버그 메시지가 없음을 알 수 있습니다 (자세한 내용은 read on).
또한 옵션에 유의하십시오. quiet
. 이것은 모드 설정의 유무와 관계없이 작동합니다. 명백하게 커널 인쇄를 막는다.
콘솔에 메시지 보내기 (/ dev / tty) = 빈 화면이 나타남
몇 초 동안 기다리면 로그인 프롬프트가 나타납니다.
이것은 데비안의 기본값입니다. (실제로 현대의 데비안에서는 systemd로,
화면에 시스템 부팅 메시지가 표시됩니다.
커널 로그 ...)
요점은 커널 메시지를 다시 원한다면
커널 명령 행에서 "quiet"라는 단어를 지우고 그 명령을 사용하십시오
하나의 부팅을위한 라인 (Grub에서 "e"를 누르고, 편집하려면 ctrl + x를 눌러라.)
또는 영구히 (/ etc / default / grub & amp; & amp; update-grub을 편집하십시오).
이제 마침내 요점 : 일단 당신이 i915.modeset=1
,
당신은 또한 video=<xres>x<yres>@framerate
.
내 경우 엔, video=1280x1024@60
또는 video=1024x768@60
.
가능한 옵션이 더 있습니다. 관련 항목을 참조하십시오. 아치 위키의 장 .
예를 들어 색상 심도를 지정할 수도 있습니다.
하나의 비디오 출력 포트에만 모드를 적용 할 수 있습니다.
(DRM 용기에있는 "커넥터"라고 함).
지정된 모드는 커널에 알려진 모드 중 하나, 즉 "EDID 모드 라인"중 하나와 일치해야합니다. 커널은 모니터에서 DDC를 통해 또는 / lib / firmware에서 얻을 수 있거나 컴파일 될 수있는 이러한 데이터 블록의 목록을 유지합니다. 즉, 이상한 지오메트리를 지정할 수 없습니다.
일부 하우투에서는, video=<xres>x<yres>
,와 같은 video=1024x768
.
해상도가 나타나기 때문에 원하는 효과가 있습니다.
출력에 - 당신은 프레임 속도에 대한 결정을 운전사에게 맡겼지만,
가능한 가장 높은 프레임 속도를 선택하는 경향이 있습니다 ( "모드 라인"
EDID 블록 세트에서 사용 가능). 예를 들면, 내 경우에 그것은 밝혀졌다.
운전사가 선택한 1024x768@85
, 그것은 CRT 시대의 좋은 선택이었을 것이다. 그러나 많은 오늘의 LCD 's를 위해 범위에서 아프다. 싸구려 현대 LCD (FreeSync 이전)는 일반적으로 60Hz 프레임 속도를 사용하므로 DDC가없는 경우 또는 단점이있는 경우 명시 적으로 설정해야합니다.
일부 답변을 검색하는 동안이 문제에 대한 언급이 끊이지 않았습니다. Dave Airlie의 패치 세트 - 이것은 비디오 = cmdline arg 처리를 가져옵니다. 몇년 전에 바닐라 리눅스에 합병 된 것으로 밝혀졌습니다.
필자의 경우 모니터는 1600x1200에 의해 구동되었으며 대처할 수 없어 "범위를 벗어났습니다"라고보고했습니다. 다양한 cmdline 인수를 시도하면서,
나는 단지 시도했다. video=1024x768
이로 인해 모니터에서 "범위를 벗어났습니다".
외부에서, 모호한 오류 메시지에 의해, 그것은 cmdline arg
전혀 효과가 없었다. 나중에 내가 놓친 모든 것이 @60
접미사 :-)
여기서 흥미로운 점은, 방법 내가 발견.
DRI / DRM 서브 시스템을 만드는 다른 커널 cmdline 인수가있다.
더 복잡한 디버그 로그를 인쇄하십시오.
커널 버전 4.1 미만 :
drm.debug=0xe
커널 버전 4.1 이상 :
drm.debug=0x1e log_buf_len=1M
( 출처 )
나는 붙이고있다. 내 컴퓨터의 예제 디버그 로그 .
집중할 사항 (검색 할 키워드) : Kernel command line
, cmdline
, adjusted mode
, [drm:
"커넥터 이름"은 여기에서 수집 할 수 있습니다. ls /sys/class/drm/
video = ... cmdline arg 구문은 다음을 취하지 않습니다.
/ sys / class / drm에있는 "card-"접두사.
video = 및 커넥터 이름의 구문은 약간 자세하게 설명되어 있습니다.
관련 지부에서 아치 리눅스 위키 .
이제 기어 교체 / 주제 변경.
이 스레드의 원래 질문은 비디오 모드 지오메트리를 수정하는 방법이었습니다.
필자는 이전에 X 및 Windows (최신 Intel IEGD 사용)에서이 작업을 수행했습니다.
리눅스에서 kvm + drm, 기하학과 타이밍을 조정할 수있는 유일한 방법
분명히 자신의 EDID 파일을 넘겨주는 것입니다.
수공예품이 있어야한다. 거의.
EDID 구성은 다음과 같습니다. 간략히 설명 된 바닐라 커널 소스에 포함 된 설명서의 한 조각.
Makefile과 예제 EDID 정의 라이브 상위 디렉토리에 .
일부 .S를 선택하고, 자신의 파일로 복사하십시오.
(Makefile 맨 위에있는 명명 규칙을 참조하십시오).
타이밍을 편집하고, EDID 바이너리를 빌드하고 ...
잘하면 그것은 당신의 문제를 해결합니다 :-)
타이밍 / 픽셀 수를 계산하려면 몇 가지 계산이 필요합니다.
그리고 몇 가지 대체 역사적 표준이 있습니다.
너는 잘 따르고 서로 갈등이있다.
(디스플레이 타이밍 표준의 진화 단계)
- CRT 시대
GTF
, - LCD 시대
DMT
또는 CVT
, - 그리고
CVT-RB
(블랭킹 감소).
손으로 숫자를 계산하거나 표준 모드의 도구와 표가 있습니다.
"EDID 계산기"또는 "모형 계산기"또는 일부 검색을 시도해보십시오. 심지어 청초한
Linux 명령 행 도구 그 일 때문에.
참조 항목
모형 데이터베이스 .
당신의 특별한 문제는 아마도 이동에 의해 해결 될 수 있습니다.
오른쪽으로 HSYNC 펄스 (극성을 변경해보십시오),
또는 동기 펄스 및 / 또는 총 블랭킹 시간을 만들어서
상대적으로 넓은, 또는 (제안한대로)
가시 / 가시 픽셀 해상도 (8의 배수).
블랭킹을 더 넓게 만들면,
원래의 프레임 속도를 유지하는 픽셀 클럭.