メインで使用しているAndroidなスマートフォン、SONY XPERIA 1にてVirtualBoxのようなアプリLimbo PC Emulatorを使用している。
Limbo PC EmulatorのゲストOSとしてDebian GNU/Linux 9.13 Stretchを動かし、持ち歩き可能なSambaサーバとして運用しているが、スマホの画面サイズではコンソールの文字が非常に小さく表示され、見辛く困っていた。dpkg-reconfigure console-setupで設定してもスマホの画面では見辛い。
今回は、コンソールフォントのサイズを変更するサービスを作成し、systemdで作成したサービスを動作させる設定をした際のメモ。
当方の環境
・スマホ(ホスト機):SONY XPERIA 1 / Android OS 10
・ホスト機の通信環境:WLANと4G回線
・エミュレータアプリ:Limbo PC Emulator 2.10.0
・ゲストOS:Debian GNU/Linux 9.13 Stretch
・ソフトウェアキーボードアプリ:Hacker's Keyboard 1.40.7
ゲストOSが現行バージョンのDebian GNU/Linux 12.xではなく古い9.xである理由は、バージョン10.x以降はLimbo PC Emulator 2.10.0で起動しない為。
当作業の実行環境
Limbo PC EmulatorのゲストOSとして動いているDebian GNU/Linuxで当記事の内容の実行は可能だが、VirtualBoxやVMWare ESXi等の中で実行する方が文字の打ちやすさや動作の機敏さ等で非常に楽である。
VirtualBoxやVMWare ESXi等で当記事の内容を実行した後は、仮想マシンのファイルを.qcow2に変換した後にスマホ内の Internal/limbo/machines/ゲストOSのディレクトリ内に保存する。
当記事ではLimbo PC EmulatorにDebian GNU/Linuxをデプロイする手順は割愛する。
コンソールフォントのサイズ変更
1. 自作サービス作成とsystemd登録
ゲストOSにて以下のディレクトリに自作サービス font_set.service のファイルを作成する。
作成するサービスのファイル名は何でも良いが、当環境ではfont_set.serviceにしている。
# vi /etc/systemd/system/font_set.service [Unit] Description=change console font After=syslog.target [Service] ExecStart=/home/ホームディレクトリ/setfont.sh Restart=no type=simple StandardOutput=null [Install] WantedBy=multi-user.target
以下はfont_set.serviceの要件。
・syslog.targetの処理が終了するまで起動しない
・走らせるスクリプトは/home/ホームディレクトリ/setfont.sh
・サービスプロセス停止時の再起動条件は無し
・ログをjournaldに拾わせない
・multi-user.targetがアクティベートされる時にfont_set.serviceもアクティベート
(font_set.serviceのアクティベートが失敗してもmulti-user.targetのアクティベートに影響は無い)
2. setfont.shを作成する
setfont.shスクリプトファイルに、読み込ませるフォントおよびサイズを記載する。
自分の場合ホームディレクトリ内に作成した。
フォントは /usr/share/consolefonts/ ディレクトリ内に有るものを選択する。
今回は Lat15-TerminusBold32x16.psf.gzを使用する事にした。setfontのオプションで記載する際は拡張子は省く。
尚、当ファイルの実行には実行権限および読み取り権限が必要である。
$ vi setfont.sh #!/bin/sh # Set console font for Limbo PC Emulator Environment setfont Lat15-TerminusBold32x16 #EOF $
3. font_set.serviceの起動
上記で作成したfont_set.serviceサービスとsetfont.shの作成後、管理者権限で以下を実行しfont_set.serviceの設定ファイルを読み込ませる。
併せてfont_set.serviceサービスを立ち上げる。
# systemctl daemon-reload # systemctl start font_set.service
4. font_set.serviceの自動起動設定
管理者権限でfont_set.serviceを登録。font_set.serviceの自動起動が有効になっている事を確認する。
# systemctl enable font_set.service # systemctl is-enabled font_set.service enabled
5. font_set.serviceのステータス確認
以下のコマンドを実行しfont_set.serviceが正常に起動した事を確認する。
font_set.serviceはコンソールフォントを変更して終了する為、正常に動作するとMain PID: の行にcode=exited, status=0/SUCCESSが出力される。
$ systemctl status font_set.service * font_set.service - change console font Loaded: loaded (/etc/systemd/system/font_set.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2024-11-09 09:46:33 JST; 46s ago Process: 358 ExecStart=/home/hechtia/setfont.sh (code=exited, status=0/SUCCESS) Main PID: 358 (code=exited, status=0/SUCCESS) Nov 09 09:46:30 jpmtkvmsv99 systemd[1]: Started change console font. #
動作確認
ゲストOSを再起動させ、コンソールフォントのサイズが大きくなる事を確認する。
起動開始時からフォントサイズが大きくなるのではなく、上記でfont_set.serviceファイルを作成した際にUnit欄の中で指定したとおり、syslog.targetが立ち上がった後にfont_set.serviceが動作しフォントサイズが大きくなる。
参照サイトなど
https://www.debian.org/ debian.org
https://www.debian.org/releases/stretch/ Debian "stretch" Release Information
https://sourceforge.net/projects/limbopcemulator/ Limbo PC Emulator
https://www.linux-kvm.org/images/a/a9/Kvm-forum-2013-Windows8-on-Android-with-KVM.pdf Limbo PC Emulatorの仕様に関して言及のある資料
https://www.samba.org/ Samba
https://wiki.debian.org/systemd systemd - system and service manager
https://www.amazon.co.jp/dp/B0CP741RX8 systemdの思想と機能