Linux 콘솔

Linux console
Linux 커널의 심플한 구조: VT 서브시스템
Knoppix 부팅을 보여주는 프레임 버퍼 콘솔.펭귄 그래픽의 존재는 텍스트 모드 콘솔이 아닌 프레임 버퍼 콘솔임을 나타냅니다.

Linux 콘솔은 Linux [1]커널 내부의 시스템 콘솔입니다.시스템 콘솔은 모든 커널 메시지 및 경고를 수신하고 단일 사용자 모드에서 [2]로그인을 허용하는 장치입니다.Linux 콘솔을 사용하면 커널 및 기타 프로세스가 사용자에게 텍스트 출력을 보내고 사용자로부터 텍스트 입력을 받을 수 있습니다.일반적으로 사용자는 컴퓨터 키보드로 텍스트를 입력하고 컴퓨터 모니터에서 출력 텍스트를 읽습니다.Linux 커널은 가상 콘솔을 지원합니다.이 콘솔은 논리적으로 분리되어 있지만 동일한 물리 키보드와 [3]디스플레이에 액세스합니다.Linux 콘솔(및 Linux 가상 콘솔)은 Linux 커널의 VT 서브시스템에 의해 구현되며 사용자 공간 소프트웨어에 [4]의존하지 않습니다.이는 단말기를 에뮬레이트하는 사용자 공간 프로세스인 터미널 에뮬레이터와는 대조적이며 일반적으로 그래픽 디스플레이 환경에서 사용됩니다.

Linux 콘솔은 커널의 첫 번째 기능 중 하나이며 1991년 Linus[5] Torvalds에 의해 처음 작성되었습니다(Linux의 역사 참조).주요 실장프레임버퍼와 텍스트모드 두 가지가 있어요최신 Linux 디스트리뷰션에서는 프레임 버퍼 구현이 기본이며 커널 모드 설정과 함께 시스템 [6]부팅 시 그래픽 표시 등의 디스플레이 하드웨어 및 기능을 커널 수준에서 지원합니다.레거시 텍스트 모드 실장은 CGA, EGA, MDA 및 VGA 그래픽 카드를 탑재PC 호환 시스템에서 사용되었습니다.x86 이외의 아키텍처에서는 그래픽 카드가 텍스트 [6]모드를 구현하지 않았기 때문에 프레임 버퍼 모드를 사용했습니다.Linux 콘솔에서는 고정 크기의 비트맵, 모노스페이스 글꼴을 사용합니다.기본값은 [6]문자당 8x16 픽셀입니다.

Linux 콘솔은 옵션 커널 기능으로 대부분의 임베디드 Linux 시스템에서는 사용할 수 없습니다.이러한 시스템은 일반적으로 대체 사용자 인터페이스(예: 웹 기반)를 제공하거나 그래픽 사용자 인터페이스로 즉시 부팅하여 사용자와의 주요 대화 수단으로 사용합니다.리눅스 콘솔의 다른 구현에는 새로 고침 가능한 점자[7] 디스플레이를 지원하는 점자 콘솔직렬 포트 [8]콘솔이 있습니다.

목적

Linux 콘솔을 사용하면 커널 및 기타 프로세스가 텍스트 기반 메시지를 사용자에게 출력하고 사용자로부터 텍스트 기반 입력을 받을 수 있습니다.Linux에서는 가상 터미널,[9] 시리얼 포트,[10] USB 시리얼 포트,[11] 텍스트 모드의 [12]VGA, 프레임 버퍼 등 [13]여러 디바이스를 시스템 콘솔로 사용할 수 있습니다.일부 최신 Linux 기반 시스템은 커널 기반 텍스트 모드 입출력이 권장되지 않으며 시스템 부팅 중에 그래픽 로고 또는 진행 표시줄이 표시되고 그래픽 사용자 인터페이스(X 등)가 즉시 시작됩니다.데스크톱 디스트리뷰션에서는 Org Server, Android에서는 Surface Flinger).

