추가 읽기

추가 읽기

/etc/default/grub콘솔을 다음으로 설정하도록 수정한 커널에 제공된 console= 매개변수를 이해하려고 합니다.제3터미널예를 들어 (내가 선택한 이유는제3터미널상대적인터미널 S0(직렬 포트가 없습니다): 여기에 이미지 설명을 입력하세요.

콘솔을 다음으로 설정한다고 가정합니다.제3터미널커널은 다음으로만 메시지를 출력합니다.제3터미널다른 tty는 없습니다. Ctrl++를 사용하여 Alt입력 했습니다 .F2터미널 2Alt그리고 + SysRq+ 키를 누르세요 H. 확인해보면 dmesg거기에 있는 메시지를 볼 수 있어요.

이렇게 하면 현재 커널에 대한 메시지를 볼 수 있습니다.터미널 2. 다음으로 이동하여제3터미널메시지가 표시되지 않습니다.

완벽을 기하기 위해 콘솔은 다음을 가리키도록 올바르게 구성되었습니다.제3터미널:

~$ cat /sys/devices/virtual/tty/console/active
tty3

이 외에도 공통 helloworld모듈을 컴파일하고 이에 대해 insmod 및 rmmod를 수행했습니다. 현재 활성 상태에 출력이 나타납니다.단말기지정된 콘솔 대신(제3터미널).

왜 이런 일이 발생하는지 이해하지 못합니다. 누군가 이것을 설명할 수 있나요? 콘솔 매개변수를 잘못 이해했나요?

답변1

Linux 명령줄 설정에 사용된 이름은 console=파일 시스템에서 조회되는 장치 파일 이름이 아닙니다. 그들은 실제로콤비네이션중 하나등록된 이름그리고색인, "tty3"은 등록된 이름 "tty"이고 인덱스는 3입니다.

등록된 이름은 다음과 같습니다.내부 이름장치 드라이버는 콘솔 I/O 핸들러를 등록하는 데 사용됩니다. 이는 사용자 공간 장치 이름과 전혀 일치할 필요가 없습니다. "tty"는 사용된 이름과 일치합니다.커널 가상 터미널서브시스템콘솔 I/O 핸들러를 등록할 때.

색인아니요KVT 번호. 장치 드라이버가 제공하는 경우 특정 콘솔 I/O 처리기 인스턴스를 일치시키는 데 사용됩니다.2개 이상의 콘솔 I/O 핸들러같은 이름. 이것은하지만 사실은 그렇지 않아요KVT 하위 시스템의 경우 콘솔 I/O 핸들러만 등록합니다. 이 경우 인덱스는 실제로 대부분 무시됩니다. 이것은 실제로 인덱스 3에서 일어나는 일입니다.

예, Linux doco입니다.또 다른 말이 있다. 리눅스 문서틀렸다. 다시.

또한 KVT 하위 시스템을 콘솔로 선택하면 기본적으로 모든 콘솔 출력이 기록됩니다.첫 번째,도착하다현재 활동 중KVT. 이는 변경될 수 있지만어쩔 수 없지사양의 커널 명령줄에 사용되는 등록 색인 번호입니다 console=. 대신 KVT 장치에 대해 TIOCL_SETKMSGREDIRECT하위 명령을 실행하여 변경됩니다 TIOCLINUX ioctl()(최상의 결과를 얻으려면 KVT 장치가 리디렉션됨)도착하다그렇지 않으면 장치 파일이 열릴 때까지 KVT가 생성되지 않으므로 KVT가 전혀 존재하지 않을 수 있습니다.

Linux doco는 이런 실수를 하지 않습니다. 아주 간단해요TIOCL_SETKMSGREDIRECT기록이 전혀 없어요console_ioctl맨 페이지 에서 .

프로그래머가 아닌 경우 다음 도구를 통해 이 기능에 액세스할 수 있습니다.오해의 소지가 있는 Busybox setlogcons명령 로깅그리고앨런 크루즈의setconsole.

추가 읽기

  • 조나단 데보인 폴라드(2018). "리눅스 vt". 장비. Nosh 툴셋.
  • 조나단 데보인 폴라드(2018). "리눅스 콘솔". 장비. Nosh 툴셋.

관련 정보