はじめに
Computeインスタンス作成すると、初期状態ではタイムゾーンやロケールが日本向けに設定されていない。そのため設定を変更しなければならない。さまざまなところで使い古されているネタだけれど、防備録として書くことにする。
また手動で設定するのではなく、cloud-initでインスタンス作成と同時に設定する方法は下記の記事で紹介している。
対象環境
6系と7/8/9系ではまったく操作が違うので、それぞれについて説明する。
- Red Hat Enterprise Linux 9やCentOS Stream 9、Oracle Linux 9、AlmaLinuxなどの9系OS
- Red Hat Enterprise Linux 8やCentOS 8、Oracle Linux 8、AlmaLinuxなどの8系OS
- Red Hat Enterprise Linux 7やCentOS 7、Oracle Linux 7、Amazon Linux 2などの7系OS
- Red Hat Enterprise Linux 6やCentOS 6、Oracle Linux 6、Amazon Linuxなどの6系OS
※本文ではOracle Cloud Infrastructureを使用しているが、Amazon EC2やAzure VMでもほとんどの操作は同じだ。ただしAmazon Linux 2は7系の説明を参照してほしい。
ローカルログインのロケールとsshログインのロケールの違い
Computeインスタンス作成直後にsshログインしたときでも、ロケールは日本(LANG=ja_JP.utf8)になっている。それはログイン方法によって、設定されるロケールが違うからである。
ローカルログインでは、システムワイドのロケールが使用される。その値は次のファイルに設定されている。
6系 /etc/sysconfig/i18n
7/8/9系 /etc/locale.conf
それに対してsshログインではsshクライアントのロケールが使用される。そのため日本語環境のWindows/Linuxからsshログインすると、日本のロケールが設定される。ただしsshログイン後sudo su -
などを実行するとローカルログインなので、ロケールはLANG=en_US.UTF-8
になる。
ローカルログインで、個別のユーザーだけのロケールを変更するには以下のように設定する。
6系 $HOME/.bashrcなどでLANG=ロケール
をexportする
7/8/9系 $HOME/.i18nで指定する
7/8/9系OSで変更する
タイムゾーンを変更する
現在のタイムゾーンを確認するとGMTになっている。
# timedatectl
Local time: Tue 2019-05-14 09:49:46 GMT
Universal time: Tue 2019-05-14 09:49:46 UTC
RTC time: Tue 2019-05-14 09:49:47
Time zone: GMT (GMT, +0000)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
タイムゾーンを日本に変更する。これで日本時刻が表示される。
# timedatectl set-timezone Asia/Tokyo
# timedatectl
Local time: Tue 2019-05-14 19:56:35 JST ★
Universal time: Tue 2019-05-14 10:56:35 UTC
RTC time: Tue 2019-05-14 10:56:36
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
ロケールを変更する
現在のロケールを確認するとアメリカになっている。
# localectl
System Locale: LANG=en_US.utf8
VC Keymap: us
us
そこでロケールを日本に変更する。合わせてキーマップも日本語に変更する。
# localectl set-locale LANG=ja_JP.utf8
# localectl set-keymap jp106
同じコマンドを実行するとロケールが変更されていることがわかる。
# localectl
System Locale: LANG=ja_JP.utf8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
設定値は次のファイルに書かれている。
# cat /etc/locale.conf
LANG=ja_JP.utf8
キーマップを変更する
キーマップを変更しなくても日本語キーボードを使えることがほとんどだ。しかし、VNCやXmingなどのGUIクライアントを使用するときには変更しなければならないこともある。
- 次のコマンドでキーマップを変更する。
localectl set-keymap jp106
2.変更すると次のように出力される。
# localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
RPMパッケージをインストール/アップデートする
パッケージを最新化する。
# yum update -y
続いて便利なパッケージをインストールする。
# yum install nmap nc tree tmux multitail man-pages-ja -y
nmapにはncなどが含まれ、ポートの疎通確認などに使える。tmuxはターミナル多重化ソフトウェアで、1つのターミナルの中で複数のセッションを起動できるだけでなく、セッションが切れても、リモートデスクトップのようにサーバー上のセッションは保持されている。multitailはログファイルを参照するのに便利なツールである。
まとめバージョン(7/8/9系)
# タイムゾーン変更
timedatectl set-timezone Asia/Tokyo
# ロケール変更
localectl set-locale LANG=ja_JP.utf8
localectl set-keymap jp106
# パッケージアップデート
yum update -y
# 便利パッケージインストール
yum install nmap nc tree tmux multitail man-pages-ja -y
Oracle Linux 6/CentOS 6などの6系OSで変更する
タイムゾーンを変更する
現在のタイムゾーンを確認するとGMTになっている。
# strings /etc/localtime
TZif2
TZif2
GMT0
# ls -l /etc/localtime
-rw-r--r--. 1 root root 118 4月 19 02:12 2019 /etc/localtime
システムクロックのタイムゾーンを日本に変更する。
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 30 5月 14 20:12 2019 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
# strings /etc/localtime
TZif2
TZif2
JST-9
ハードウェアクロックの設定も日本にする。
# cp -p /etc/sysconfig/clock /etc/sysconfig/clock-`date +%Y%m%d`
# cat <<_EOL_ >/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
_EOL_
ロケールを変更する
現在のロケールを確認するとアメリカになっている。
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8
設定値は/etc/sysconfig/i18nファイルに書かれている。
# cat /etc/sysconfig/i18n
LANG=en_US.UTF-8
SYSFONT=latarcyrheb-sun16
そこでロケールを日本に変更する。
# sed -i -e "s/en_US/ja_JP/" /etc/sysconfig/i18n
設定を有効にするために再起動する。
# reboot
同じコマンドを実行するとロケールが変更されていることがわかる。
$ cat /etc/sysconfig/i18n
LANG=ja_JP.utf8
SYSFONT=latarcyrheb-sun16
sshログインしたユーザーだとクライアントのロケールが反映されるので、suしてから実行する。
$ sudo su -
# locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
キーマップを変更する
キーマップの設定はオプションだが、VNCやXmingなどのGUIクライアントを使用するときには変更する。
KEYTABLE="us"
MODEL="pc105+inet"
LAYOUT="us"
KEYBOARDTYPE="pc"
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"
RPMパッケージをインストール/アップデートする
パッケージを最新化する。
# yum update -y
続いて便利なパッケージをインストールする。
# yum install nmap nc tree tmux multitail man-pages-ja -y
まとめバージョン(6系)
# システムクロックのタイムゾーン変更
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# ハードウェアクロックのタイムゾーン変更
cp -p /etc/sysconfig/clock /etc/sysconfig/clock-`date +%Y%m%d`
cat <<_EOL_ >/etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=false
_EOL_
# ロケール変更
sed -i -e "s/en_US/ja_JP/" /etc/sysconfig/i18n
# パッケージアップデート
yum update -y
# 便利パッケージインストール
yum install nmap nc tree tmux multitail man-pages-ja -y
おわりに
今回は手動で設定する方法を説明した。やはり、cloud-initのほうが便利だなあ。