커널 부팅 중 콘솔은 일반적으로 커널 부팅 로그를 표시하기 위해 사용됩니다.부트 로그에는 검출된 하드웨어에 대한 정보와 부트 프로시저 상태에 대한 업데이트가 포함됩니다.현시점에서는 커널이 유일한 소프트웨어이기 때문에 사용자 공간(syslog )을 통한 로깅은 불가능하기 때문에 콘솔은 이 정보를 출력하기 위한 편리한 장소를 제공합니다.커널은 부팅이 완료되면 init 프로세스(콘솔에도 출력을 송신)를 실행합니다.이 프로세스는 백그라운드 데몬의 부팅을 포함한 나머지 시스템의 부팅을 처리합니다.

init 부트 프로세스가 완료되면 콘솔은 여러 가상 단말기를 다중화하기 위해 사용됩니다(Ctrl-Alt-F1, Ctrl-Alt-F2 등, Ctrl-Alt-LeftArrow, Ctrl-Alt-RightArrow 또는 chvt[14] 눌러 액세스 가능).가상 단말기에서 getty 프로세스가 실행되어 /bin/login이 실행되어 사용자를 인증합니다.인증 후 명령어셸이 실행됩니다.가상 터미널은 콘솔과 마찬가지로 Linux 커널 [15]수준에서 지원됩니다.

Linux 콘솔은 터미널 유형의 "linux"를 구현하며 사용하는 이스케이프 시퀀스는 console_codes man [16]페이지에 있습니다.

가상 콘솔

가상 콘솔을 사용하면 여러 텍스트 버퍼를 저장할 수 있으므로 서로 다른 콘솔 프로그램을 동시에 실행하면서도 서로 다른 컨텍스트의 사용자와 상호 작용할 수 있습니다.사용자의 관점에서 보면 여러 개의 독립된 콘솔과 같은 착각을 일으킵니다.

각 가상 콘솔은 고유한 문자 집합과 키보드 레이아웃을 가질 수 있습니다.Linux 2.6에서는 각 가상 콘솔에 다른 글꼴을 로드할 수 있는 기능이 도입되었습니다(2.6보다 이전 버전의 커널은 필요할 때만 글꼴을 변경합니다).

텍스트 모드 콘솔

텍스트 모드 실장은 레거시 CGA/EGA/MDA/VGA 비디오 카드를 탑재한 PC 기반 시스템에서 사용되며 텍스트 기반 비디오 모드를 구현합니다.텍스트 모드에서는 커널이 2D 배열의 문자를 비디오 카드에 송신하고 비디오 카드가 문자를 픽셀로 변환하여 표시합니다.

글꼴, 문자 세트 및 키보드 레이아웃

텍스트 버퍼는 코드 포인트 및 문자 속성 측면에서 텍스트 화면의 내용을 설명하는 VGA 메모리의 일부입니다.텍스트 버퍼 및 글꼴의 코드 포인트는 일반적으로 텍스트 단말의 의미론에서 사용되는 문자 인코딩과 동일하지 않습니다.화면의 문자 세트는 현재 글꼴에 따라 결정됩니다.텍스트 화면은 다음과 같이 처리됩니다.console.cconsolemap.c 드라이버.폰트나 단말 인코딩을 변경하는 유틸리티가 있습니다.콘솔차라고 불립니다.

Linux 커널(keyboard.c 드라이버)은 키보드 입력(키보드 레이아웃)을 거의 완벽하게 지원하지만 서로 다른 문자 집합과 상호 작용하지 않기 때문에 약간 일관성이 없습니다.레이아웃은 loadkeys 유틸리티에 의해 로드됩니다.

이들 2개의 유틸리티와 대응하는 데이터 파일은 Linux 디스트리뷰션과 함께 제공되는 Linux Console Tools http://lct.sourceforge.net/에 포함되어 있습니다.

커널 레벨에서의 Linux의 국제화에 대한 노력은 1994년 Markus Kuhn과 Andries Brower에 의해 시작되었습니다.

텍스트 모드

Linux 콘솔은 모든 VGA 스타일의 텍스트 모드를 지원할 수 있지만 커널 자체에는 이러한 모드를 설정하는 수단이 매우 한정되어 있습니다.SVGATextMode는 표준 EGA 및 VGA 모드보다 복잡한 텍스트 모드를 지원합니다.콘솔 도구와 완전히 호환되지만 선량무, SVGAlib디스플레이 서버와 충돌합니다.

