スキップしてメイン コンテンツに移動

fbtermをttyサービスとして起動しコンソールにて日本語表示・日本語入力

kmsconsでも一通りのことはできるのですが、uim-fepを使う場合、screenコマンドなどを別途起動する手間やキーボード設定を別途記述する必要があるなど面倒さが残ります。またログインではバックスペースやデリートキーがつかえません。
しかし、fbtermではそのような事はありませんが、fbtermはユーザーモードで起動するにはひと手間かかります。そこで、fbtermを一層のことttyサービスとして起動できないか試したところほぼ期待通りに動作し、fbtermをsystemdから起動する記事はみあたらなかったので備忘録を兼ねて本稿を挙げてみました。なお環境はDebian10/Debian11です。
早速設定ですが、必要なパッケージは、fbtermとrungettyです。もちろん、日本語フォントが入っていることが前提ですが、netinstの最小インストールで言語環境を日本語として選択・インストールしている場合は日本語フォントが有効になって、別途日本語フォントを入れる必要はありません。しかしフォントを別途インストールすることもできますので、今回はfonts-vlgothicをインストールしてみました。
apt install fbterm rungetty fonts-vlgothic gpm
ちなみにgpmはCUIでのマウスによる文字選択/コピー・ペーストをサポートするプログラムです。
まず最初に、consoleでのキーボード設定ですが、以下の様にして日本語キーボードを使えるようにしておきます。
$ sudo localectl set-keymap jp106
続いて、systemdのserviceとして起動するためのファイルを作成します。
## edit /lib/systemd/system/fbterm@.service

#
# fbterm system console on VTs
#

[Unit]
Description=fbterm System Console on %I
Documentation=man:fbterm(1)
After=systemd-user-sessions.service
After=plymouth-quit-wait.service
Before=getty.target
Conflicts=getty@%i.service
OnFailure=getty@%i.service
IgnoreOnIsolate=yes
ConditionPathExists=/dev/tty0

[Service]
ExecStart=/sbin/rungetty -u root %I -- fbterm -- login
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target
fbterm@.serviceファイルを作成したら、サービスとして登録します。以下の設定でvt2からvt6まででfbtermが起動します。
sudo ln -s /lib/systemd/system/fbterm@.service /etc/systemd/system/autovt@.service
登録が済んだら再起動してfbtermが起動しているか確認してください。 なお、VT切り替えは、GUIからはCTRL+ALT+Fxx(ファンクションキー)で切り替わります。また、一旦CUIに切り替わってからは、ALT-FxxでVT切り替えができます。参考までに標準のgettyコンソールではGUI/CUI関係なくCTRL+ALT+Fxxで切り替わります。
ちなみにfbtermをf2からf6で起動させないようにするには、単純に
rm /etc/systemd/system/autovt@.service
として、再起動してください。
また、VT1でもfbtermを起動させる場合は、以下の様にします。
sudo systemctl disable getty@tty1.service
sudo systemctl enable fbterm@tty1.service
VT1でgettyに戻す場合は以下の様にします。
sudo systemctl disable fbterm@tty1.service
sudo systemctl enable getty@tty1.service
一旦fbtermがrungetty経由で起動すると、自動で設定ファイルの/root/.fbtermrcが作成されますので、フォントの指定などはこのファイルを編集してください。以下、vlgothic size 14でのサンプル画面です。
続いて日本語入力ですが、uim-mozcを今回はインストールしてみました。
$ sudo apt-get install uim-fep uim-mozc

