質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

689閲覧

Rocky Linux 9 日本語をインストールしたのに文字化けする

ttact

総合スコア170

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2024/02/20 00:03

編集2024/02/20 00:42

課題

Rocky Linux9.3のCUIで日本語を使いたいです。SSH接続ではなく物理コンソールで。
TeraTermでのSSH接続では問題なく日本語を扱えていますが、物理コンソールでは■■■■みたいな感じになってしまいます。

https://eng-entrance.com/linux-localization-lang
の中で
「実機コンソールで日本語部分が文字化けをおこしてしまう場合、取り敢えず英語表記にするために「LANG=C」とするとよい。なおコンソール環境をメインとする場合や、最低限の英語が表示されていればよい場合などは「LANG=C」と決め打ちしてしまってもかまわないだろう。」
という記載がありますが、もしかして物理コンソールでは日本語が表示できないのでしょうか?Linuxの常識的な話であれば申し訳ありませんがご教授下さい。

環境

仮想マシンとしてインストール:Windows 10 Pro + WMware workstation pro 15.5。
ゲストOSは「Linux」→「その他の Linux 5.x 以降のカーネル(64ビット)」を選択(RHEL系が8までしか選択肢がなかったため)。
Rocky Linuxのインストールメディアは以下のページ
https://rockylinux.org/ja/download
から2024/2/19時点での「DVD」を選択してダウンロードした「Rocky-9.3-x86_64-dvd.iso」を利用。

インストールオプションは以下の通り:

  • 起動時は「Test this media & install Rocky Linux 9.3」を選択。
  • 「インストール時に使用する言語を選択してください。」では「日本語 Japanese」→「日本語(日本)」を選択。
  • 地域設定回りは、キーボード「日本語」言語サポート「日本語(日本)」時刻と日付「アジア/東京 タイムゾーン」。
  • インストールソースは「ローカル」、ソフトウェアの選択は「最小限のインストール」「選択した環境用のその他のソフトウェア」には何もチェックなし。
  • セキュリティープロファイルは無し。
  • rootとは異なるユーザーを作成。

インストール直後のロケールの設定状態

bash

1[(新規作成ユーザー)@localhost ~]$ localectl status 2System Locale: LANG=ja_JP.UTF-8 3 VC Keymap: jp 4 X11 Layout: jp 5 6[(新規作成ユーザー)@localhost ~]$ localectl list-locales 7C.UTF-8 8ja_JP.UTF-8 9 10[(新規作成ユーザー)@localhost ~]$ locale 11locale: Cannot set LC_CTYPE to default locale: No such file or directory 12locale: Cannot set LC_MESSAGES to default locale: No such file or directory 13locale: Cannot set LC_ALL to default locale: No such file or directory 14LANG=en_US.UTF-8 15(以下、LC_XXXXX="en_US.UTF-8"という記述が続くが、略) 16LC_ALL= 17 18[(新規作成ユーザー)@localhost ~]$ locale -a 19locale: Cannot set LC_CTYPE to default locale: No such file or directory 20locale: Cannot set LC_MESSAGES to default locale: No such file or directory 21locale: Cannot set LC_ALL to default locale: No such file or directory 22C 23C.utf8 24POSIX 25ja_JP.eucjp 26ja_JP.utf8 27 28[(新規作成ユーザー)@localhost ~]$ echo $LANG 29en_US.UTF-8 30 31[(新規作成ユーザー)@localhost ~]$ ls -la 32total 16 33(以下、ls -laの結果を略)

ここで「インストール時には日本語を選択してて、システムロケールもja_JPなのに、なぜ$LANGがen_USなんだろう?」という疑問がわきました。。。

ロケール設定変更後の挙動

bash

1[(新規作成ユーザー)@localhost ~]$ export LANG=ja_JP.utf8 2[(新規作成ユーザー)@localhost ~]$ ls -la 3■■ 16 4(以下、ls -laの結果を略)

「合計」の部分が化けます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

setoppu

2024/02/20 04:00

普通のコンソールては日本語表示できませんが、その辺りの対策したんてすか? https://eel2018lee.hatenablog.jp/entry/2019/10/14/140118 fbtermとかでしょうかねぇ。 起動した時点で自動起動するようにする…ってのはハマった記憶が。 >ここで「インストール時には日本語を選択してて、システムロケールもja_JPなのに、なぜ$LANGがen_USなんだろう?」という疑問がわきました。。。 .bashrcとか読んでみましょう。
TakaiY

2024/02/20 09:46

SSH接続ではなく物理コンソールで日本語文字を使いたい理由は何ですか?
ttact

2024/02/21 01:33

> setoppuさん 情報ありがとうございます。ご紹介頂いたページが非常に参考になりました。現在、fbtermを使うか、システムロケールをen_USにするかで対応しようと考えています。 > TakaiYさん コメントありがとうございます。SSH接続をしない理由は謎の障害?によるものです。最終的には作成した仮想マシンをvSphereに載せるつもりなのですが、既存のvSphere上の仮想マシンに対してVMware workstation proでは接続できるのにSSH接続ができないことがあるのです。
guest

