CentOS 設定変更備忘録(ロケール設定/キーボード設定/日時設定/タイムゾーン設定/NTP設定/HWC同期設定)

# 前置き

VM環境にCentOS8.5を構築しました。

しかし、インストール中に画面をスリープさせた影響なのかロケール設定を日本に設定する前に構築が完了したため、言語が英語になっており日時情報もずれており、キーボード入力もUS仕様になっていました。
普段使い用に諸々の設定を日本語仕様に修正する備忘録です。

基本的にターミナルを使ったCLI上から設定情報を変更する手順を備忘録として残します。

:::note warn
VM環境がインターネットへ接続出来ていることが条件です。
事前にpingコマンド等で接続確認してください。
```
# Google DNSへping確認
ping 8.8.8.8
```
:::

# ロケール設定変更

### 1. ロケール設定確認

現時点での設定状況を確認する
```
localectl status
```
```
#　出力結果

   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
```
**us**になっていました。

### 2.使用可能なロケールの一覧を確認 

**ja_JP.UTF-8** が一覧に含まれていることを確認します。
```
localectl list-locales
```
```
# 出力結果

C.utf8
en_AG
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_HK
en_HK.utf8
・
・
・
```
**ja**がありませんでしたので、日本語適用させるためのパッケージを適応させる必要があります。

### glibc-langpack-ja パッケージをインストール
日本語ロケールを使用するために、glibc-langpack-ja パッケージをインストールします。

```
sudo dnf install glibc-langpack-ja
```
```
# 出力結果
・
・
Installed:
  glibc-langpack-ja-2.28-164.el8.x86_64                                                                                               

Complete!
[taki@localhost ~]$ 
```

### 日本語ロケールを生成する
glibc-langpack-ja パッケージをインストールしたら、日本語のロケールが生成可能になるため生成します。
```
sudo localectl set-locale LANG=ja_JP.UTF-8
```

:::note warn
構築直後のCentOSでdnfまたはyumコマンド実行時にエラーが発生した場合下記を確認
サポートが切れているCentOSを使用した際にリポジトリの参照先がエラーを起こす可能性があるため下記リンク先の記事に従って確認してください。
下記記事は私が対応した備忘録です。

[CentOS構築後yum,dnfコマンドエラーによりパッケージのDLが出来ない問題の対処備忘録]
https://qiita.com/tacky0127/items/7f9d3898eb4226fc6b68


:::

### ロケールを反映させる
ロケールの設定が変更された後、再ログインまたはシステムの再起動が必要です。
```
sudo reboot
```

### 設定の確認
再起動後に、設定が正しく反映されているか確認します。

```
localectl status
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596363/69c40351-3c2f-7386-0f64-cfa8f72439c4.png)

# キーボード設定変更


### VC Keymapの変更（仮想コンソールのキーボード配列）
仮想コンソール（テキストモード）でのキーボード配列をjaに変更するには、以下のコマンドを実行します。

```
sudo localectl set-keymap jp
```
### X11 Layoutの変更（GUIでのキーボードレイアウト）
GUI環境でのキーボードレイアウトをjaに変更するには、以下のコマンドを実行します。
```
sudo localectl set-x11-keymap jp
```
### 設定の確認
変更後、再度設定を確認して正しく反映されているかを確認します。

VC KeymapとX11 Layoutがjpまたはjaとなっていれば、設定は正しく変更されています。
```
localectl status
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596363/7f132c19-eb44-e352-3dc0-3e100232ae59.png)

## 再起動または再ログイン
設定を反映させるためには、再ログインまたは再起動が必要になる場合があります。
これで、キーボード配列が日本語に設定されます。

```
sudo reboot
```

### 設定が反映されてなかった時！

reboot後に設定が反映されていなかった場合、下記のファイルの設定内容を確認してください。

### キーボード設定ファイルを確認
/etc/vconsole.confファイルを開いて、キーボードレイアウトが正しく設定されているか確認します。

```
cat /etc/vconsole.conf
```
以下のように表示されていれば問題ありません。

```
KEYMAP=jp
```

もし違っていたら、編集して **jp** に変更します。
```
sudo nano /etc/vconsole.conf
```

### X11（GUI）の設定を確認
X11のキーボード設定が適用されていない可能性があるので、/etc/X11/xorg.conf.d/00-keyboard.confを確認します。もしこのファイルが存在しない場合、手動で作成します。
```
sudo cat /etc/X11/xorg.conf.d/00-keyboard.conf
```
以下のように表示されているか確認してください。
もしファイルが無かったり、記載が異なっていたら修正してください。
```
Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "jp"
EndSection
```
編集する時は下記で実施
```
sudo nano /etc/X11/xorg.conf.d/00-keyboard.conf
```

上記設定ファイルにて問題がなければ**setting**から設定を確認します。

### GUI上システム設定変更

設定ファイル上で**Ja**が表示されていれば下記画面で設定変更ができるはずです。

```
Settingsを開く
Region & language選択
Input Sourcesを確認
→Japaneseがなければ+ボタンを押して追加してください。
追加後Japaneseを選択する
→キーボード入力した際に変更されてるか確認してください
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596363/2ecf72f2-732e-bcf2-4e74-ca9a5d788124.png)


# 日時設定変更

構築したVMの日時がずれていました。
下記コマンドで状態を確認できます。
確認したところTime zoneがAmericaになっていました。
日本時間へ修正します。

```
timedatectl status
```
```
# 出力結果の詳細

現在のシステム時刻（Local time）
UTC時刻（Universal time）
ハードウェアクロック（RTC time）
タイムゾーン（Time zone）
NTPの状態（NTP synchronized）
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596363/dae3521d-ed30-417f-c804-3a748481d757.png)

### タイムゾーンの修正


```
sudo timedatectl set-timezone Asia/Tokyo
```
再度、timedatectl statusを実行して、タイムゾーンが Asia/Tokyo になっていることを確認します。
```
timedatectl status
```
```
# 出力結果

               Local time: Wed 2024-09-18 17:50:23 JST
           Universal time: Wed 2024-09-18 08:50:23 UTC
                 RTC time: Wed 2024-09-18 08:50:23
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
```

### NTPの確認
NTPサーバーを使用して自動的に時刻を同期することが推奨されます。以下のコマンドでNTPが有効か確認し、有効でなければ有効化します。

```
# NTP動作確認
timedatectl show | grep NTP
```

```
# NTP有効化
sudo timedatectl set-ntp true
```

## 手動で日時を設定（必要な場合のみ）
NTPを使用せず、手動で時刻を設定したい場合は、以下のコマンドを使用します。
まず、timedatectlで正しい日時を設定できます。

例：2024年9月18日14時30分 に設定する場合
```
sudo timedatectl set-time '2024-09-18 14:30:00'
```

### ハードウェアクロックの同期
システムの時刻が正しく設定されたら、ハードウェアクロック（RTC）もシステム時刻に同期させておきます。

```
sudo hwclock --systohc
```

### 設定再確認
設定後、再度timedatectl statusコマンドを実行して、日時が正しく設定されているか確認してください。
```
timedatectl status
```

以上で終了です。お疲れ様でした。