본문 바로가기
리눅스

(번역) Linux console

by 다움위키 2025. 1. 25.

원문 보기: https://dawoum.duckdns.org/wiki/Linux_console

 

Original article: w:Linux console

리눅스 콘솔리눅스 커널 내부의 시스템 콘솔입니다. 시스템 콘솔은 모든 커널 메시지와 경고를 수신하고 단일 사용자 모드에서 로그인을 허용하는 장치입니다. 리눅스 콘솔은 커널과 다른 프로세스에 대해 사용자로의 텍스트 출력을 보내고 사용자로부터 텍스트 입력을 수신하는 방법을 제공합니다. 사용자는 전형적으로 컴퓨터 키보드로 텍스트를 입력하고 컴퓨터 모니터에서 출력 텍스트를 읽습니다. 리눅스 커널은 가상 콘솔을 지원합니다 – 가상 콘솔은 논리적으로 분리되어 있지만 같은 물리적 키보드와 디스플레이에 접근하는 콘솔입니다. 리눅스 콘솔 (및 리눅스 가상 콘솔)은 리눅스 커널의 VT (가상 터미널) 하위 시스템에서 구현되고, 임의의 사용자 공간 소프트웨어에 의존하지 않습니다. 이것은 터미널을 에뮬레이션하는 사용자 공간 프로세스인 터미널 에뮬레이터와 대조적이고, 전형적으로 그래픽 디스플레이 환경에서 사용됩니다.

리눅스 콘솔은 커널의 첫 번째 기능 중 하나였고 원래 1991년에 Linus Torvalds에 의해 작성되었습니다 (리눅스의 역사를 참조하십시오). 프레임버퍼텍스트 모드의 두 가지 주요 구현이 있습니다. 프레임버퍼 구현은 현대 리눅스 배포판의 기본값이고, 커널 모드 설정과 함께, 시스템이 부팅되는 동안 그래픽을 표시하는 것과 같은 디스플레이 하드웨어 및 기능에 대한 커널 수준의 지원을 제공합니다. 레거시 텍스트 모드 구현은 CGA, EGA, MDA, 및 VGA 그래픽 카드를 갖는 PC-호환 시스템에서 사용되었습니다. 비-x86 아키텍처는 그래픽 카드가 텍스트 모드를 구현하지 않았기 때문에 프레임버퍼 모드를 사용했습니다. 리눅스 콘솔은 고정-크기 비트맵, 모노스페이스 글꼴을 사용하며, 보통 문자당 8x16 픽셀로 기본 설정됩니다.

리눅스 콘솔은 선택적인 커널 기능이고, 대부분의 임베디드 리눅스 시스템은 그것을 활성화하지 않습니다. 이들 시스템은 전형적으로 대안적인 사용자 인터페이스 (예를 들어, 웹 기반)를 제공하거나, 그래픽 사용자 인터페이스로 즉시 부팅하여 이를 사용자와 상호 작용하는 주요 수단으로 사용합니다. 리눅스 콘솔의 다른 구현에는 새로 고침 가능한 점자 디스플레이를 지원하는 점자 콘솔과 직렬 포트 콘솔이 있습니다.

Purpose

리눅스 콘솔은 커널과 기타 프로세스에 대해 사용자로의 텍스트-기반 메시지를 출력하고 사용자로부터 텍스트-기반 입력을 수신하는 방법을 제공합니다. 리눅스에서, 여러 장치는 시스템 콘솔로 사용될 수 있습니다: 예를 들어, 가상 터미널, 직렬 포트, USB 직렬 포트, 텍스트 모드에서 VGA, 프레임버퍼가 있습니다. 일부 현대 리눅스-기반 시스템은 커널 기반 텍스트-모드 입력과 출력을 더 이상 사용하지 않고, 대신 시스템이 부팅되는 동안 그래픽 로고 또는 진행률 표시줄을 표시한 다음 그래픽 사용자 인터페이스 (예를 들어, 데스크탑 배포판의 X.Org Server 또는 Android의 SurfaceFlinger)를 즉시 시작합니다.