현재 가상 콘솔마다 다른 모드를 지원하지 않습니다.

Windows 및 DOS와의 비교

Microsoft Windows(모든 버전)에서는 콘솔의 완전한 기능을 지원하지 않습니다.어플리케이션 소프트웨어만을 대상으로 한 동등한 기능은 Win32 콘솔입니다.

특징 리눅스 창문들 DOS
VGA 텍스트 속성 네. 네. 네.
커스텀 폰트 가능 가능 가능
문자 집합 최대 512 글리프(VGA 텍스트),
임의의 코드 페이지 또는 UTF-8
223 문자 또는 256 문자(액세스 방식에 따라 다릅니다),
임의의 코드 페이지 또는[n 1] 유니코드
런타임 문자 집합 전환 가능[n 2] 불가능[n 1] PoV에 따라 다름
단말 에뮬레이션 네, ANSI 호환
(TERM=linux)
네, Windows 10 "Threshold 2"[17] 이후 네, ANSI
(ANSI 사용).시스템)
텍스트 모드와 GUI 간의 런타임 전환 기술적으로 가능하지만 일반적으로는[n 3] 비현실적 GUI로 돌아갈 방법이 없다 응용 프로그램에 의존하다
행과 열의 수를 변경하는 런타임 가능 가능 응용 프로그램에 의존하다
응용 프로그램 간 전환 가능 가능 제한적
(일부 TSR이 활성화 될 수 있음)
비표준 모드 가능 무리다 가능
마우스 지원 있음(gpm 등) 응용 프로그램에 의존하다 시스템 및 응용 프로그램에 따라 다름
AltKey만 눌렀을 뿐 -> program이[citation needed] 인식되었습니다. 무리다 가능 가능
  1. ab Windows NT 기반 시스템 이후 지원되는 Unicode. 코드 페이지를 전환하고 Unicode를 사용할 수 있지만 창 모드에서만 사용할 수 있습니다.또한 NT 시스템은 VGA와 호환되지 않는 자체 텍스트 버퍼 형식을 사용하여 하드웨어 텍스트 모드에서 오버헤드를 생성합니다.NT 버전이 아닌 Windows에서는 Unicode를 지원하지 않습니다.
  2. a ASCII 이외의 키보드 레이아웃은 실장에 문제가 있기 때문에 새로고침해야 합니다.
  3. a 최신 커널의 커널 모드 설정에 따라 일부 비디오 하드웨어에서 이 기능이 보다 실용적입니다.

Linux 프레임 버퍼 콘솔

Linux 프레임버퍼(fbdev)는 그래픽 하드웨어에 의존하지 않는 추상화 레이어입니다.이는 원래 Linux 커널이 텍스트모드 디스플레이가 없는 Apple Macintosh 등의 시스템에서 텍스트콘솔을 에뮬레이트할 수 있도록 구현되었습니다.이제 모든 플랫폼에서 커널 공간 텍스트 모드 에뮬레이션을 제공합니다.SVGATextMode(현재는 유지 관리되지 않음)에 비해 하드웨어 호환성이 우수하다는 장점이 있습니다.또한 VGA 텍스트 모드의 모든 기술적 제약을 극복할 수 있습니다.

Linux 프레임 버퍼 콘솔은 문자를 그리는 방식에서만 VGA 콘솔과 다릅니다.키보드 이벤트 처리와 가상 콘솔 지원은 완전히 동일합니다.

Linux 시리얼 포트 콘솔

Linux 시리얼 콘솔은 시리얼 포트를 통한 콘솔 구현으로 커널 구성의 CONFIG_SERIAL_CONSOLE 옵션에 의해 활성화됩니다.일부 임베디드 시스템 및 운영자와의 직접적인 상호 작용이 예상되지 않는 서버에서 사용할 수 있습니다.시리얼 콘솔에서는 시스템에 동일한 모드접속이 가능하지만 RS-232의 대역폭이 작기 때문에 보통 속도가 느려집니다.시리얼 콘솔은 임베디드 시스템용 소프트웨어 개발 중에 자주 사용되며 디버깅포트를 통해 액세스 가능한 상태로 남아 있을 수 있습니다.

