Kmscon은 리눅스 커널에 내장된 리눅스 콘솔을 대체하기 위해 데이비드 헤르만이 만든 사용자 공간에서 실행되는 가상 콘솔이다. Kmscon은 출력을 위해 KMS 드라이버를 사용하며, 멀티시트 기능을 지원하고 국제화된 키보드 입력과 UTF-8 단말 출력을 지원한다. 입력 지원은 X 키보드 확장(XKB)을 사용하여 구현되었다. Kmscon의 개발은 2015년 3월에 중단되었다. 이후 2025년에 Aetf가 2011년부터 유지해 온 포크의 코드베이스를 채택하면서 프로젝트가 공식적으로 재개되었다. systemd-consoled라는 후속 프로젝트가 있었으나, 해당 프로젝트는 2015년 7월에 중단되었다.
특징
Kmscon은 리눅스 콘솔처럼 콘솔 인코딩에 제한받지 않고 유니코드자체 전체 세트를 출력하는 것을 지원한다. 유일한 필수 의존성은 Udev이지만, 선택적으로 메사를 사용하여 콘솔의 하드웨어 가속을 구현하거나 Pango 라이브러리를 사용하여 폰트 렌더링을 개선하도록 컴파일할 수 있다.
입력을 위해 XKB를 채택함으로써, kmscon은 X.Org 서버 및 웨이랜드 컴포지터에서 사용 가능한 모든 자판 배열을 입력으로 받아들일 수 있으며, 그래픽 환경과 터미널에서 동일한 배열을 사용할 수 있게 한다.
리눅스 커널의 VT 시스템은 1993년에 시작되었으며, 기본적으로 멀티시트 지원을 구현하지 않는다. 최대 63개의 VT를 지원하지만, 한 번에 하나의 VT만 활성화될 수 있다. 이로 인해 멀티시트 지원을 구성하기 위한 추가적인 단계가 필요하다. kmscon은 아웃 오브 더 박스로 멀티시트를 활성화한다.
한 시트의 디스플레이 서버가 VT 7에서 실행 중이고 다른 시트의 디스플레이 서버가 VT 8에서 실행 중이라면, 이 두 시트 중 하나만 동시에 사용할 수 있다. 다른 시트를 사용하려면 VT 전환을 시작해야 한다.
모든 시트를 동시에 사용 가능하게 만들기 위한 몇 가지 옵션은 다음과 같다.
모든 디스플레이 서버를 동일한 VT와 연결: 사용자가 VT를 전환하면 모든 사용자가 새 VT로 전환된다. 이는 VT 전환(및 빠른 사용자 전환)을 비실용적으로 만든다. X.Org 서버 커맨드라인 옵션 -sharevts
디스플레이 서버를 VT와 연결하지 않음: 이 경우 빠른 사용자 전환이 불가능하다. 텍스트 기반 콘솔 로그인은 입력 장치와 디스플레이 장치가 이 목적을 위해 예약된 경우에만 가능하다.
디스플레이 서버 중 하나만 VT와 연결: 다른 디스플레이 서버들은 VT 전환을 할 수 없지만, VT와 연결된 디스플레이 서버는 가능하다. 해당 시트에서의 VT 전환은 다른 시트에 영향을 주지 않는다. 이것이 systemd에서 선호하고 가정하는 접근 방식이다. 사용자 1에 대한 커맨드라인 옵션 vt7과 다른 모든 사용자에 대한 -novtswitch를 사용한다.
역사
2011년, 제시 반스는 자신의 블로그에 리눅스 프레임버퍼 및 가상 터미널 (VT) 서브시스템을 리눅스 커널에서 제거할 수 있는, 사용자 공간 기반의 DRM 가상 터미널 구현 가능성에 대해 썼다. 이 블로그 게시물에서 동기를 얻은 데이비드 헤르만은 가상 터미널의 기본 기능을 구현했다.
2013년 10월, DEC VT100–VT520 호환 터미널 에뮬레이터를 위한 상태 머신인 터미널 에뮬레이터 상태 머신(libtsm) 라이브러리가 kmscon에서 분리되어 별도로 제공되었다. 이후 웨이랜드 터미널 에뮬레이터 예제인 wlterm이 추가되었다.
이 프로그램은 페도라 44 개발 과정에서 구현 검토가 이루어졌으며 이후 45 베타 릴리스에 구현됨에 따라 페도라는 이를 기본값으로 사용하는 최초의 주요 리눅스 배포판이 되었다.