【FreeBSD】仮想コンソールで日本語を表示したい

確認環境

PC Thinkpad X1 Carbon 2nd Gen
OS FreeBSD 12.0-RELEASE-p5

課題

仮想コンソールで日本語を表示したい。

日本語がない世界なんて、僕は嫌だ。

対策

FreeBSD 12であれば、コンソールドライバにはvt(4)を使用しているはずだ。
vt(4)なら、ありがたいことに日本語などのマルチバイト文字を表示できる。

しかし残念なことに、FreeBSDには仮想コンソール用の日本語フォントが標準で入っていない。
仕方がないので使えるフォントをダウンロードして、日本語を表示できる状態にしよう。

もし、vt(4)ではなくsyscons(4)を使っている場合は、こちらのサイトを参考にするといい。

以降では、下記手順について説明する。

  1. 言語設定を日本語にする    (~/.login_conf)
  2. 日本語フォントをダウンロードする (https://people.freebsd.org/~emaste/newcons/b16.fnt)
  3. 日本語フォントを試す      (vidcontrol -f b16.fnt)
  4. ログイン時のフォントを指定する
    1. ユーザ個別(自分だけ)に適用する場合 (~/.login)
    2. システム全体に適用する場合     (/etc/rc.conf)
    3. 動作確認

因みに、vt(4)で画面の解像度を上げる方法は、こちらの記事で紹介しているので、覗いてみてね。

1. 言語設定を日本語にする

まずは、言語設定を日本語に変更しよう。
ここでは、ユーザ個別での言語設定方法を紹介する。

設定は至って簡単。
~/.login_confに下記の設定を記述するだけ。

me:\  
    :charset=UTF-8:\  
    :lang=ja_JP.UTF-8:  

修正が終わったら、一度ログアウトして再ログイン後、下記コマンドを実行してみよう。
下記のように、文字化けして表示されるはずだ。
※便宜上、文字化けを'□'で表現している

> date  
2019□□ 6□□12□□ □□□□□□ 18□□22□□35□□ JST

末尾にJSTと表示されていれば、言語設定を日本に変更できている。

2. 日本語フォントをダウンロードする

次に、僕が比較的見やすいと感じたフォント、b16.fntをダウンロードしてみよう。

> fetch https://people.freebsd.org/~emaste/newcons/b16.fnt  

もし、fetchコマンドでエラーが出るようであれば、wgetcurlコマンドでダウンロードできるか試してみてね。

3. 日本語フォントを試す

ダウンロードが終わったら、フォントを切り替えてみよう。

下記コマンドを実行すればいい。
※もし、X-Windowtmuxuim-fepなどは、終了させて下記コマンドを実行すること

> vidcontrol -f b16.fnt  

エラーが出なければ、先ほどのdateコマンドの結果が日本語になっているはずだ。

> date  
2019612日 水曜日 182235秒 JST  

4. ログイン時のフォントを指定する

最後に、ログイン時に使用するフォントの指定を行う。
ここではユーザ個別(自分だけ)に適用する方法と、システム全体に適用する方法を説明する。

後述する課題があるため、オススメはユーザ個別で指定する方法。

1. ユーザ個別に適用する場合

まず、fontを置く場所を決めて、ダウンロードしたファイルを移動しよう。

> mkdir -p ~/vt/fonts
> mv b16.fnt ~/vt/fonts/

次に、ログイン時にフォントを切り替える設定を追加する。
tcshcshを使用している場合、 .loginに下記の記載を追記すればいい。

set FONT "$HOME/vt/fonts/b16.fnt"
if ( -f "$FONT" ) vidcontrol -f "$FONT"

もし、B系シェルを使っているなら、下記の記述を~/.profileに追加すればいいと思う。
ログイン時に実行されるスクリプトについては、使用しているシェルのマニュアルで確認してねと。

FONT="/$HOME/vt/fonts/b16.fnt"
[ -f $FONT ] && vidcontrol -f $FONT

2. システム全体に適用する場合

以降はroot権限で実行すること。

まず、ダウンロードしたフォントを、vt(4)のフォント管理用ディレクトリに移動する。

> mv b16.fnt /usr/share/vt/fonts/  

次に、/etc/rc.confに次の記述を追加すれば完了だ。

font8x16="b16.fnt"  

※ こちらの方法だと、他の仮想コンソールに切り替えて(Alt+F2など)ログインしたときに、フォントが適用されていなかった。
 何か設定が足りていないのかもしれない。。。

3. 動作確認

設定が終わったら、再ログインしたときに日本語が表示できるか確認しよう。

> date  
2019612日 水曜日 182235秒 JST

日本語万歳。

参考

以上。