제어 문자

콘솔은 다수의 제어 [18]문자에 응답합니다.

제어 문자 ASCII 이름 묘사
^G 벨소리
^H BS 백스페이스
^나 HT 가로 탭
^J LF 라인 피드
^K VT 세로 탭
^L FF 폼 피드
^M CR 캐리지 리턴
^N 그렇게 시프트 아웃
^O SI 시프트 인
^X 할 수 있다 이스케이프 시퀀스 취소
^Z 후보선수 이스케이프 시퀀스 취소
^[ ESC 이스케이프 / 이스케이프 시퀀스 시작
^? 아무 것도 없어요.
ALT-^[ 없음 시작 명령 시퀀스
제어 시퀀스 묘사
^[M] 리버스 라인 피드
^[D] 라인 피드
^[E] 캐리지 리턴 및 라인 피드
^[H] 탭 중지 설정
^[7 커서 저장
^[8 커서 복원
^[> 키패드를 숫자 모드로 전환합니다.
^[= 키패드를 어플리케이션모드로 전환하다
^[c] 단말기 설정 리셋
^[Z] 단말기 ID 인쇄

^[ 의 경우는, Escape 키를 누릅니다.

콘솔에서는 확장 이스케이프 시퀀스,[16][18] ANSI CSI 모드시퀀스 및 DEC 프라이빗모드시퀀스도 지원됩니다.이러한 확장 시퀀스는 색상, 깜박임, 밑줄, 명암과 반전 비디오, 벨소리 주파수와 지속 시간, VESA 화면 블랭크 간격을 제어할 수 있습니다.텍스트 공백 외에 VGA 어댑터를 스탠바이로 전환하는 방법은 없습니다.

장래의 계획

Kmscon 프로젝트는 Linux [19][20]콘솔을 위한 최신 사용자 공간 대체를 목표로 합니다.개발 우선 순위에는 멀티 모니터 설정 지원, Pango를 사용한 Unicode 글꼴 렌더링, XKB 키보드 처리GPU OpenGL [21]가속이 포함됩니다.현재 커널 구현에 대한 불만으로는 "커널 공간의 사용자 인터페이스, 코드 유지 관리 불량, 키보드 처리 불량, 글꼴 렌더링 불량, 모드 설정 및 멀티 헤드 지원 누락, 멀티 시트 인식 없음, 핫 플러그 처리 제한, VT102 [4]준수 제한" 등이 있습니다.

콘솔과 관련된 /dev/ 항목 목록

이름. 주요한 작은 묘사
/dev/tty0 c 4 0 "현재 콘솔"
/dev/tty1
...
/dev/tty63
c 4 1
...
63
가상 콘솔
(신호 제어됨)
/dev/ttyS0
...
c 4 64
...
시스템 콘솔에 적합한 시리얼 포트
/dev/module c 7 0 가상 콘솔 화면
/dev/message는 현재 가상 화면의 내용입니다.
/dev/syslog1
...
/dev/http63
c 7 1
...
63
가상 화면의 텍스트(문자 포인터 테이블)입니다.
/dev/sysloga1
...
/dev/supera63
c 7 129
...
191
속성이 있는 가상 콘솔 화면
가상 텍스트 버퍼의 전체 이미지. 처음 4바이트에는 행, 열 및 커서 위치가 포함됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Linux Console 운영 체제와 혼동하지 말 것"LinuxConsole OS". DistroWatch. Retrieved 21 June 2017.
  2. ^ "config VT_CONSOLE: Support for console on virtual terminal". Linus Torvalds. The system console is the device which receives all kernel messages and warnings and which allows logins in single user mode.
  3. ^ "config VT: Virtual terminal". Linus Torvalds. If you say Y here, you will get support for terminal devices with display and keyboard devices. These are called "virtual" because you can run several virtual terminals (also called virtual consoles) on one physical terminal. This is rather useful, for example one virtual terminal can collect system messages and warnings, another one can be used for a text-mode user session, and a third could run an X session, all in parallel. Switching between virtual terminals is done with certain key combinations, usually Alt-<function key>.
  4. ^ a b David Herrmann (2012-08-12). "Deprecating CONFIG_VT".
  5. ^ "Replacing CONFIG_VT/Linux-Console". FOSDEM. 2013-02-02. CONFIG_VT is the kernel configuration option that enables virtual terminals in the kernel. Initially written by Linus himself, it has been around since 1991.
  6. ^ a b c "The Framebuffer Console". kernel.org. The framebuffer console (fbcon), as its name implies, is a text console running on top of the framebuffer device. It has the functionality of any standard text console driver, such as the VGA console, with the added features that can be attributed to the graphical nature of the framebuffer. In the x86 architecture, the framebuffer console is optional, and some even treat it as a toy. For other architectures, it is the only available display device, text or graphical. What are the features of fbcon? The framebuffer console supports high resolutions, varying font types, display rotation, primitive multihead, etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature made available by the underlying graphics card are also possible.
  7. ^ "Documentation/braille-console.txt". kernel.org. Archived from the original on 2015-09-06. Retrieved 2014-07-04.
  8. ^ "Documentation/serial-console.txt". kernel.org. Archived from the original on 2013-05-22. Retrieved 2013-05-30.
  9. ^ "CONFIG_VT_CONSOLE: Support for console on virtual terminal". The system console is the device which receives all kernel messages and warnings and which allows logins in single user mode. If you answer Y here, a virtual terminal (the device used to interact with a physical terminal) can be used as system console.
  10. ^ "CONFIG_SERIAL_CONSOLE: Support for console on serial port". If you say Y here, it will be possible to use a serial port as the system console (the system console is the device which receives all kernel messages and warnings and which allows logins in single user mode). This could be useful if some terminal or printer is connected to that serial port.
  11. ^ "CONFIG_USB_SERIAL_CONSOLE: USB Serial Console device support". If you say Y here, it will be possible to use a USB to serial converter port as the system console (the system console is the device which receives all kernel messages and warnings and which allows logins in single user mode). This could be useful if some terminal or printer is connected to that serial port.
  12. ^ "CONFIG_VGA_CONSOLE: VGA text console". Saying Y here will allow you to use Linux in text mode through a display that complies with the generic VGA standard. Virtually everyone wants that.
  13. ^ "CONFIG_FRAMEBUFFER_CONSOLE: Framebuffer Console support".
  14. ^ "chvt(1) - Linux man page: chvt - change foreground virtual terminal".
  15. ^ "console(4) – Linux man page: console – console terminal and virtual consoles". A Linux system has up to 63 virtual consoles
  16. ^ a b "console_codes(4) – Linux man page: console_codes – Linux console escape and control sequences".
  17. ^ Grehan, Oisin (2016-02-04). "Windows 10 TH2 (v1511) Console Host Enhancements". Archived from the original on 2016-02-09. Retrieved 2016-02-10.
  18. ^ a b Michael K. Johnson and Erik W. Troan. Linux Application Development – The Linux Console. ASCII books. ISBN 0321563220.
  19. ^ David Herrmann (2012-08-11). "KMSCON: Linux KMS/DRM based Virtual Console".
  20. ^ Michael Larabel (2013-03-28). "KMSCON: A DRM-Based Terminal Emulator". Phoronix. Announced yesterday was the release of kmscon, a terminal emulator for Linux that's similar to what's offered inside the kernel, but instead it's in user-space and relies upon the kernel's DRM interfaces as well as Mesa.
  21. ^ Michael Larabel (2013-02-08). "The Linux Kernel Console Is Being Killed Off". Phoronix. CONFIG_VT has been part of the Linux kernel going back to the early 90s but hasn't really advanced much in that time. David Herrmann, a developer that got going on this new initiative as a student part of Google Summer of Code, wants a new solution that's built with multi-seat and multiple monitors in mind, incorporates Unicode font rendering, XKB-like keyboard handling, graphics hardware acceleration, VT220-VT510 compatibility, and other features.