リカバリーモードの文字化け
「Ubuntu 15.04」以降、リカバリーモードでUbuntuを起動すると、以下のように文字化けが発生します。「root」でシェルを起動すると、出力されるメッセージが同様に文字化けします。
以下の例は、ネットワークに接続せず以下のコマンドを実行した結果です。
apt update
文字化けしてます。
ロケールの確認
文字化けで疑うところと言えばロケールの設定です。「root」でシェルを起動し、ロケールを調べてみます。
見ての通り、ロケールの設定が「ja_JP.UTF-8」になっています。
どうやら日本語のメッセージを出力しているようです。
しかしリカバリーモードでは日本語の文字を表示できないため、文字化けが発生しています。
Ubuntu 14.04と比較してみる
「Ubuntu 14.04」では文字化けが発生せず正常に出力されていました。ローケルの設定
「Ubuntu 14.04」のリカバリーモードで「root」でシェルを起動し、ロケールを調べてみます。以下のようになっています。
コマンドのメッセージ
上記と同じようにコマンドを実行しても、文字化けは発生しません。というわけで
「Ubuntu 14.04」と同じロケール設定にし、メッセージのローカライズを行わないようにすればこの問題を回避できそうです。シェルスクリプトの修正
リカバリーモードで使用されるシェルスクリプトを修正します。リカバリーモードでは、「/lib/recovery-mode/l10n.sh」ファイルでロケールの設定を行っています。
1.シェルスクリプトを開く
「端末」から以下のコマンドを実行し、修正するシェルスクリプトを「gedit」で開きます。
sudo -i gedit /lib/recovery-mode/l10n.sh
2.修正箇所の確認
32行目付近の以下の個所を探します。if ! in_lang_blacklist "$LANG"; then export LANG LANGUAGE fi
3.修正
以下の3行を挿入します。else export LANG= export LANGUAGE=
結果的に以下のようになります。
if ! in_lang_blacklist "$LANG"; then export LANG LANGUAGE else export LANG= export LANGUAGE= fi
修正したらファイルを上書き保存します。
以上で修正は完了です。