$ vi ~/.uim
(define uim-pref-suppress-dot-uim-warning-dialog? #t)
(define default-im-name 'mozc)
(define-key generic-on-key? '("zenkaku-hankaku" "<Control> "))
(define-key generic-off-key? '("zenkaku-hankaku" "<Control> "))
つづいてホームディレクトリの .config ディレクトリを確認し、なければ以下の様にディレクトリを作成しておきます。
mkdir -p ~/.config
後は、
uim-fep
として、uimを起動すればOKです。CUI側ではctrl+スペースで、(mate desktop等のデスクトップ環境をインストールしている場合)GUI側では全角半角キーまたはctrl+スペースでuimの変換開始ができることを確認してください。なおユーザでログインしuim-fepを起動後sudo suした場合は問題ありませんが、rootでログインした場合やsudo suした後のuim-fepでは変換開始できませんでした。
参考までに、fbtermのみでuim-fepを自動起動させる様に、ユーザの~/.profileに以下を追加してみました。
if [ "$TERM" == "linux" ];then
    if [[ ! `tty` =~ /dev/tty ]]; then
        /usr/bin/uim-fep
    fi
fi
詳細はman fbtermで見れますが、fbtermにはfbtermからfbtermを起動する機能があります。また、man pageにあるショートカットの一覧を見るとわかるのですが、fbtermではCTRL+ALT+Fxxはfbtermで別の機能に割り当てられているので、少し注意が必要です。
なお、2021/05/10現在、Debian 10ではrootでログインできませんでしたが、Debian 11 rc1ではrootでログインできました。
すべてのvtコンソールをfbtermにする勇気はまだありませんが、標準でインストールされるだけあってfbtermは非常に多機能だな、という印象です。
今回は以上です。それでは。

コメント

このブログの人気の投稿

wsdd を使ってSamba サーバをネットワークに表示

Windows 10のアップデートで、セキュリティー対応のため、smbv1がデフォルトではインストールされなくなり、Samba serverがエクスプローラーのネットワークに表示されなくなってしまいました。そこで、いくつか方法を調べたのですが、linuxでwsdの実装がないか探したところ、 https://github.com/christgau/wsdd が、見つかりましたので、さっそくインストールしてみました。まだパッケージにはないようですが、インストール自身は簡単です。wsdd自体は以下のように取得し、linkを張っておきます。 cd /usr/local/bin/ sudo wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py sudo chmod 755 wsdd.py sudo ln -sf wsdd.py wsdd こちらのsambaサーバはDebianなので、/etc/systemd/system/wsdd.serviceは以下のようにしました。 [Unit] Description=Web Services Dynamic Discovery host daemon Requires=network-online.target After=network.target network-online.target multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/wsdd -d MYDOMAIN [Install] WantedBy=multi-user.target wsdd -d MYDOMAINのところを、環境にあわせて書き換えてください。 次に、systemdに登録・起動テストを行います。 systemctl enable wsdd systemctl start wsdd 起動に成功すると、エクスプローラーのネットワークに表示されます。  なおこのwsddはpython3が必要です。一度試してみてください。SMBv1/CIFSを停止していても、大丈夫です。 cで書かれたほかのwsddの実装もあるようなので、いずれパッケージになるかも...

Windows デバイス暗号化 のサポートで "許可されていない dma 対応バス/デバイスが検出されました"の対処

Windows でセキュリティー関係を見ているのですが、とあるPCでmsinfo32で確認すると"デバイス暗号化のサポート"で"許可されていない dma 対応バス/デバイスが検出されました"と出ていました。このPCの場合、それ以外はOK(なにも表示されない)だったのですが、ネットでしらべるとMSのドキュメントではハードウェアベンダーに問い合わせるなどと敷居が高く具体的にどこが引っかかっているかわかりません。そこでほかに方法はないかとしらべやってみたところ、"前提条件をみたしています"まで持って行けたので、本稿を挙げた次第です。 具体的には、以下のようにします。 1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。 以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。 HKLM\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses もしくは 1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。 Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。 cd Downloads\PSTools .\PsExec64.exe -sid C:\Windows\regedit.exe 2-a. パワーシェルスクリプトを実行し、PnPデバイスのうちインスタンスがPCIで始まるものを"AllowedBuses"に追加する。 以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。( こちらの記事のものを使用させていただきました: Thank you! ) $tmpfile = "$($env:T...

フレッツ光クロス:MAP-E ROUTER by Debian Box (iptables)

フレッツ光クロスがようやく開通したので、Debianにてrouterを構成し接続してみました。なお、プロバイダーを選ぶにあたっては、IPoE方式がそれぞれ異なるため検討したところ、IPoEでは、MAP-Eでもv6plusとocnバーチャルコネクトがあり、前者がポート数240なのに対し、後者は約4倍のポート数が使えるようなネットの情報をみて、OCNバーチャルコネクトを選択しました。(プロバイダーとしてはぷららです。なおDS-LiteはCE側でのNATではないので今回は見送りました。)そこで、OCN バーチャルコネクトをDebian(iptables)で実現するとどうなるかと思い、ネットの情報を頼りにしつつ、設定した次第です。 実際に試した結果、とりあえず通信できていますが、MAP-Eは本来マッピングルールをマップサーバから取得するはずなので、今回のやり方が正解とはいえませんし、仕様変更されると通信できなくなる可能性があります。あくまでも参考程度ですが、本稿をUPしてみました。 2023/03/16追記: こちら にゲームコンソールNAT越え(Nintendo Switch ナットタイプ A判定)対応版を投稿しました。 2023/03/28追記:※1の記述および3行無効化によりNAT越え(Nintendo Switch ナットタイプ B判定)できるようになりました。 構成は以下の通りです。 ルーターがDebianで回線がOCNバーチャルコネクトであること以外はなにも特別なところはない構成です。 さて、いきなり設定ですが、まず、割り当てられたプレフィックスを確認します。 確認は、 dhclient -6 -d -P enp2s0 とします。出力の中に 前略 RCV: | | X-- IAPREFIX 2400:4050:5c71:af00::/56 後略 このようにプレフィックスが表示されるので、その確認したプレフィックスを書き留めておきます。これを こちらで 入力します。すると、 CE: 2400:4050:5c71:af00:99:f171:c600:2f00 IPv4 アドレス: 153.241.113.198 ポート番号:(1776-1791 2800-2815 3824-3839) 4848-4863 5872-5887 6896-...