ロケールとキーボードの設定は、インストール時または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