Linux あれこれ

Linux 関連の備忘録です。

VirtualBox の「Arch Linux」にて仮想コンソールを「kmscon」に入替え〈H122-3〉

登録日: 2021-06-29 更新日: 2021-07-02

前回、「Xubuntu 20.04.2 LTS」に、ハードウェアの違いを仮想マシンにより吸収できる「VirtualBox」をインストール しました。

そのVirtualBox に「Arch Linux」をインストールしたところ、仮想コンソールで日本語が文字化けしました。 対策として「fbterm」を使う と文字化けせず、また、勝手に改行される現象も解消しました。

-

これなら、不安定だった「Arch Linux」のライブ立ち上げでのインストール作業も安定しそうです。ただし、「fbterm」はAUR アプリにつきライブ立ち上げの環境でインストールするのは難しそう。

ということで、公式リポジトリの「ターミナルエミュレータ」である「kmscon」を試してみました。

その備忘録です。

-

-

使用したPC は「ASUS Chromebox CN60 」で、プロセッサは第4世代の古い「Intel Celeron 2955U 」です。

-

(注)リンクを戻るときはブラウザの左上の「←」をクリック

-

-


目次

-

「VirtualBox のインストール」

「Arch Linux のインストール」

「Arch Linux の仮想コンソールで気づいたこと:」

「kmscon をインストール:」

「kmscon をライブ立ち上げのインストール作業で使ってみる:」

「kmscon を使うとしたら:」

「まとめ へ」

-

「目次詳細 へ」

-

-


VirtualBox の「Arch Linux」の画面:

-

ライブ立ち上げ(2021.05.01 のiso イメージ)の画面:

→(tty1) と表示されていることに注目。

-

ライブ立ち上げ(2021.06.02 のiso イメージ)の画面:

→人気がなかったのか、遊び心はなくなりました。

-

ホストOS : Xubuntu 20.04.2 LTS
ゲストOS : Arch Linux(2021.06.02 のiso イメージ) ←(今回の作業時のバージョン)

→ローリングリリースにつき、バージョン表記はありません。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -

-

現時点のバージョンを表示:

-

Arch Linux はローリングリリースにつき更新されて行くので、現時点のバージョンを表示:

2021-06-29 現在:

$ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux

$ uname -r 
5.12.12-arch1-1

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --

-

「Arch Linux」の仮想コンソールで気づいたこと(まとめ)

-

前回の作業 を参照:

-

  • 仮想コンソールのデフォルトの端末の代わりに「fbterm」をインストールすると問題が改善しました。

重要なポイントは、仮想コンソールで勝手に改行が入る現象が解消したこと:

→一度ログインしてログアウトしたら、ここでも発生しています。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---

-

「kmscon」をインストール:

-

ライブ立ち上げのときに、公式リポジトリに登録されていない「fbterm」を使うのは難しいので、 公式リポジトリにある「ターミナルエミュレータ」の「kmscon」は使えるか、トライしました。

「ターミナルエミュレータ」とは言っても通常のアプリではなく、仮想コンソール(カーネル内蔵の linux コンソール)と置き換えて使うサービスのようです。

-

すでにデスクトップ環境(Openbox)をインストールしていたので、インストール作業等はデスクトップ環境で行い、確認はデスクトップ環境から抜けて仮想コンソールで行いました。

デスクトップ環境をインストールしていない場合でも、同じように作業できると思います。

-

参考:

KMSCON wiki

-

  • 「kmscon」は公式リポジトリに登録されているアプリです。

  • カーネル内蔵の Linux コンソールの互換品として機能します。

  • 国際化の完全サポート:

→CJK フォントを含む、Unicode 文字を全て表示できます。

→全てのキーボードレイアウトを利用できます。

-

1). 必要なパッケージの確認:

  • KMS もしくは、下記のどれかがあれば使えるようです:
fbdev (Linux fbdev ビデオバックエンド)
drm2d (Linux DRM ソフトウェアレンダリングバックエンド)
drm3d (Linux DRM ハードウェアレンダリングバックエンド)

-

$ pacman -Ss fbdev
extra/xf86-video-fbdev 0.5.0-2 (xorg-drivers)
    X.org framebuffer video driver

$ pacman -Ss drm
:
extra/libdrm 2.4.106-1 [インストール済み]
    Userspace interface to kernel DRM services
extra/libva 2.11.0-1 [インストール済み]
    Video Acceleration (VA) API for Linux

-

2). インストールできるかの確認:

$ pacman -Ss kmscon
community/kmscon 8-6
    Terminal emulator based on Kernel Mode Setting (KMS)