커널 부팅 중에, 콘솔은 공통적으로 커널의 부팅 로그를 표시하기 위해 사용됩니다. 부팅 로그에는 감지된 하드웨어에 대한 정보와 부팅 절차의 상태에 대한 업데이트가 포함됩니다. 이 시점에서, 커널은 실행 중인 유일한 소프트웨어이고, 따라서 사용자-공간 (예를 들어, syslog)을 통한 로깅이 불가능하므로, 콘솔은 이 정보를 출력할 수 있는 편리한 장소를 제공합니다. 일단 커널이 부팅을 마치면, init 프로세스를 실행하여 (콘솔에 출력을 보내기도 함), 임의의 백그라운드 데몬을 시작하는 것을 포함하여 나머지 시스템의 부팅을 처리합니다.

init 부팅 프로세스가 완료된 후, 콘솔은 여러 가상 터미널멀티플렉싱하기 위해 사용될 것입니다 (Ctrl-Alt-F1, Ctrl-Alt-F2 등, Ctrl-Alt-LeftArrow, Ctrl-Alt-RightArrow를 누르거나, chvt를 사용하여 접근-가능). 각 가상 터미널에서 getty 프로세스가 실행되고, 이 프로세스는 차례로 사용자를 인증하기 위해 /bin/login을 실행합니다. 인증 후, 명령 쉘이 실행될 것입니다. 콘솔과 같은 가상 터미널은 리눅스 커널 수준에서 지원됩니다.

리눅스 콘솔은 "linux"의 터미널 유형을 구현하고 그것이 사용하는 이스케이프 시퀀스는 console_codes 매뉴얼 페이지에 있습니다.

Virtual consoles

Main article: Virtual console

가상 콘솔은 여러 텍스트 버퍼를 저장할 수 있어, 다양한 콘솔 프로그램을 동시에 실행하면서도 사용자와 다른 컨텍스트에서 상호 작용하도록 활성화합니다. 사용자 관점에서 볼 때, 이것은 여러 개의 독립된 콘솔의 환상을 만들어냅니다.

각 가상 콘솔은 자체 문자 집합과 키보드 레이아웃을 가질 수 있습니다. 리눅스 2.6은 각 가상 콘솔에 대해 다른 글꼴을 로드하는 기능을 도입했습니다 (2.6 이전의 커널 버전은 필요에 따라서만 글꼴을 변경합니다).

Text mode console

텍스트 모드 구현은 텍스트-기반 비디오 모드를 구현하는 레거시 CGA/EGA/MDA/VGA 비디오 카드를 갖는 PC-기반 시스템에서 사용됩니다. 텍스트 모드에서, 커널은 2D 문자의 배열을 비디오 카드로 보내고, 비디오 카드는 문자를 픽셀로 변환하여 표시합니다.

Font, character set and keyboard layout

텍스트 버퍼는 코드 포인트와 문자 속성 측면에서 텍스트 화면의 내용을 설명하는 VGA 메모리의 일부입니다. 텍스트 버퍼와 글꼴에서 코드 포인트는 일반적으로 화면에 문자를 표시하기 위해 텍스트 터미널 의미론에서 사용되는 인코딩과 같지 않습니다. 화면의 글리프 집합은 현재 글꼴에 의해 결정됩니다. 텍스트 화면은 console.c 및 consolemap.c 드라이버에 의해 처리됩니다. consolechars라는 글꼴과 터미널 인코딩을 변경하는 유틸리티가 있습니다.

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

이들 두 가지 유틸리티와 해당 데이터 파일은 많은 리눅스 배포판과 함께 제공되는 리눅스 콘솔 도구 http://lct.sourceforge.net/에 포함되어 있습니다.

리눅스를 커널 수준에서 국제화하려는 노력은 1994년 마르쿠스 쿤(Markus Kuhn)안드리에스 브라우어(Andries Brouwer)에 의해 시작되었습니다.

Text modes

