見出し画像

CUIでスクショ・・でフレームバッファが見えた件(Arch Linux使いへの道5)

「前回の記事のエビデンスは?(キリッ)」に対抗しよう!

 前回、仮想CUIターミナルを切り替えながら使えばマルチタスクができると書きましたが、実際にやってみました!CTL+ALT+F2で第2の仮想CUIターミナルのtty2が立ち上がりました!・・・え?証拠はって?最近の社会人はすぐにエビデンスを求めがち・・・ですが、これまでiPhoneで撮った写真ばっかりだったので、折角だからスクリーンショットを撮ろう!と思ったらそこから小一時間かかりました(涙)。
 まずはコパイロット先生に「CUI環境のArch Linuxでスクリーンショットを取りたい」と質問したところ、ソリューションが2つ返ってきました!
【方法1】fbgrabを使ってフレームバッファを画像として保存
【方法2】setterm + cat /dev/vcs で文字出力を保存

フレームバッファってなんぞ?

 突然出てきたフレームバッファという耳慣れない言葉。コイツは何なのか、さらにコパイロット先生との対話を続けました。

Oh…微妙にわかりにくい

 ちょっと何言っているかわからない・・・。更に対話を続けてわかったのは、モニターに次に表示する画像を、解像度の数だけ縦横に並んだピクセルの一つ一つの色設定で格納しているメモリ領域って感じのようです。つまりモニターで視認している画面は、メモリ(フレームバッファ)に書き込まれた情報をモニターのバックライトで再現(映写・投影)していると自分は解釈しました。要はCUIの画面のどのピクセルを黒く、どのピクセルを白く光らせるのかの命令書を保存しているところ(表示すべき文字を形として認識)ってことでしょうね。で、このフレームバッファが機能していないCUIはどうなるのかというと、「テキストVGA」で文字を表示することになるそうです。
 テキストVGAでは、表示すべき文字を文字ごとに対応する固有の番号(キャラクター(文字)コード)でモニターへの表示命令を出すようです。
 まとめると、「A」を画面に表示する際に
 ・フレームバッファはバックグラウンドを黒く、Aを形作る線に相当する部分を白く光らせろとモニターに伝える
 ・テキストVGAは、認識番号01000001号(Aの文字コードの2進法表記)に相当するものを表示せよとモニターに伝える
 ということのようです。

ならばフレームバッファで何でも表示できるのでは?実質GUI?

 フレームバッファがピクセルの制御をしているのであれば、CUI環境ながら画像や動画も扱えるのでは?CUI環境最強!?と思う読者諸兄姉もいらっしゃるかもしれませんが、焦ってはいけません。冷静にコパイロット先生との対話を進めると、こんにちのLinuxのCUI環境でフレームバッファが使っているメモリは、メインメモリ(RAM)ではなくGPUのメモリ(VRAM)ということがわかりました。ほんならなおさらCUI環境最強やんけ!!と狂喜乱舞する読者諸兄姉もいらっしゃるかもしれませんが、ちょっとだけ落ち着いてこの後の話を聞いてください。このフレームバッファはGPUからメモリを使わせてもらうことしかできないという限界があるみたいです。このためGPUのメイン機能である動画処理、3D処理、複数画面の合成といったところを制御できないということだそうです。これを使える選ばれし救世主こそがGUI環境のようです。これを更に深く勉強し出すと、WaylandやXorg、DRM、OpenGL、Vulkanなどに話がつながっていく模様ですが、もうキャパオーバーっす!

話を戻そう!スクショ撮るどーーーー!!

 さてさて、コパイロット先生はfbgrabを使ってフレームバッファを画像として保存することを第1案として提案してきました。早速提案どおり、fbgrabをThinkPadにインストールしましょう。fbgrabはfbidaパッケージに含まれるものだそうで、そのfbidaパッケージをインストールします。

sudo pacman -S fbida

で、スクリーンショットを撮るときは、

fbgrab screenshot.png

なんですが、実行したらcommand not foundになりました。ミスターチルドレンのヒットシングルにありましたねNot Found。ありゃ。いったいどうすれば・・・・(つづく)。

いいなと思ったら応援しよう!