
Fedora 45부터 리눅스 가상 콘솔의 기본 도구가 커널의 fbcon 드라이버에서 사용자 공간 도구인 kmscon으로 바뀐다. 가상 콘솔을 사용하는 개발자와 시스템 관리자는 터미널 장치 경로, 그래픽 프로그램 실행 방식, 키보드 설정과 스크립트를 점검해야 한다.
가상 콘솔은 그래픽 환경과 별도로 로그인할 수 있는 텍스트 화면이다. 대부분의 그래픽 세션은 tty1이나 tty2에서 실행되므로 Ctrl+Alt+F3을 눌러 tty3으로 이동하면 로그인 프롬프트를 볼 수 있다. 그래픽 세션으로 돌아가려면 데스크톱 환경에 따라 Ctrl+Alt+F1, F2 또는 F7을 누른다. 가상 콘솔을 사용하지 않는 사람은 이번 변경의 영향을 받지 않을 가능성이 높다.
fbcon에서 kmscon으로 바뀌는 이유
기존 fbcon은 커널 공간에서 직접 실행된다. 따라서 fbcon의 버그가 커널에서 악용될 수 있고, 충돌이 발생하면 커널 패닉으로 이어질 수 있다고 설명한다. 커널이 지원하는 키보드 배열도 사용자 공간에서 사용하는 배열과 다르다. 이에 따라 Anaconda 설치 프로그램은 선택한 배열과 가장 가까운 커널 배열을 찾는다.
fbcon은 비트맵 글꼴만 지원해 고해상도 화면에서 글자가 작게 보이고 실행 중 글꼴 크기를 바꿀 수 없다. 유니코드 지원도 제한적이다. kmscon은 freetype을 사용할 수 있고 고정폭 글꼴을 렌더링한다. 보안 취약점 때문에 fbcon은 더 이상 스크롤을 지원하지 않으며, 마우스 기능도 기본 제공하지 않는다. kmscon은 사용할 수 있는 경우 투명 하드웨어 커서를 이용하고 기본적인 마우스 기능을 제공한다.
fbcon은 오래된 fbdev 인터페이스에 의존하지만, 현재 GPU 드라이버는 모두 drm을 사용한다. kmscon으로 전환하면 커널에서 fbdev 에뮬레이션 계층을 제거할 수 있다.
관리자와 사용자에게 달라지는 점
kmscon은 의사 터미널(pts) 장치를 사용한다. 따라서 tty 명령은 /dev/tty1 대신 그래픽 터미널을 쓸 때처럼 /dev/pts/0을 반환한다. 이 값을 사용하는 스크립트와 설정을 갱신해야 한다.
kmscon은 터미널을 그리기 위해 GPU의 drm 인터페이스를 독점적으로 사용한다. 그래픽 세션이나 GPU를 사용하려는 프로그램을 실행하려면 kmscon이 GPU를 놓도록 해야 한다. 원문은 이를 위한 스크립트로 kmscon-launch-gui를 안내한다.
kmscon-launch-gui kmscube -c 100
kmscon-launch-gui startx
기본 설정에서는 커널 오류와 경고 메시지가 tty1에 표시된다. 입력 중 메시지가 섞이는 것이 불편하다면 dmesg -w로 확인하거나, 다음 명령으로 메시지 전용 tty를 실행할 수 있다.
kmscon --vt=%I --no-switchvt --oneshot --login -- dmesg -w
setfont 명령은 kmscon에 적용되지 않는다. kmscon은 기본 제공되는 unifont를 쓰거나 freetype을 사용할 수 있으며, 커널 글꼴과 같은 모양을 원하면 psf 글꼴을 사용할 수도 있다. loadkeys도 적용되지 않는다. kmscon은 localectl의 D-Bus 신호를 듣고 키보드 배열을 갱신하므로 배열을 바꾸려면 다음과 같이 실행한다.
localectl set-keymap us
Fedora 45에서는 tty1~tty6의 기본 콘솔이 kmscon으로 바뀐다. 예비용으로 tty5에서 fbcon을 유지하려면 다음 명령을 실행한다. 이후 Ctrl+Alt+F5를 누르면 fbcon 콘솔로 이동한다.
sudo systemctl mask kmsconvt@tty5 && sudo systemctl enable --now getty@tty5
단축키와 설정
기본 단축키는 다음과 같다.
- 확대:
Ctrl++또는Ctrl+WheelUp - 축소:
Ctr+-또는Ctl+WheelDown - 터미널 회전:
Super++,Super+- - 위로 스크롤:
Shift+UpArrow,Shift+PageUp, 마우스 휠 위로 - 아래로 스크롤:
Shift+DownArrow,Shift+PageDown, 마우스 휠 아래로 - 복사·붙여넣기: 마우스로 선택하거나 단어를 두 번 클릭해 선택한 뒤 가운데 버튼으로 붙여넣기
- tty 전환:
Ctrl+Alt+FX - 해당 tty의 kmscon 재시작:
sudo systemctl restart kmsconvt@ttyX - 사용 중인 가상 터미널 확인:
echo $XDG_VTNR
kmscon은 여러 하위 패키지로 나뉜다. 기본 kmscon 패키지는 추가 의존성 없이 유니코드를 지원하는 unifont를 포함한다. kmscon-freetype은 freetype을 사용하고, kmscon-pango는 pango를 사용하지만 freetype을 대신하도록 권장되지 않는 구식 패키지다. kmscon-gl은 OpenGL 렌더러로, 더 빠를 수 있지만 화면이 다소 흐릿할 수도 있다. 사용하려면 설정 파일에 hwaccel을 추가해야 한다.
설정 파일은 /etc/kmscon/kmscon.conf이며, 예제 파일을 복사해 만들 수 있다.
sudo cp /etc/kmscon/kmscon.conf.example /etc/kmscon/kmscon.conf
자주 바꾸는 항목으로는 문제 해결을 위한 로그 설정 verbose, 글꼴 렌더러를 고르는 font-engine, 글꼴 이름을 지정하는 font-name, 글꼴 높이를 픽셀로 정하는 font-size가 있다. 기본 글꼴 렌더러는 freetype을 사용할 수 있으면 freetype을, 그렇지 않으면 unifont를 사용한다. pango나 커널 글꼴 형식인 psf도 지정할 수 있다.
kmscon은 루트 권한으로 실행되므로 글꼴 파일은 홈 디렉터리가 아니라 /usr/share/fonts에 설치해야 한다. 사용할 정확한 글꼴 이름은 fc-list로 확인할 수 있다. 비라틴 문자를 위한 Cascadia 글꼴은 다음 명령으로 설치할 수 있다.
sudo dnf install cascadia-fonts-all
font-size를 지정하지 않으면 kmscon은 약 120×40자 화면에 맞춰 글꼴 크기를 조정한다. multi-monitor는 여러 모니터에서 터미널을 표시하는 방식을 정한다. 기본값 scaled는 검은 여백이 지나치게 커지지 않도록 글꼴 크기를 조정하고, clone은 각 모니터 중앙에 터미널을 표시하며, largest는 가장 큰 모니터만 사용한다. dpms-timeout은 모니터를 끄기까지의 시간으로, 기본값은 600초이며 0으로 설정하면 기능을 끈다. no-mouse는 마우스 지원을 비활성화해 일부 노트북에서 터치패드를 끌 때 사용할 수 있다. palette로 기본 색상 팔레트를 바꾸거나 색상을 직접 지정할 수도 있다.
kmscon의 상위 저장소는 GitHub에서 확인할 수 있다. 원문은 Fedora 45에서 kmscon을 가끔 사용하거나 특정 용도의 주 세션으로 활용하는 사례로 writerdeck 소개 영상을 제시한다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요