回答3

0

Rocky LinuxなどのOSを普通に (デスクトップ環境なしで) インストールしたときの物理コンソールではPCに搭載されたハードウェアによって画面に文字を表示します。このハードウェアはASCII文字セットに毛の生えた程度の文字種だけが収録されたフォントしか内蔵していません。ですから日本語は表示できません。

物理コンソールの画面に日本語を表示するには、ハードウェアのグラフィック機能を制御して日本語フォントでの表示を可能にするソフトウェアをそのマシン上で実行する必要があります。KON、bterm、jfbtermなどのソフトウェアがあります。——ほかの回答やコメントを見ると人によって紹介しているソフトウェアが違いますが、いろいろなのがあるということです。いろいろ試してみてください。

sshによるリモートログインなどしているときはクライアントソフトウェアの側で文字を表示するので、上のようなソフトウェアを実行する必要はありません。

以上のように物理コンソールの動作を模倣するソフトウェアを総称して「ターミナルエミュレータ」とも言いますが、今ではエミュレータのほうがエミュレートされる機器よりも高機能になっているわけです。


ロケール設定の件は別の話題となりますので、別途質問していただいたほうがよいかもしれません。

投稿2024/02/20 09:30

編集2024/02/20 09:31
ikedas

総合スコア4343

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttact

2024/02/21 01:37

ご回答ありがとうございます。代替手段について様々なものがあることご紹介いただき助かります。頂いたご回答を読んでttyのフォントを直接変更できるかどうか検索してみましたが、すぐには見つかりませんでしたので、頂いた代替手段にするかシステムロケールをen_USにすることにします。 大変恐縮ですが、先にご回答頂いたotnさんのほうをベストアンサーにさせて頂きます。申し訳ございません。
ikedas

2024/02/21 03:01

フォントデータはハードウェアに内蔵されているので変更することは基本的に不可能ですし、そのハードウェアは日本語のように多種の文字をふくむフォントをあつかえる仕組みにもなっていません (ちなみに、かつては日本語フォントを内蔵したハードウェアを持つPCも製造されており、一時期までは日本での主流でした)。 一方、当質問の回答やコメントで紹介されているさまざまなソフトウェアはフォントを変更しているのではなく、グラフィックスの表示に使われる「フレームバッファ」というメモリ領域にデータを書き込むことで画面上に文字の形を描画するものです。グラフィックスを使って物理コンソールの動作を模倣している、ターミナルエミュレータの一種と言えます。
guest

0

ベストアンサー

もしかして物理コンソールでは日本語が表示できないのでしょうか?

そうです。最新状況をウォッチしているわけでは無いので、ここ数年で急に変化がなければですが、Linux登場時からそうなので変わってないと思います。

ただし、コンソール上で動く端末エミュレーター的な物があり、これをインストールすると表示できるようです。KMSCON で調べてみてください。初期に一度試してみただけで、ずっと使ってないので覚えてませんが、/dev/console/dev/tty1じゃなくておそらく仮想端末上だと思います。

ここで「インストール時には日本語を選択してて、システムロケールもja_JPなのに、なぜ$LANGがen_USなんだろう?」という疑問がわきました。。。

手元のCentOSだと、/etc/profile.d/lang.shLANGをセットしているのですが、同じようなファイルがあるなら、そこの条件で期待通りになっていないと言うことかと思います。ロジックを追ってみましょう。

「合計」の部分が化けます。

ls -la | nkf -gもしくはls -la | hexdump -Cなどで、メッセージがどのエンコーディングなのか確認しましょう。
・端末がutf8でない
・ロケール定義が壊れてLANG=ja_JP.utf8なのにutf8じゃないものを出している
のどちらであるか切り分けられるかと思います。

投稿2024/02/20 04:19

otn

総合スコア84618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2024/02/20 06:19

本筋と関係ないですが、 > 初期に一度試してみただけで、ずっと使ってないので覚えてませんが、 は、setoppu さんのコメントにある fbterm だったような気がしてきました。
ttact

2024/02/21 01:41

ご回答ありがとうございます。lang.shについてご教授頂いたので内容を確認し、このなかでttyならen_USにしている箇所を見つけました。大変ありがとうございます。また文字化けの切り分けの仕方も助かりました。UTF8で出力しておりttyのフォントの問題であることがわかりすっきりしました。fbterm等の代替手段にするか、システムロケールをen_USにするかで解決したいと思います。
otn

2024/02/21 02:25

後半のロケールやls -lの件もコンソールでの話だったのですか。 別件かと思っていました。 端末によってLANG(に限らず各種環境変数)を変えるのはごく普通です。
guest

0

[香車]東上☆あらし☆海美「
ジェネリックな回答として、

日本語フォントが入っていない。
Terminal ? の表示のフォント指定が、日本語フォントを指定していない。

が、考えられます。Rocky Linux9.3 のユーザーでは無いので、これくらいしか思いつきません。

投稿2024/02/20 03:33

umimi

総合スコア231

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttact

2024/02/21 01:42

ご回答ありがとうございます。ttyが日本語フォントを使っていないことが問題でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問