프레임 버퍼 장치에서 텍스트 콘솔을 시작하는 시스템 서비스는 무엇입니까?

프레임 버퍼 장치에서 텍스트 콘솔을 시작하는 시스템 서비스는 무엇입니까?

나는 임베디드 플랫폼으로 작업하고 있으며 /dev/fb0내 자신의 사용을 위해 명확해야 합니다(장치는 직렬 콘솔을 통해 액세스할 수 있고 화면은 정보를 표시하는 데 사용되며 X는 없습니다.).

그래픽 모드에서 다중 사용자 모드로 변경했는데 default.target이제 프레임 버퍼 장치에서 로그인 프롬프트와 함께 getty가 열리지만 찾을 수 없습니다.어느서비스는 딱 그래요. 실수로 직렬 콘솔 로그인을 비활성화하고 열려 있는 lsof항목을 표시하고 싶지 않습니다 /dev/fb0.

도움이 된다면 배포판은 Yocto Linux입니다.

답변1

lsof열면 아무것도 표시되지 않습니다 /dev/fb0.

하지 않을 것이다. Linux 커널에는 터미널 에뮬레이터 프로그램이 내장되어 있습니다. 열린 파일 핸들이 있는 실행 중인 프로세스로 표시되지 않습니다. 이는 내부 커널 인터페이스를 사용하여 액세스하는 프레임 버퍼 및 입력 이벤트 하위 시스템 위에 위치합니다. 이는 일련의 애플리케이션 모드 시스템에 제공됩니다.커널 가상 터미널devices /dev/tty1등. 아래 의사 파일은 /sys활성 KVT 번호와 일련의 CGA 스타일 비디오 버퍼링 장치 /dev/vcsa1등을 보여줍니다.

이러한 응용 프로그램 모드 시스템 중 하나는 물론 커널 가상 터미널에서 실행되도록 구성할 수 있는 getty+ login시스템이며, (발견한 대로) 기본적으로 그렇게 합니다. getty문서화된 시스템 메커니즘을 사용하면 이러한 프로세스를 쉽게 제거 할 수 있습니다 .

이전 System 5 init시스템에서는 모든 getty레코드가 입니다 /etc/inittab. BSD init시스템에서는 모든 getty레코드가 입니다 /etc/ttys. systemd 시스템에서는 상황이 약간 간접적입니다.

  • "로그인" 데몬은 logind시스템 속어에서 "좌석"이라고 불리는 것에 대해 알고 있습니다. "좌석" 0은 메인 프레임 버퍼와 모든 커널 가상 터미널이 있는 좌석입니다.
  • 그 자리에 logind시작해 보세요질소systemd 서비스 [email protected]에서 .autovt@ttyN.service질소NAutoVTs설정에서 설정 됩니다 /etc/systemd/logind.conf.
  • 이러한 시스템 서비스는 다음에서 파생됩니다.서비스 템플릿 단위,명명 된 [email protected]. 이것템플릿 매개변수위에서 언급한 것처럼 커널 가상 터미널의 장치 이름입니다.장치 파일, 존재하다 /dev/.
  • [email protected]기본 구성에서 이는 에 대한 심볼릭 링크입니다 [email protected].
  • 커널 가상 터미널 장치 파일을 통해 입출력용으로 설정된 프로그램을 [email protected]실행하는 방법을 설명합니다 .getty

따라서 이들 중 하나를 중지하려면 로 이동하여 서비스를 자동으로 시작하지 않도록 /etc/systemd/logind.conf구성하십시오 (철저하게 수행하려면 가상 터미널을 그대로 두지 마십시오).logindautovt

그러나 그것이 전부는 아닙니다. 터미널 에뮬레이터 프로그램은 커널에서 활성 상태로 유지되며 커널 VT로 전달되는 로그 메시지부터 주기적 커서 깜박임까지 모든 것이 터미널 에뮬레이터가 프레임 버퍼 사용을 방해할 수 있습니다. 그러나 이것은 커널 터미널 에뮬레이터 프로그램과 협상하기 위해 프레임버퍼를 사용하는 프로그램을 코딩하는 문제이며, 여기에 이미 답변되어 있습니다.

그런데 직렬 콘솔 로그인은 완전히 다른 경로를 통해 이루어집니다. ㅏ발전기시작 시 템플릿 단위의 인스턴스를 생성하고 [email protected], 찾거나 알려준 각 커널 콘솔 장치에 대해 한 번씩 인스턴스화합니다.

추가 읽기

관련 정보