TTY 콘솔을 활성화하는 방법은 무엇입니까?

TTY 콘솔을 활성화하는 방법은 무엇입니까?

나는 약간의 수정을 거쳐 기본 Chrome OS 커널(4.4.x)을 사용하여 Chromebook(Eve)에서 Linux(Debian 10)를 실행하고 있습니다. 예상대로 프레임 버퍼를 전환하는 Ctrl++ 를 통해 TTY 콘솔에 Alt액세스할 수 없다는 점을 제외하면 모든 것이 (대부분) 잘 실행됩니다.Fn Ctrl+ F1DM으로 전환, Crtl+ F2데스크탑으로 전환), TTY 에뮬레이션 디스플레이를 위한 프레임 버퍼가 없는 것 같습니다(화면은 Ctrl+에서 정지 F3되지만 Crtl+를 통해 데스크탑을 복원할 수 있음 F2). 부팅 시 로그가 표시되지 않는 점을 고려하면 이는 커널 구성 문제인 것으로 추측됩니다. 커널 구성에서 TTY, 콘솔, 프레임버퍼 관련 드라이버 옵션이 활성화되어 있고 tty기기는 /dev. 콘솔은 작동하지만(다른 것들은 작동하지 않는 것 같습니다) Chrome OS 커널 내에서 작성되지 않은 것이 아닙니다.

Eve와 Debian의 기본 구성을 비교한 결과 동일한 구성 항목(그 중 532개)에 대해 서로 다른 옵션이 선택되었음을 확인했으며 다음과 같은 차이점을 발견했습니다.

CONFIG_ITEM                         Debian      Eve
CONFIG_AGP_AMD64                    y           is not set
CONFIG_AGP_SIS                      y           is not set
CONFIG_AGP_VIA                      y           is not set
CONFIG_VGA_SWITCHEROO               y           is not set
CONFIG_DRM_FBDEV_EMULATION          y           is not set
CONFIG_DRM_LOAD_EDID_FIRMWARE       y           is not set
CONFIG_DRM_DP_CEC                   y           is not set
CONFIG_DRM_VGEM                     is not set  y
CONFIG_DRM_UDL                      is not set  y
CONFIG_DRM_CIRRUS_QEMU              is not set  m
CONFIG_FIRMWARE_EDID                y           is not set
CONFIG_FB_BOOT_VESA_SUPPORT         y           is not set
CONFIG_FB_CFB_FILLRECT              y           is not set
CONFIG_FB_CFB_COPYAREA              y           is not set
CONFIG_FB_CFB_IMAGEBLIT             y           is not set
CONFIG_FB_SYS_FILLRECT              y           is not set
CONFIG_FB_SYS_COPYAREA              y           is not set
CONFIG_FB_SYS_IMAGEBLIT             y           is not set
CONFIG_FB_SYS_FOPS                  y           is not set
CONFIG_FB_TILEBLITTING              y           is not set
CONFIG_FB_VESA                      y           is not set
CONFIG_FB_EFI                       y           is not set
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION y           is not set

그러나 Debian에서 Eve 기본 구성으로 복사된 이러한 설정을 사용하여 커널을 컴파일한 후에는 아무 것도 변경되지 않았습니다. 다른 질문이 있으신가요? 도움을 주셔서 감사합니다.

답변1

~에 따르면Chromebook 개발자 문서, 전날은인텔 x86_64 Kabylake-Y하드웨어. 따라서 아마도 i915커널 모드 설정을 사용하는 디스플레이 드라이버를 사용하고 있는 것 같습니다 .

Chromebook이 어떤 종류의 펌웨어를 사용하는지 잘 모르겠습니다. Coreboot를 사용하는 경우 i915드라이버가 제어할 때까지 디스플레이 하드웨어가 완전히 초기화되지 않은 상태로 남아 있을 수 있습니다. UEFI를 사용하는 경우 CONFIG_FB_EFI초기 부팅 메시지가 필요할 수 있습니다.

커널 구성 옵션의 도움말 텍스트 CONFIG_DRM_FBDEV_EMULATION(강조 항목):

CONFIG_DRM_FBDEV_EMULATION:

레거시 fbdev 지원이 필요한 경우 이 옵션을 선택하십시오.이 지원은 모드 설정 드라이버 외에 Linux 콘솔 지원도 제공합니다..

의심스러우면 "Y"라고 말하세요.

또한 해당 CONFIG_FRAMEBUFFER_CONSOLE옵션도 확인하십시오.

드라이버가 정상이면 ++ [email protected]자동 시작 도 필요 합니다 . 이는 일반적으로 존재하는 경우 자동으로 수행되며 (즉, 커널 가상 콘솔 하위 시스템이 성공적으로 활성화되었습니다. 실제로는 선택 사항이므로 x86 PC 하드웨어에 익숙한 사람들을 놀라게 할 수 있음) 다른 시스템이 장치를 대신하지 않습니다 .CtrlAltF3systemd/dev/tty0/dev/tty[1-6]

귀하의 문제는 텍스트 콘솔이 없어서 CONFIG_DRM_FBDEV_EMULATION프로세스 가 ./dev/tty0gettysystemd

Chromebook에는 분명히 PC 스타일 BIOS가 없기 때문에 VGA 텍스트 콘솔도 없으므로 CONFIG_VGA_CONSOLE아무 작업도 수행하지 않습니다.

답변2

프레임버퍼 장치 모듈이 로드되었음에도 불구하고 /dev/fb0이 존재하지 않는다는 것을 확인한 후 fbcon알아냈습니다.

  1. i915내장 모듈이 아닌 로드 가능한 모듈로 빌드하고 fbdev레거시 지원이 활성화되어 있는지 확인하세요. (로드 가능한 모듈로 구축하는 것은 아마도 불필요할 것입니다. 단지 블랙리스트에 추가하거나 제거할 수 있는지 확인하기 위해 수행했지만 i915요점은 레거시 fbdev지원을 선택하는 것입니다.)
  2. 프레임버퍼 콘솔( fbcon)을 활성화하고 모듈로 빌드합니다.
  3. tty도 활성화되어 있는지 확인하십시오.
  4. 충돌하는 프레임 버퍼 모듈과 관련된 모든 루프를 편집 /src/kernel/drivers/gpu/drm/i915/i915_drv.c및 제거하거나 주석 처리합니다 if("충돌"을 검색하면 4.4.250-R89 커널 소스에 이러한 루프가 3개 있습니다). 그렇지 않으면 실수가 발생할 수 있습니다. 분명히 i915ChromeOS 드라이버는 프레임 버퍼 콘솔을 갖기를 원하지 않습니다.
  5. 커널과 모듈을 빌드합니다. 리눅스에 설치하세요.
  6. 시작 시 로드하려면 fbcon에 추가하세요 (기본적으로 로드되지 않음). /etc/initramfs-tools/modules또는 TTY 에뮬레이션을 사용해야 하는 경우 수동으로 로드할 수 있습니다.
  7. initramfs 및 grub을 업데이트하십시오. 재시작. 커널 부팅 메시지를 확인하고 Ctrl+를 사용하여 FnTTYn에 액세스할 수 있어야 합니다.

관련 정보