-

3). インストール:

$ sudo pacman -S kmscon
:
パッケージ (2) libtsm-3-5  kmscon-8-6

-

4). 確認:

$ which kmscon
/usr/bin/kmscon

$ whereis kmscon
kmscon: /usr/bin/kmscon /usr/lib/kmscon /usr/share/man/man1/kmscon.1.gz

$ kmscon --version
Unknown argument: --version
[0000.000000] ERROR: cannot load configuration: -14
[0000.000245] ERROR: cannot initialize kmscon, errno -14: Bad address

$ pacman -Ss kmscon
community/kmscon 8-6 [インストール済み]
    Terminal emulator based on Kernel Mode Setting (KMS)

→バージョン表示は未サポートなので、pacman で確認。

-

5). 仮想コンソール画面にします:

デスクトップ環境をすでに入れていて、ウィンドウマネージャがSlim の場合の操作:

-

デスクトップのログイン画面にて、

ユーザー名に「exit」Enter

→仮想コンソール画面に戻りました。

-

ユーザでログインして、

$ kmscon --help

→指定できるオプションが多く、多機能です。

-

6). コマンドとしては起動できませんでした:

$ kmscon

→画面真っ暗、何も表示されません。 通常の端末アプリとは違います。

-

VirtualBox ウィンドウのメニューから、仮想マシン→リセット

仮想マシンが再起動。

-

7). 設定:

  • インストール作業のはじめには「nano」はないので、練習も兼ねて「vi」を使用。

-

(1). root で kmscon コンソールにログインしたいので、pam_securetty モジュールを無効にします:
$ sudo vi /etc/pam.d/login

↓ 下記の行をコメント化

#auth       required     pam_securetty.so

→root で kmscon コンソールにログインするには、pam_securetty モジュールを無効にします。

-

vi 操作:

目的の行の先頭にカーソルを持っていき、

「i」「#」「Esc」「:」「wq」Enter キー

→修正、保存、終了となります。

-

確認:

ここで、cat は使うべきではありません。nano を使うか、確認しないか、です。

$ cat /etc/pam.d/login
#%PAM-1.0

#auth       required     pam_securetty.so
auth       requisite    pam_nologin.so
auth       include      system-local-login
account    include      system-local-login
session    include      system-local-login
password   include      system-local-login

-

(2). 日本語キーボードにつき、/etc/kmscon/kmscon.conf にレイアウトを設定:

ここで、cat は使うべきではありません。nano を使うか、確認しないか、です。

-

確認:
$ @@@@   ←(Enter は入力せず。入力できるかの確認のみ)

$ cat /etc/kmscon/kmscon.conf
cat: /etc/kmscon/kmscon.conf: そのようなファイルやディレクトリはありません

→切り替えのコマンドを打っても再起動しないとgetty の設定が有効で日本語配列だろうと思います。 再起動にてkmscon に切り替わると、英語配列になります。

-

フォルダを作成:
$ sudo mkdir /etc/kmscon

-

vi 操作:
$ sudo vi /etc/kmscon/kmscon.conf

行の先頭で、「i」として下記を入力:

xkb-layout=jp

「Esc」「:」「wq」Enter キー

→保存、終了となります。

-

確認:

ここで、cat は使うべきではありません。nano を使うか、確認しないか、です。

$ cat /etc/kmscon/kmscon.conf
xkb-layout=jp

→再起動にて反映されます。

-

8). 仮想コンソールの「tty1」で kmscon を使うとき(今回):

$ sudo systemctl disable getty@tty1.service
$ sudo systemctl enable kmsconvt@tty1.service

-

参考: 全ての仮想コンソールで kmscon を有効にするとき:
# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service

→systemd がそれぞれの VT で「agetty」の代わりに「kmscon」を起動するようになります。 何らかの理由で kmscon が実行できないときは、代わりに getty@.service が起動されます。

-

9). 参考: 日本語フォントがインストールされていない場合:

→デスクトップをインストールしているからか、以下の作業は不要でした。

-

(1). 公式リポジトリの「ttf-dejavu」と「otf-ipafont」をインストール
$ pacman -Ss ttf-dejavu
extra/ttf-dejavu 2.37+18+g9b5d1b2f-3 [インストール済み]
    Font family based on the Bitstream Vera Fonts with a wider range of
    characters

-

$ pacman -Ss otf-ipafont
community/otf-ipafont 003.03-8 (ipa-fonts)
    Japanese outline fonts by Information-technology Promotion Agency, Japan
    (IPA)

→インストールなし

