17
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-10-24

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?