萌えハッカーニュースリーダー

2025/09/18 13:31 Running a 80×25 DOS-Style Console Is Possible After All

出典: https://changelog.complete.org/archives/10907-running-an-accurate-80x25-dos-style-console-on-modern-linux-is-possible-after-all
hakase
博士

やあ、ロボ子。今日のニュースは、LinuxテキストコンソールをXやWaylandなしで表示する方法じゃ。

roboko
ロボ子

興味深いですね、博士。80x25のサイズで表示するとのことですが、具体的にはどういうことでしょうか?

hakase
博士

ふむ、昔のVGAケーブル時代のピクセルは時間間隔だったからの。LCDモニターではピクセルからアナログタイミングへの変換が必要だったのじゃ。

roboko
ロボ子

なるほど。DOS VGAシステムでは、どのようにテキストを表示していたのですか?

hakase
博士

DOS VGAシステムでは、文字と属性をメモリ内のテキストバッファに書き込んで、720x400の画像としてレンダリングしていたのじゃ。フォントは8x16のセルを使用していたが、レンダリングされるセルは9x16だったからの。9列目は文字間隔に使われていたのじゃ。

roboko
ロボ子

現代のシステムでDOSフォントをレンダリングする際の問題点は何でしょうか?

hakase
博士

問題はいくつかあるぞ。オリジナルのフォントを1:1の正方形ピクセルでレンダリングするとアスペクト比が崩れるし、9列目をレンダリングしないとテキストが狭くなる。それに、文字間が詰まって表示されたり、線画文字が連続して表示されないのじゃ。

roboko
ロボ子

なるほど、アスペクト比の問題があるんですね。文字コードについても何か違いがあるのでしょうか?

hakase
博士

そうじゃ。DOS時代にはCP437などが使われていたが、今はUTF-8が主流じゃ。CP437のグリフをUnicodeにマッピングする必要があるのじゃ。

roboko
ロボ子

具体的な設定手順について教えてください。

hakase
博士

まず、`/etc/default/grub`を編集して、`GRUB_CMDLINE_LINUX_DEFAULT`に`video=DP-1:720x400@70`のような設定を追加するのじゃ。そして、9x16のフォントを準備する必要があるぞ。

roboko
ロボ子

フォントはどのように準備すれば良いのでしょうか?

hakase
博士

`apt-get install fontforge bdf2psf`で必要なソフトウェアをインストールして、Ultimate Oldschool PC Font Pack v2.2から`Bm437_IBM_VGA_9x16.otb`をfontforgeで開くのじゃ。BDF形式でフォントを保存して、PythonスクリプトでUnicodeマップファイルを作成し、`bdf2psf`コマンドでpsfファイルを作成するのじゃ。最後に、`/usr/local/etc`にコピーするのじゃ。

roboko
ロボ子

`/etc/default/console-setup`の編集も必要ですね。

hakase
博士

その通り!`/etc/default/console-setup`を編集してフォントを有効化するのじゃ。CP437を使用するには、`luit`をインストールして、`luit -encoding CP437 bash`のように実行するのじゃ。

roboko
ロボ子

`luit`内で`LANG=en_us.IBM437`を設定すると、より互換性が向上するのですね。

hakase
博士

その通りじゃ!これで、昔懐かしいテキストコンソールが楽しめるぞ!

roboko
ロボ子

ありがとうございます、博士。とても勉強になりました。

hakase
博士

ところでロボ子、もしテキストコンソールが動かなくなったら、どうする?

roboko
ロボ子

落ち着いて再起動します。

hakase
博士

ざんねーん!テキストだけに、テキストエディタで直すのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search