-

(2). CJK 文字のレンダリングのために、適切な CJK フォントにマップするよう fontconfig を設定:

→デスクトップをインストールしているからか、以下の作業は不要でした。

$ ls /etc/fonts/conf.d/

$ sudo nano /etc/fonts/conf.d/99-kmscon.conf

↓ 下記を記述:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
        <test name="family"><string>monospace</string></test>
        <edit name="family" mode="prepend" binding="strong">
                <string>DejaVu Sans Mono</string>
                <string>IPAGothic</string>
        </edit>
</match>
</fontconfig>

-

10). 参考: Xorg と kmscon の切り替えに問題が発生する場合:

ExecStart に --hwaccel --drm を追加するとよいみたい:

ExecStart=/usr/bin/kmscon "--vt=%I" --seats=seat0 --no-switchvt --font-name Terminus --font-size 12 --hwaccel --drm

→詳しいことは未確認。systemctl の設定ファイルのパラメータみたい。

-

11). 設定を反映させるために再起動

-

12). ログイン画面でユーザ名に「exit」Enter

-

「Slim」の隠し機能?を使いました:

参考:

SLiM wiki

-

  • ユーザー名にコマンドが入力できます:
reboot : 再起動
halt : シャットダウン
exit : slim を終了して bash に戻る
console : xterm を起動(/etc/slim.conf で端末アプリを変更可能)

-

13). ユーザでログインして、確認:

→このアプリ用に特定のフォントは入れておらず、その設定もしていませんが、日本語表示できました。

「fbterm」の日本語表示に比べると、めちゃくちゃきれいです。ユーザでログインすると、カラー表示されます。root でのログインだとモノクロでした。

文字の表示がきれいなので、ライブ立ち上げで使えなくても、入れておく価値はありそう。

  • 一番のポイントは、余計な改行が入力されないので、安心して cat が使えることです。

  • そして、Shift+PageUP、Shift+PageDown で画面のスクロールが可能です。

  • カーソル形状が縦長に変わっていることに注目

→Noto が使われているときは縦長になるみたい。

$ fc-match

-

サービスの状態表示:

getty 側:

$ systemctl status getty@tty1
○ getty@tty1.service - Getty on tty1
     Loaded: loaded (/usr/lib/systemd/system/getty@.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:agetty(8)
             man:systemd-getty-generator(8)
             http://0pointer.de/blog/projects/serial-console.html

→「○」は白色の表示です。

kmscon 側:

[ubn@ubn-box ~]$ systemctl status kmsconvt@tty1
● kmsconvt@tty1.service - KMS System Console on tty1
     Loaded: loaded (/usr/lib/systemd/system/kmsconvt@.service; enabled; vendor preset: disabled)
     Active: active (running) since Mon 2021-06-28 17:23:07 JST; 19min ago
       Docs: man:kmscon(1)
   Main PID: 276 (kmscon)
      Tasks: 1 (limit: 3495)
     Memory: 23.5M
        CPU: 946ms
     CGroup: /system.slice/system-kmsconvt.slice/kmsconvt@tty1.service
             └─276 /usr/bin/kmscon --vt=tty1 --seats=seat0 --no-switchvt

 6月 28 17:23:07 ubn-box systemd[1]: Started KMS System Console on tty1.
 6月 28 17:23:07 ubn-box kmscon[276]: [0000.000000] NOTICE: kmscon Revision kmscon-8 Jul  7 2020 14:00:10
 6月 28 17:23:07 ubn-box kmscon[276]: [0000.229767] NOTICE: vt: using tty /dev/tty1
 6月 28 17:23:34 ubn-box login[333]: pam_unix(login:session): session opened for user root(uid=0) by (uid>
 6月 28 17:23:35 ubn-box login[333]: pam_env(login:session): deprecated reading of user environment enabl>
 6月 28 17:23:35 ubn-box login[333]: ROOT LOGIN ON pts/0

→END が表示されていたら「q」で表示終了。「●」は緑色の表示です。 kmscon にうまく切り替わったら、縦長のカーソルになります。日本語フォントはとてもきれい。

-

参考: デスクトップの「xfce4-terminal」で表示させたとき:
$ tty
/dev/pts/1

$ who
root     pts/0        2021-06-28 17:23

$ w
 17:49:05 up 26 min,  1 user,  load average: 2.18, 2.27, 1.77
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     17:23   25:29   0.01s  0.01s -bash

-

仮想コンソールでユーザでログインして「kmscon」で表示させたとき:
$ tty
/dev/pts/0

$ script

$ who
ubn      pts/0        2021-06-28 17:54

$ w
 17:57:00 up 33 min,  1 user,  load average: 0.06, 1.13, 1.52
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
ubn      pts/0     17:54    3.00s  0.02s  0.00s script

$ tty
/dev/pts/1

$ exit
exit

Script done on 2021-06-28 17:57:48+09:00 [COMMAND_EXIT_CODE="0"]

→ls の表示はカラーです。

-

14). root でログインして、確認:

$ exit

root でログイン

# tty
/dev/pts/0

# script
Script started on 2021-06-28 18:00:29+09:00 [TERM="xterm-256color" TTY="/dev/pts/0" COLUMNS="239" LINES="41"]

# tty
/dev/pts/1

# who
root     pts/0        2021-06-28 18:00

# w
 18:00:46 up 37 min,  1 user,  load average: 0.00, 0.52, 1.18
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     18:00    4.00s  0.01s  0.00s script

# pwd
/root

# ls
arch_linux_install.log  arch_linux_install2.log  test.log  typescript  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  音楽  画像  公開

# exit
exit

Script done on 2021-06-28 18:01:21+09:00 [COMMAND_EXIT_CODE="0"]

→ls の表示はモノクロです。

-

15). ライブ立ち上げで問題となりそうなところ

