Linux
archLinux
インストール
locale
systemd

ロケールとキーボードの設定 - Arch Linuxの最小限インストール直後の作業(1)

ロケールとキーボードの設定は、インストール時またはArch Linuxの最小限インストールの完了直後に行うべき作業です。

ロケールとは、国や地域の設定のことで、使用する言語や、通貨の表示方法、タイムゾーンなどが含まれます。ここでは、日本国内で使うことを前提として設定方法を説明します。Arch Linuxでは、Systemdを用いてロケールを設定できます。

localectlコマンドで、現在のロケールとキーボードの設定を表示します。

[root@archlinux ~]# localectl


実行結果

   System Locale: LANG=C

VC Keymap: n/a
X11 Layout: n/a


キーボードの設定

キーボードは、Arch Linuxインストール直後は英語キーボードが設定されます。日本語キーボードと英語キーボードでは主に、記号の配置が違います。たとえばShift+2キーを押した場合、日本語キーボードでは"、英語キーボードでは@が入力されます。キーボードの確認や変更は、localectlコマンドのサブコマンドでできます。


利用可能なキーボードの表示

list-keymapsサブコマンドで現在利用可能なキーボードレイアウトの一覧を表示できます。次のコマンドで、jpが含まれる、すなわち日本向けのキーボードレイアウトを表示します。

[root@archlinux ~]# localectl list-keymaps | grep jp


実行結果

jp106



キーボードの変更

set-keymapサブコマンドでキーボードを変更できます。

[root@archlinux ~]# localectl set-keymap jp106

このコマンドで、現在のキーボードレイアウトを変更するloadkeysコマンドが呼び出されるとともに、設定ファイル/etc/vconsole.confが更新されてキーボードレイアウトが永続的に(再起動後も)変更されます。

オプションを指定しない場合は、X環境でのキーボードレイアウトも一緒に変更されます。X環境でのキーボードは変更しない場合は、-no-convertオプションをつけます。


参考

[root@archlinux ~]# localectl set-keymap -no-convert jp106


英語キーボードに戻す場合は、次のコマンドを実行します。


参考

[root@archlinux ~]# localectl set-keymap us



ロケールの設定

ロケールを設定するには、あらかじめロケールを設定しておく必要があります。ロケールは、Linuxの標準ライブラリであるglibcの機能です。


ロケールの詳細設定の表示

localeコマンドで、ロケールの現在の設定詳細を表示できます。

[root@archlinux ~]# locale


実行結果

LANG=C

LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=


設定可能なロケール一覧の表示

locale -aコマンドで、現在設定可能なロケールの一覧を表示します。

[root@archlinux ~]# locale -a


実行結果

C

POSIX

CとPOSIXはともにPOSIXロケールをあらわします。POSIXロケールの場合、メッセージは英語で表示されます。


設定可能なロケールの生成

POSIXロケール以外のロケールを使うために、ロケールを生成します。/etc/locale.genファイルで生成するロケールを設定し、locale-genコマンドを実行します。


locale.genの編集

/etc/locale.genにはコメントアウトされた形で多くのロケールが行ごとに記述されています。viなどのテキストエディタを使って、生成するロケールの行で先頭の#を削除してください。

[root@archlinux ~]# vi /etc/locale.gen

アメリカ地域・英語のロケールであるen_US.UTF-8と、日本地域・日本語のロケールであるja_JP.UTF-8の行で先頭の#を削除してください。ほかに利用したいロケールがあれば、そのロケールの行で先頭の#を削除してください。

編集完了後、生成するロケールは次のコマンドで確認できます。

[root@archlinux ~]# grep -v '^#' /etc/locale.gen


実行結果

en_US.UTF-8 UTF-8  

ja_JP.UTF-8 UTF-8


ロケール生成の実行

ロケールの生成は次のコマンドで実行されます。

[root@archlinux ~]# locale-gen

生成実行後、現在の設定可能なロケールの一覧を表示します。

[root@archlinux ~]# locale -a


実行結果

C

POSIX
en_US.utf8
ja_JP.utf8


ロケールのシステムへの適用

システム全体のロケールは、localectlコマンドのset-localeサブコマンドで適用できます。en_US.utf8を適用するには、次のコマンドを実行します。

[root@archlinux ~]# localectl set-locale en_US.utf8

コンソールで日本語を表示するのはむつかしいので、SSHやX環境を設定するまでは英語のロケールであるen_US.utf8を設定した方がいいと思います。

設定の変更は、localectlコマンドで確認できます。

[root@archlinux ~]# localectl


実行結果

   System Locale: LANG=en_US.utf8

VC Keymap: n/a
X11 Layout: n/a

なお、現在のセッションでは設定の変更は反映されず、localeコマンドの結果は以前と同じです。

[root@archlinux ~]# locale


実行結果

LANG=C

LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

ログインし直すと、ロケールの変更がセッションに反映され、localeコマンドの結果も変わります。

[root@archlinux ~]# locale


実行結果

LANG=en_US.utf8

LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=


参考資料


まとめ

今回実行したコマンドをまとめると、次のようになります。


  • localectl set-keymap jp106

  • vi /etc/locale.gen

  • locale-gen

  • localectl set-locale en_US.utf8