나는 /dev/console 장치를 이해하려고 노력했지만 명확하지 않은 몇 가지 사항이 있습니다.
이 장치의 목적은 무엇입니까? 내가 아는 한, 커널이 메시지를 표시하는 곳이 바로 여기입니다. 그렇죠?
콘솔로 지정된 가상 터미널에서는 작업 제어가 허용되지 않습니다. 왜? 이것은 단지 커널이 시스템 메시지를 인쇄해야 하는 다른 작업을 실행하는 것을 막으려고 하기 때문입니까?
나에게는 /dev/console이 현재 가상 콘솔인 tty0을 가리키는 것 같습니다. 나는 이것을 간단한 것을 기반으로 찾았습니다.시험꽤 흔한 구성인 것 같습니다. 그러나 나에게 이것은 tty0이 작업 제어를 비활성화해야 한다는 것을 의미합니다. 이는 모든 콘솔이 작업 제어를 비활성화해야 함을 의미하며 이는 좋지 않습니다. 생각만 해도 머리가 아프네요. 또한 tty0이 콘솔인 경우 tty1에서만이 아니라 현재 터미널에서 커널 메시지를 받아야 하지 않나요?
답변1
이는 운영 콘솔이 종이(목재 섬유로 만든 얇고 유연한 재료, 일반적으로 흰색)(삭제된 흔적을 남기지 않음)에 인쇄하는 실제 텔레타이프 기계였던 시절의 역사의 유물입니다. 시간이 지남에 따라 이 정보는 주로 syslog 및 dmesg 기능으로 전달되었습니다. 현재 실제 콘솔을 갖고 있지만 여전히 이 정보가 필요한 시스템은 거의 없기 때문입니다.
내 Linux 3 시스템에서 /dev/console이 tty0이라는 아이디어를 어디서 얻었는지 모르겠습니다. /dev/console, tty 및 ttyprintk는 모두 장치 메이저 번호가 5인 반면 tty0 및 기타 모든 의사-tty는 5입니다. 주요 번호는 5입니다. 장치 번호는 4입니다. 이는 서로 다른 드라이버(또는 동일한 드라이버에 대해 단순히 다른 모드)를 사용한다는 의미입니다.
답변2
이 책Linux tty에 대한 좋은 소개와 Linux 커널의 fgrep
ing은 Linux 콘솔의 모습을 보여줍니다. 많이있다register_console
drivers/char/*.c
구현하다Linux 커널에서 사용할 수 있는 시스템 콘솔입니다. 특정 Linux 설치에 따라 콘솔 역할을 해야 하는 특정 장치가 결정될 수 있습니다. 부팅 시 커널 매개변수를 전달하여 지정할 수도 있고, 다른 기술이 있을 수도 있습니다. 이것단말기구현은 기본값이며 다음과 같이 말할 수 있습니다.사실은표준이지만 다른 표준도 존재합니다.직렬 콘솔.
/dev/console
전용 전공이 있습니다: 부전공. 왜? 왜냐하면커널 자체긴급 메시지를 보고할 때 커널 장치의 기본 사용자입니다. struct tty_driver *console_driver
필요한 루틴을 가리키는 커널 개체가 있습니다 . 그렇다면 사용자 모드 프로그램에 대한 인터페이스를 제공하지 않는 이유는 무엇입니까? /dev/console
기본 설정과 실제로 동일한지 /dev/tty0
, 아니면 약간의 차이점이 있는지 확실하지 않습니다 .
이제 작업 제어에 대해 알아보겠습니다 tty0
. tty0
실제로 터미널을 시뮬레이션하고 터미널을 가리키지 않고 tty
어떻게 이것이 가능합니까 ?현재 활동 중? Linux 커널은 프로세스가 간헐적 으로 tty0
충돌하는 "장치"에 연결되는 것을 방지합니다. 프로세스에 대한 제어가 없기 때문에 작업 제어가 불가능합니다(그런데 어떤 법적 목적으로 쉘에 데이터를 공급할 수 있습니까?). 하지만 이는 실행 중인 작업을 제어할 수 있는 가능성과는 아무런 관련이 없습니다.tty1
tty7
tty0
tty0
특정한가상 콘솔. tty
실제로 번호가 매겨진 다른 터미널은 어떤 목적으로든 콘솔 응용 프로그램에 사용할 수 있는 합법적인 터미널입니다.
답변3
/dev/console은 로컬 터미널 세션(머신에 연결된 모니터와 연결된 콘솔)을 추상화한 것입니다.
그 목적은 시스템이 단일 사용자 모드에서 실행되는 경우에도 원격 액세스를 제공하기 위해 주로 서버에 있습니다. 이러한 콘솔은 (대부분의 경우) eth0 네트워크가 다운되면 eth0 장치에 바인딩됩니다.