이전 기사 (ArchiLinux 설치 프로세스 14 – github를 사용하기위한 git 설치, make 컴파일 환경) 다음에 …
다시 시작했나요? 그렇지 않으면 reboot를 입력하고 한 번 해 주세요.
아치 패밀리 Linux를 설치할 때 경험하는 가장 큰 장점은
“많이 쓰는 명령의 도움은 한글화되어 있다.
”라는 것입니다.
모르면 도움말에서 찾아 보는 습관이 들렸습니다.
그런데 ArchiLinux 설치 후 한글 로케일을 설정했습니다.
콘솔 창(TTY console)에서 한글이 ㅁ으로 떠오릅니까? 이것은 실용적으로 어렵습니다;;;
Arch Linux 한글 글꼴 설치
GUI의 설치 시점까지 한글 폰트의 설치 과정은 무조건 들어가야 하므로 이번에는 한글 폰트를 설치해 보았습니다.
이것으로 문제를 해결할 수 있다면 생각합니다.
LANG=en_US.UTF8
pacman -Ss cjk
pacman -Ss “한국어 글꼴”
서둘러 한 번도 언어를 영어로 바꾸고 한글 폰트로 설치할 수 있는 것이 있는지 찾아 보았습니다.
Google 글꼴이 무난하게 보입니다.
noto-fonts-cjk. 중국어(c) 일본어(j) 한국어(k) 통합 글꼴.
https://archlinux.org/packages/?sort=&q=cjk&maintainer=&flagged=
https://archlinux.org/packages/?sort=&q=korean+font&maintainer=&flagged=
웹 페이지에서도 패키지 검색. 교차 검증의 결과, 큰 차이를 느끼지 않았습니다.
pacman -S noto-fonts-cjk
Google 글꼴을 설치했습니다.
정답은 없습니다.
원하는대로 …
pacman -S fontconfig
Linux에서 글꼴을 관리하는 데 필요한 fontconfig 패키지도 설치.
참고 자료:
https://wiki.archlinux.org/title/General_recommendations (11-1. Fonts)
https://wiki.archlinux.org/title/Font_configuration
fc-list :lang=ko
한글 글꼴이 있나요? /usr/share/fonts/noto-cjk/ 경로에 들어갔는지 확인했습니다.
fc-cache -f -v
로그아웃/재시작하면 글꼴 캐시에 설치한 글꼴이 반영되지만,
나는 재부팅하는 것이 번거로웠기 때문에 fc-cache 명령을 사용하여 글꼴 캐시 목록에 추가하는 방법으로 진행했습니다.
그런 다음 한글 출력 테스트.
해결할 수 없습니다.
Linux 콘솔 창, 한글 글꼴 출력 문제의 원인
▼ 일반적으로 사용되는 폰트는 /usr/share/fonts/ 경로에 있습니다만, 설치한 noto-cjk 폰트의 개별 파일 사이즈는 26MB 정도가 됩니다.
▲ 그러나 리눅스 콘솔 창(tty)에서 사용되는 글꼴은 /usr/share/kbd/consolefonts/경로에 있다고 했습니다.
개별 글꼴 파일의 크기는 4KB 미만이었습니다.
비교할 수 없을 정도로 작습니까? psfu.gz 파일은 비트맵 글꼴과 같습니다.
▲ 개발자 분들이 좋아하는 Dina 영문 폰트가 67KB 정도 있었지만, 그것보다 작은 용량이라고는.
▲ 또한 일반적인 영문 글꼴보다 글리프 수를 극단적으로 줄인 것 같습니다.
그래서 4KB 미만의 용량이 나온 것 같습니다만, 이것을 한글 폰트가 따라잡기에는 현실적으로 불가능에 가까울 것입니다.
영어권의 문자는 1바이트, 중국어/일본어/한국어와 같은 아시아권의 문자는 2바이트(2Byte)이므로, 아무래도 말린 것을 푸는 문장도 매우 잘못되어 있는 것은 아니지만, Unicode UTF8는 4Byte까지도 차지하는 상황에서 2바이트의 이야기로 피트하는 것은 무리해…글리프 테이블에 해당 문자가 없어서 발생하는 문제라고 보는 것이 문맥에 맞는 것 같습니다만, 어떻게든 Linux 콘솔 윈도우는 1바이트 출력만 고집하는 것 같습니다.
프레임 버퍼 콘솔 창?
▲ 리눅스 콘솔 창에서 한글 출력, 입력을 위한 눈물 노력의 역사는 20년 가까이 계속된 것 같지만, 위 문서에서 언급한 프로그램만 적어도 unicon, fbcon-hanio, fbterm(frame buffer terminal) , jfbterm, zhcon, han2 등 매우 다양했습니다.
구현 방법은 크게 두 가지로 분류되지만,
- Linux 커널 소스에 직접 패치를 적용하고 Linux 커널을 다시 컴파일하고 사용하는 방법
- 프레임 버퍼 프로그램을 활용하여 프레임 버퍼 콘솔 창을 표시하는 방법
최초의 구현 방법은 비교적 근본적인 해결책인 것 같습니다만, 일반의 사람이 커널의 컴파일까지 하기에는 부담이 되어, 20년 가까이의 기술이 Linux 커널에 정식으로 반영되지 않았다고 하는 것 하… 서로 부끄러운 뭔가가 있는 것 같네요? 요즘은 잘 안되는 것 같아…
두 번째 구현 방법: 프레임 버퍼는 대략적인 느낌인 것 같습니다.
콘솔 윈도우의 내용을 버퍼에 넣어두고 프레임(애니메이션 프레임 생각해 주세요)로 그려 흩어지는 기술? 그래서 한글도 그려주고 사진도 그려줘서 동영상도 그려줘…라는 콘솔 윈도우와 GUI의 중간에 있는 기술인 것 같습니다.
프레임 버퍼 콘솔 기능은 리눅스 커널에 기본적으로 포함되어 있으며, GRUB2 부트로더에서도 유효하게 할 수 있습니다만, 무엇이 부족한지 타사의 frame buffer terminal 프로그램을 별도로 인스톨 해 한글 입출력 문제를 해결하는 방법이 많이 활용되는 것 같습니다.
yaft (Yet Another Framebuffer Terminal) 설치, 한글 출력 패치
Yet Another Framebuffer Terminal, 축소해 yaft 라고 하는 프레임 버퍼 터미널 프로그램이 있는 것 같습니다.
https://gall.dcinside.com/github/14140
https://gall.dcinside.com/github/10620
▲2020년에 yaft 패키지에 한글화 패치 적용하는 사례가 올라왔지만, 제 생각에는 fbterm/jfbterm보다 좋은 것 같고, yaft를 활용해 볼 생각입니다.
이전 기사에 따라 git, make 컴파일 환경 구축을 한 것을 전제로,
콘솔 창에서 curl을 이용하여 파일을 다운로드할 때 드롭박스를 이용합니다.
참가 후 오세요.
(드롭박스(Dropbox) 무료 용량 16GB까지 늘리는 첫 버튼: 추천 링크 등록)
https://gall.dcinside.com/github/10620
위의 링크에서 QR 코드처럼 보이는 이미지 파일을 다운로드하십시오. 한글 출력 패치 파일입니다.
▲ 이미지 파일을 드롭박스에 업로드하여 공유 링크를 확보합니다.
pacman -S libhangul
종속 패키지 libhangul을 설치합니다.
cd /usr/local/src/
/usr/local/src/ 는 타사 프로그램의 소스를 배치하는 곳입니다.
Windows의 C:\Program Files 정도 생각하십시오. 그건 그렇고, /usr/src/는 Linux 운영 체제와 관련된 소스를 배치하는 것입니다.
)
git clone https://github.com/uobikiemukot/yaft.git
yaft 디렉토리를 작성하면서 yaft 소스를 다운로드합니다.
cd yaft
curl -L https://드롭박스 공유 링크-O
ls -l 드롭박스 링크 파일 이름
yaft 디렉토리에 들어가서 한글 패치 파일을 다운로드하여 한글 패치 파일의 용량이 일치하는지 확인합니다.
드롭 박스는 curl을 사용할 때 괜찮습니다.
pacman -S imagemagick
다음 변환 명령으로 한글 패치를 추출하려면 imagemagick 패키지가 필요합니다.
그렇지 않으면 command not found와 같은 오류가 출력됩니다.
export LANG=en_US.UTF-8
yaft 크리에이터가 입력하는 것이 좋습니다.
convert 이미지 파일 이름.png RGB:- | xz -d -c -> hangul.patch
패치 -p1 < hangul.patch
이미지 파일(png 확장자)을 hangul.patch 파일로 변환하고 추출된 한글 패치를 적용합니다.
make
yaft 소스를 설치 파일로 빌드합니다.
덧붙여서 빌드의 단계 중에 컴파일이 포함되어 있으므로, 컴파일은 빌드의 서브 세트 개념이라고 생각하면 됩니다.
make install
yaft를 PC에 설치합니다.
reboot
다시 시작합니다.
끝!
한글 출력 테스트 해 봅시다.
yaft (루트 계정이 아닌 경우 sudo yaft)
yaft 프레임 버퍼 단말을 실행하는 명령입니다.
위의 스샷에서 밑줄을 그린 것은 루트 계정으로 로그인할 때 사용할 수 있습니다.
su – 계정 이름
로컬 계정으로 전환합니다.
LANG=ko_KR.UTF8
한국어 출력으로 전환합니다.
영어로 변경하려면 LANG=en_US.UTF8을 입력합니다.
sudo pacman –help
도움말 출력 테스트. 한글로 나오는지 확인하세요. 위의 스샷처럼 잘 나오는 것을 확인할 수 있어야 합니다.
이탈
로컬 계정에서 루트 계정으로 이동합니다.
이탈
yaft 종료합니다.
프레임 버퍼 콘솔 창, 한글 입력 설정(한용키)
한글 출력만으로는 오히려 불편할지도 모릅니다.
디렉토리 이름이 한글이지만 한용키를 먹을 수 없다면 들어가는 것은 정말 힘들다.
이하에 쓰는 방법은 yaft 뿐만이 아니라, fbterm(frame buffer terminal), jfbterm 등 한글 출력 설정한 모든 프레임 버퍼 터미널 패키지에 적용할 수 있는 것 같습니다.
이 방법도 역시 데시인사이드 원문에 잘 정리되어 있습니다.
난 먹을 뿐.
https://gall.dcinside.com/github/10620
tty 콘솔 창에서 루트로 로그인합니다.
showkey
tty 콘솔 창에서만 먹는 명령입니다.
누름 키보드 키의 키 코드를 표시합니다.
자신이 어느 키로 한영을 전환할지, 눌러 출력되는 키코드를 기억하세요.
나는 왼쪽 시프트 42, 스페이스 바 57로 나옵니다.
Shift + Space로 한영으로 전환하기 때문에 이것만 보았습니다.
Windows 10 Hyper V 가상 머신에서는 Han Young 키의 키 코드가 출력되지 않았습니다.
(인터넷을 보면 한용키 keycode 100으로 나오지만 개인에 따라 다를 수 있으므로 직접 확보하십시오.)
10초 동안 키 입력이 없으면 자동으로 빠져 나옵니다.
cd /root
dumpkeys > kmap
nano kmap
현재 키보드의 전체 키 코드를 /root/kmap 파일로 덤프합니다.
그런 다음 kmap 파일을 편집기에서 엽니다.
문자열 F60 = “\200”
스크롤하여 문자열 컬렉션이 끝나는 위치를 찾습니다.
그리고 추가합니다.
\200이 한용 변환을 의미하는 것으로, string은 기능을 할당하는 명령인 것 같습니다.
눈에 보이는 F 값을 피하고 string F 설정을 등록하는 것이 원리입니다.
위의 스샷에서는 문자열 F20이 끝났지만 F60이 보이지 않으므로 굵은 글씨처럼 추가했습니다.
방금 showkey에서 기억한 keycode를 찾으십시오.
한용키의 keycode가 100이라면 keycode 100 = AltGR로 쓰여졌다는 것을
키코드 100= F60
이렇게 쓰는 것입니다.
나는 Shift+Space로 한영변환한다고 해서 왼쪽 시프트 42, 스페이스바 57이라고 말했어요.그러니까
shift keycode 57 = F60
이렇게 썼습니다.
저장하고 빠져라.
한영변환테스트(한글입력)
loadkeys kmap
loadkeys는 재시작 전(현재 세션)까지 키맵을 적용하는 명령입니다.
yaft
yaft 프레임 버퍼 터미널을 시작합니다.
설정한 한용 전환 키로 입출력 테스트해 보고 빠져 나옵니다.
영구적으로 적용(시작 시 로드되도록)
nano /etc/vconsole.conf
편집기에서 /etc/vconsole.conf 파일을 엽니다.
없으면 만들고 들어주세요.
KEYMAP=/root/kmap
맞춤 키맵 경로를 올바르게 삽입하고 저장+종료합니다.
reboot
끝.
참고 자료:
https://wiki.archlinux.org/title/Linux_console/Keyboard_configuration
https://man.archlinux.org/man/dumpkeys.1.en
https://man.archlinux.org/man/keymaps.5.en
https://man.archlinux.org/man/vconsole.conf.5
https://m.blog.naver.com/mycute7/220012310998
https://www.comsvc.kr/xe/comsvc_tip02/21394
https://forum.ubuntu-jp.org/viewtopic.php?t=17036
https://www.kernel.org/doc/html/v5.18/fb/fbcon.html
https://sanbo0404./m/entry/Linux-그래픽-프레임-버퍼
(GUI와 한글 폰트 전체에 대해)