Linux 콘솔은 임의의 VGA-스타일 텍스트 모드를 지원할 수 있지만, 커널 자체는 이들 모드를 설정하는 수단이 매우 제한적입니다. SVGATextMode는 표준 EGA 및 VGA 모드보다 더 복잡한 텍스트 모드를 활성화하는 데 도움이 됩니다. 그것은 콘솔 도구와 완벽하게 호환되지만, dosemu, SVGAlib, 및 디스플레이 서버와 일부 충돌이 있습니다.

현재, 다양한 가상 콘솔에서 다양한 모드를 지원하지 않습니다.

Comparison to Windows and DOS

Microsoft Windows (임의의 버전)는 콘솔의 완전한 기능 지원을 제공하지 않습니다. 그 비슷한 기능은, 응용 프로그램 소프트웨어에만 해당되지만, Win32 콘솔입니다.

Linux framebuffer console

Main article: Linux framebuffer

리눅스 프레임버퍼 (fbdev)는 원래 리눅스 커널에 텍스트-모드 디스플레이를 가지지 않는 Apple Macintosh와 같은 시스템에서 텍스트 콘솔을 에뮬레이션하는 것을 허용하도록 구현된 그래픽 하드웨어-독립 추상화 계층입니다. 현재 그것은 임의의 플랫폼에서 커널 공간 텍스트 모드 에뮬레이션을 제공합니다. (현재 유지 관리되지 않는) SVGATextMode에 비해 장점은 의존성과 더 나은 하드웨어 호환성입니다. 그것은 역시 VGA 텍스트 모드의 모든 기술적 제한을 극복할 수 있습니다.

리눅스 프레임버퍼 콘솔은 문자를 그리는 방식에서만 VGA와 다릅니다. 키보드 이벤트 처리와 가상 콘솔 지원은 정확하게 같습니다.

Linux serial port console

리눅스 직렬 콘솔은 커널 구성에서 CONFIG_SERIAL_CONSOLE 옵션을 통해 활성화된 직렬 포트를 통한 콘솔 구현입니다. 그것은 일부 임베디드 시스템서버에서 운영자와 직접 상호 작용할 필요가 없는 경우에 사용될 수 있습니다. 직렬 콘솔은 시스템에 같은 접근 모드를 허용하지만, 보통 RS-232의 대역폭이 작기 때문에 속도가 느립니다. 직렬 콘솔은 종종 임베디드 시스템에 대한 소프트웨어 개발 중에 사용되고, 때로는 디버그 포트를 통해 접근할 수 있도록 둡니다.

Control characters

콘솔은 다음과 같은 여러 제어 문자에 응답합니다:

^[에 대해 이스케이프 키를 누르십시오.

콘솔은 역시 확장된 이스케이프 시퀀스, ANSI CSI 모드 시퀀스, 및 DEC 프라이빗 모드 시퀀스를 지원합니다. 이들 확장된 시퀀스는 색상, 깜박임, 밑줄, 강도, 및 역 비디오와 같은 시각적 효과, 벨 톤 주파수 및 지속 시간, VESA 화면 블랭킹 간격을 제어할 수 있습니다. 텍스트 블랭킹 외에, VGA 어댑터를 대기 모드로 전환하는 알려진 방법은 없습니다.

Future plans

Kmscon 프로젝트는 리눅스 콘솔을 위한 최신 사용자-공간 대체물을 만드는 것을 목표로 합니다. 개발 우선순위에는 다중-모니터 설정 지원, Pango와 함께 유니코드 글꼴 렌더링, XKB 키보드 처리, 및 GPU OpenGL 가속이 포함됩니다. 현재 커널 구현에 대한 불만에는 "커널-공간의 사용자 인터페이스이고, 코드가 제대로 유지 관리되지 않으며, 키보드를 제대로 처리하지 못하고, 글꼴 렌더링이 나쁘고, 모드 설정 및 다중 헤드 지원이 누락되었고, 다중 시트 인식 기능이 없고, 핫 플러깅 처리가 제한적이며 VT102 규정 준수로 제한됨" 등이 있습니다.