→反映(サービスの切り替え)に再起動が必要なので、再起動すると初期化されるライブ立ち上げでは難しそう。

-

「getty@tty1.service」を停止して、「kmsconvt@tty1.service」を起動、させたとき、

自分自身である「getty@tty1.service」は停止できないか、 「getty@tty1.service」を停止してすぐにシステムコンソールが使えなくなるかもしれません。

-

ライブ立ち上げして、試してみるしかなさそう。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----

-

「kmscon」をライブ立ち上げのインストール作業で使ってみる:

-

1). 最新のiso をダウンロード:

archlinux/iso/latest

07-02 02:00 頃にダウンロードできれば、更新がもっとも少ないのですが、待てませんでした。

-

[archlinux-2021.06.01-x86_64.iso 2021-06-02 01:51 774M] (http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/iso/latest/archlinux-2021.06.01-x86_64.iso)

$ cd ~/ダウンロード/
$ sha1sum archlinux-2021.06.01-x86_64.iso
6c41a22fb3c5eabfb7872970a9b5653ec47c3ad5  archlinux-2021.06.01-x86_64.iso

これをVirtualBox仮想マシンにマウント

-

2). ライブ立ち上げ:

-

# uname -r
5.12.8-arch1-1

-

3). インストール:

-

(1). 確認:
# pacman -Ss kmscon
:
warning: database file for 'core' does not exist (use '-Sy' to download)
warning: database file for 'extra' does not exist (use '-Sy' to download)
warning: database file for 'community' does not exist (use '-Sy' to download)

-

(2). データベースの同期:
# pacman -Sy
:: Synchronizing package databases...
 core
 extra
 community

-

(3). 確認:
# pacman -Ss kmscon
community/kmscon 8-6
        Terminal emulator based on Kernel Mode Setting (KMS)

リポジトリが使えるようになりました。

-

(4). インストール:
# pacman -S kmscon

-

:
error: Partition / too full: 138177 blcks needed, 50500 blocks free
error: not enough free disk space

→インストールされるパッケージが33個もあり、 ディスクの空きが足りずインストールが中断されます。インストールできませんでした。

-

(5). ライブ立ち上げでの「kmscon」のインストールはディスクの空きが足りません。

ライブの空きを増やすスキルがないので、断念。

-

-

4). 「kmscon」を使うとしたら、

まずは、「Arch Linux」のインストールは必要最小限の設定を行います。

再起動して、システムが立ち上がってから、 「kmscon」をインストールして、コンソールを切り替えるのが良さそうです。

これなら安心して、その後のcat 等で確認できます。

-

-


まとめ

「Arch Linux」のコンソール(端末)は安定していません。なぜか、cat やless 、more などのコマンドを使うとハングしやすいです(改行が入りっぱなしでキーを受け付けなくなります)。確認作業にcat は極力使わないようにして、さっさと設定を終わらせるのがコツみたい。

もしかしたら「kmscon」で安定するかもと思いましたが、インストール作業では使えませんでした。

インストールが完了した後の設定作業で使うことになりそうです。 どちらにしても、デスクトップ環境をインストールしたら不要な作業です。

-

-


-

-

-

    目次

-

「投稿の先頭 へ」

-

-


-

「この目次 の先頭へ」

「本編の目次 に戻る」

-