登録日: 2021-06-21 更新日: 2021-07-04
前回、「Xubuntu 20.04.2 LTS」に、ハードウェアの違いを仮想マシンにより吸収できる「VirtualBox」をインストール しました。
そのVirtualBox にインストールした「Arch Linux」において、仮想コンソールで日本語表示できないため、「fbterm」をビルドしてインストールすることにしました。
その備忘録です。
-
-
使用したPC は「ASUS Chromebox CN60 」で、プロセッサは第4世代の古い「Intel Celeron 2955U 」です。
-
(注)リンクを戻るときはブラウザの左上の「←」をクリック
-
-
目次
-
「日本語の文字化け対策として、「fbterm」をインストール:」
「参考: VirtualBox で仮想マシンをクローンするやり方:」
-
-
-
VirtualBox の「Arch Linux」の画面:
-
インストール完了後の画面:
→味気ないです。画面の上下にあるのは「VirtualBox」のメニューバーと状態パネルです。
デスクトップ環境は自由に選べますし、このまま使うのもアリです。
このまま使うのなら、日本語表示できた方が便利です。
-
ホストOS : Xubuntu 20.04.2 LTS ゲストOS : Arch Linux(2021.05.01 の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 について:
-
Arch Linux Wiki よりの抜粋:
-
1). 特徴:
- Arch Linux は、「シンプルで無駄の無いシステム」を目指しているようです。
→そのためか、インストーラだけでなく、GUI 操作のデスクトップ環境も公式には提供されていません。代わりに「素早くアクセスして編集できるように配置された、能率的な構成ファイル群」になっているとのこと。
- Arch Linux は、「ローリングリリース」と呼ばれるリリース方式を採用。
-
2). インストールについて:
Arch Linux のインストール作業は、コマンドを入力するCUI 操作になります。マウスも使えません。
インストールするときのパッケージグループの選択もですが、それだけでなく、 その後のシステムの設定やデスクトップ環境などのソフトウェアの追加は、個人が必要に応じて、手動で行ないます。
つまり、スキルがあればユーザが望むシステムを構築できます。 逆に、(どうやっていいのか最初はわからないので)敷居は高く、インストールでつまずきやすくなります。
-
3). AUR
一般ユーザ(アプリの開発者)によって作られた「PKGBUILD」スクリプトを収容するためのArch User Repository(AUR)という補完的なリポジトリが提供されています。
AURに置かれて、ユーザから十分な投票を受けると「community」リポジトリに昇格(登録)できます。それだけでなく、ライセンスの関係を避けるためワザと意図的にaur に置かれているアプリもあります(インストールするのはユーザの意思になるので、ライセンス的に難しくてもリポジトリに登録しやすくなります)。
-
4). PKGBUILD スクリプトについて:
Arch Build System (ABS) の機能で使われる「PKGBUILD」スクリプトは、依存パッケージのリスト(依存の解決に必要なパッケージのインストール)と、ソースをArch Linux のアーキテクチャ(x86-64)に適合させる処理(依存するパッケージと、ビルドと、パッケージ化するための情報と、インストールの手順)を開発者または登録者が記述するようにルール化されています。
これによりユーザは、ソースコードからのビルド作業を簡略化でき、さらにソフトウェアを「Pacman」のパッケージとしてインストール(パッケージ管理)できるようになります。
-
5). yay
AUR パッケージの管理を補助する「AUR ヘルパー」と呼ばれるアプリのひとつです。Arch Linux の公式リポジトリに登録はなく、非公式のAUR リポジトリにあるため、最初はAUR リポジトリを扱える管理ツールがないため、ダウンロードしてのインストールになります。
インストール後はこのツールを使うことで、AUR アプリの管理が公式リポジトリ並に楽になります。また、公式リポジトリを管理するpacman とパラメータが同じで、pacman を内部で起動しているため、使うコマンドを yay に一本化することもできます。
ただし、「Manjaro Linux」と違い、「Arch Linux」の場合は pacman をメインにした方が良かったケース(システム更新後にうまく動かないこと)が多いです。「Arch Linux」ではAUR があまり推奨されていないからだろうと思います。(というか、「Arch Linux」を選んでいる人は、アプリのビルド作業を苦にする人が少ないとも言えます)
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
-
「Arch Linux」のインストール
-
-
インストール完了後、仮想コンソールに、ログイン画面が表示
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
-
Arch Linux の仮想コンソールについて
-
「Arch Linux」のインストールが完了しても、デスクトップ環境は立ち上がりません。
表示されるのは、「仮想コンソール」と言われるコマンド画面で、 これが「Arch Linux」のログイン画面となります。
デスクトップ環境をインストールした場合は、並行(マルチ)で切り替えできます。 Ctrl+Alt+F1 〜F7 で「tty1 〜tty7」の画面に対応しています。通常は tty7 にてデスクトップ画面が起動されています。 VirtualBox ではtty1 のようです。
ちなみに、VirtualBox での仮想端末の画面の切り替え方は不明です。ホストOS 側が切り替わってしまうので、不便です。キーの割り当てを変えることができるのかは不明。
-
もしくは、ゲストOS をクローンしておいて、VM VirtualBox マネージャで仮想マシンを切り替える やり方が使えそう。
「Arch Linux」のインストール完了時にスナップショットを取っておいても良かったかも。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
-
仮想コンソールで気づいたこと
-
1). マウスが使えないので不便。スクロールバーがないので表示をさかのぼれません
コンソールをメインで使うのなら、マウスのサポートアプリが必要かも。
-
2). 問題: 「仮想コンソール」が安定していません
→端末で勝手に改行が入力され(VirtualBox マネージャのビュワー画面を見ているとわかりやすいです)、ひどくなるとキーを付け付けなくなります。これが一番の問題。PC 固有の問題かはわかりません。
特にcat (less、more 等)を使うとキーを受け付けなくなるので操作性が落ちます。それらのコマンドを極力使わないでインストールしました。ライブUSB メモリで立ち上げたときも同じ現象が発生。なぜかログ記録を開始すると発生が少なくなる印象。
以前、BSD OS のインストール時に特定のマウス(M100r) が悪さをしていたことがあったので、日本語キーボードとマウスを違うタイプに交換してみましたが変化なし。
VirtualBox のみで起こるのか、他のPC ではどうなのか、日本語環境だけなのか、 英語キーボードで英語環境にするとどうか、などは未確認。
-
3). 問題: 仮想コンソールで日本語が文字化け
→仮想コンソールはマルチバイト(つまり日本語)に未対応みたい。 もしかしたら対応しているけど設定不足?。
-
→メッセージを確認したいときは英語表示にすればよいです:
# LANG=C pacman -Syu :: Synchronizing package databases... core is up to date extra is up to date community is up to date multiliv is up to date :: Starting full system upgrade... there is nothing to do
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
-
日本語の文字化け対策として、「fbterm」をインストール:
-
1). 「fbterm」について
CUI のデフォルトの仮想端末(VT) は、getty による「仮想コンソール」が使われていますが、これはマルチバイトに未対応なのか、日本語フォントがインストールされていても文字化けします。
- 「fbterm」を使うと、文字化けせずに日本語表示できるとの情報。
現在、Ubuntu のリポジトリには登録がありますが、Arch Linux の公式リポジトリには2021年5月時点で登録がありません。
-
2). 「fbterm」はAUR から削除されました
以前AUR にあった「fbterm-git」はメンテが停止してだいぶ経ち、AUR から削除されました。
→インストールできなくなりました。
-
追記:
2021-06-19 確認:
再び、AUR に新規に登録されました。作業が終わってから見つかったので、…。
-
3). 管理者はいませんが、GitHub にアーカイブが残っていました:
バージョンは、当時のv1.7 (v1.7.0 以前) のままです。更新されていません。
-
4). PKGBUILD をWeb アクセス履歴から入手:
- PKGBUILD が無くてもビルドしてインストールできますが、「PKGBUILD」があると依存パッケージの解決が楽ですし、pacman で依存の管理や削除ができます。
-
(1). 履歴から、AUR Home の「fbterm-git」の過去のページ(2015-08-02) を表示:
→いつまで履歴が保持されるかはわかりません。早めにダウンロードしました。
依存関係 (5): fontconfig gpm (make) libx86 (make) gpm (optional) – mouse selection support libx86 (optional) – accelerator with VESA compatible video card ソース: git+https://github.com/izmntuk/fbterm INSTALL
-
(2). 右の「Download tarball」をクリック
-
(3). 展開:
$ cd ~/ダウンロード/ $ tar -zxvf fbterm-git.tar.gz : fbterm-git/ fbterm-git/INSTALL fbterm-git/.SRCINFO fbterm-git/PKGBUILD
-
(4). 確認:
$ cd ~/ダウンロード/fbterm-git/ $ ls -a . .. .SRCINFO INSTALL PKGBUILD
→「INSTALL」と「PKGBUILD」がありました。
-
PKGBUILD の内容:
$ cat PKGBUILD ## Maintainer: N. Izumi aka izmntuk pkgname=fbterm-git pkgver=20150509 pkgrel=1 pkgdesc='A fast framebuffer-based terminal emulator for Linux' arch=(x86_64 i686) url='https://github.com/izmntuk/fbterm' license=('GPL2') depends=('fontconfig') makedepends=('gpm' 'libx86') conflicts=('fbterm') provides=('fbterm') optdepends=('libx86: accelerator with VESA compatible video card' 'gpm: mouse selection support') install=INSTALL source=('git+https://github.com/izmntuk/fbterm' 'INSTALL') sha1sums=(SKIP SKIP) pkgver() { cd "${srcdir}/fbterm" git log -1 --format="%cd" --date=short | sed 's|-||g' } build() { cd "${srcdir}/fbterm" ./configure --prefix=/usr make } package() { cd "${srcdir}/fbterm" install -Dm644 terminfo/fbterm "${pkgdir}/usr/share/terminfo/f/fbterm" make DESTDIR="${pkgdir}" TERMINFO="${pkgdir}/usr/share/terminfo" install }
-
INSTALL の内容:
$ cat INSTALL post_install() { cat <<EOF ==> To run fbterm as a non-root user, do: sudo gpasswd -a YOUR_USERNAME video ==> To enable keyboard shortcuts for non-root users, do: sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm EOF } post_upgrade() { post_install $1 }
→インストール後に必要な設定みたい。
-
.SRCINFO の内容:
$ cat .SRCINFO # Generated by makepkg 4.2.1 # Sat May 9 09:49:29 UTC 2015 pkgbase = fbterm-git pkgdesc = A fast framebuffer-based terminal emulator for Linux pkgver = 20150509 pkgrel = 1 url = https://github.com/izmntuk/fbterm install = INSTALL arch = x86_64 arch = i686 license = GPL2 makedepends = gpm makedepends = libx86 depends = fontconfig optdepends = libx86: accelerator with VESA compatible video card optdepends = gpm: mouse selection support provides = fbterm conflicts = fbterm source = git+https://github.com/izmntuk/fbterm source = INSTALL sha1sums = SKIP sha1sums = SKIP pkgname = fbterm-git
→パッケージ化したときの情報
-
5). 「fbterm-git」のパッケージの作成の準備:
$ cd ~/ダウンロード/fbterm-git/ $ ls -a . .. .SRCINFO INSTALL PKGBUILD
→PKGBUILD をそのまま使えば、ソース(v1.7) をリモートからダウンロードしてきます。
-
6). 「fbterm-git」のパッケージを作成:
$ cd ~/ダウンロード/fbterm-git/ $ makepkg -s ==> パッケージを作成: fbterm-git 20150509-1 (2021年06月18日 13時38分29秒) ==> 欠けている依存パッケージをインストール... [sudo] パスワード: パッケージ (1) libx86-1.1-8 : configure: error: cannot find required auxiliary files: config.guess config.sub make: *** [Makefile:232: config.status] エラー 1 ==> エラー: build() で問題が発生しました。
-
7). 残念ながらビルドでエラー
「configure: error: cannot find required auxiliary files: config.guess config.sub」をネットで検索:
-
8). ビルドツールの「autoconf」を2.69 にダウングレードする必要がありました
→「downgrade」を使うと、ダウングレードできるみたい。
-
autoconf のバージョンを確認:
$ yay -Ss autoconf : core/autoconf 2.71-1 (645.2 KiB 2.2 MiB) [base-devel] (インストール済み) A GNU tool for automatically configuring source code
→バージョンは 2.71-1
-
バージョンを落とすための「downgrade」ツールの確認:
$ yay -Ss downgrade : aur/downgrade 10.0.0-1 (+592 9.57) Bash script for downgrading one or more packages to a version in your cache or the A.L.A.
詳細表示:
$ yay -Si downgrade :: AUR を検索... リポジトリ : aur 名前 : downgrade キーワード : なし バージョン : 10.0.0-1 説明 : Bash script for downgrading one or more packages to a version in your cache or the A.L.A. URL : https://github.com/pbrisbin/downgrade AUR URL : https://aur.archlinux.org/packages/downgrade グループ : なし ライセンス : GPL 提供 : なし 依存するパッケージ : pacman-contrib ビルド時の依存パッケージ : なし チェック時の依存パッケージ : なし 任意の依存パッケージ : sudo 衝突するパッケージ : なし メンテナ : brisbin33 投票 : 592 人気度 : 9.566313 最初の投稿 : Thu 12 Nov 2009 10:48:57 AM JST 最終更新 : Thu 20 May 2021 06:06:39 PM JST 古いバージョン : No
-
「downgrade」のインストール:
$ yay -S downgrade : パッケージ (1) pacman-contrib-1.4.0-3 パッケージ (1) downgrade-10.0.0-1
-
「autoconf」のダウングレード
ALAサーバーに置かれたアプリのバージョンの中から、使いたいバージョンを指定できます。
ALAサーバーの場所のデフォルトは「https://archive.archlinux.org」
autoconf で指定できるバージョン: Index of /packages/a/autoconf/
-
現在のautoconf のバージョン:
$ autoconf --version autoconf (GNU Autoconf) 2.71
-
「autoconf」をインストールした状態で実行します:
$ sudo downgrade 'autoconf=2.69-6' : 警告: パッケージ autoconf のダウングレード (2.71-1 => 2.69-6) 依存関係を解決しています... 衝突するパッケージがないか確認しています... パッケージ (1) autoconf-2.69-6 : add autoconf to IgnorePkg? [y/N]
$ autoconf --version autoconf (GNU Autoconf) 2.69
→コマンドラインオプションは、/etc/xdg/downgrade/downgrade.conf で永続的に設定できます:
$ cat /etc/xdg/downgrade/downgrade.conf # /etc/xdg/downgrade/downgrade.conf # # Configuration file for downgrade # See downgrade(8) for more information on arguments # Defaults are shown, uncomment and define values as desired # --pacman pacman # --pacman-conf /etc/pacman.conf # --pacman-cache /var/cache/pacman/pkg # --pacman-log /var/log/pacman.log # --maxdepth 1 # --ala-url 'https://archive.archlinux.org' # --ala-only # --cached-only
-
9). 「fbterm-git」のパッケージを作成:
$ cd ~/ダウンロード/fbterm-git/ $ makepkg -s : vterm_states.cpp:43:1: エラー: narrowing conversion of ‘-1’ from ‘int’ to ‘u16’ {aka ‘short unsigned int’} [-Wnarrowing] :
→ビルドでエラー
-
「vterm_states.cpp:43:1: エラー: narrowing conversion of ‘-1’ from ‘int’ to ‘u16’ {aka ‘short unsigned int’} [-Wnarrowing]」をネットで検索
→下記がヒット:
Debian Bug report logs - #811719 fbterm: FTBFS with GCC 6: narrowing conversion
→ソースに不具合があり、GCC6 でビルドできません。
fbterm バージョン 1.7-2 で見つかりました(2016年1月20日 01:45) fbterm バージョン 1.7-4 で修正済み
-
10). GitHub にあるソースは「v1.7」で不具合修正前につき、このままでは使えません
(2015年5月9日 までのマスターへのコミット)
-
11). Ubuntu ではメンテされているので、確認:
fbterm 1.7-4 source package in Ubuntu
-
ダウンロード:
-
チェックサム確認:
$ cd ~/ダウンロード/ $ sha256sum fbterm_1.7-4.debian.tar.xz bdddf1524f40eab77e94617a747e8d0da8ae7f06686d4ece0552146a21d3e254 fbterm_1.7-4.debian.tar.xz
-
展開:
$ cd ~/ダウンロード/ $ tar xfJv fbterm_1.7-4.debian.tar.xz $ ls debian fbterm_1.7-4.debian.tar.xz $ ls debian README.Debian changelog control dirs patches source README.source compat copyright docs rules watch
→展開すると「debian」フォルダが出来ました。中のソースは差分しかないみたい。
-
12). GCC6 の不具合の修正差分がありました:
$ ls ~/ダウンロード/debian/patches/0001-Fix-build-with-gcc-6.patch
-
内容を確認:
$ cat ~/ダウンロード/debian/patches/0001-Fix-build-with-gcc-6.patch From 69917d25c6f718572433262d86691bf24e72e4c8 Mon Sep 17 00:00:00 2001 From: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> Date: Wed, 13 Jul 2016 12:02:10 +0900 Subject: [PATCH] Fix build with gcc-6 Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> --- src/lib/vterm.cpp | 4 ++-- src/lib/vterm_states.cpp | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/vterm.cpp b/src/lib/vterm.cpp index 3a5dcc7..f79f44c 100644 --- a/src/lib/vterm.cpp +++ b/src/lib/vterm.cpp @@ -68,13 +68,13 @@ u8 VTerm::control_map[MAX_CONTROL_CODE], VTerm::escape_map[NR_STATES][MAX_ESCAPE void VTerm::init_state() { - for (u8 i = 1; control_sequences[i].code != (u16)-1; i++) { + for (u8 i = 1; control_sequences[i].code != (u16)0xFFFF; i++) { control_map[control_sequences[i].code] = i; } u8 state = ESnormal; for (u8 i = 1; ; i++) { - if (escape_sequences[i].code == (u16)-1) { + if (escape_sequences[i].code == (u16)0xFFFF) { state++; if (state == NR_STATES) break; } else { diff --git a/src/lib/vterm_states.cpp b/src/lib/vterm_states.cpp index 49e7588..6aaa8b3 100644 --- a/src/lib/vterm_states.cpp +++ b/src/lib/vterm_states.cpp @@ -39,14 +39,14 @@ const VTerm::Sequence VTerm::control_sequences[] = { { 0x1B, 0, ESesc }, { 0x7F, 0, ESkeep }, { 0x9B, 0, ESsquare }, - { -1} + { 0xFFFF} }; const VTerm::Sequence VTerm::escape_sequences[] = { { 0, 0, ESnormal }, // ESnormal - { -1 }, + { 0xFFFF }, // ESesc { '[', &VTerm::clear_param, ESsquare }, @@ -65,7 +65,7 @@ const VTerm::Sequence VTerm::escape_sequences[] = { { '8', &VTerm::restore_cursor, ESnormal }, { '>', &VTerm::keypad_numeric, ESnormal }, { '=', &VTerm::keypad_application, ESnormal }, - { -1 }, + { 0xFFFF }, // ESsquare { '[', 0, ESfunckey }, @@ -104,7 +104,7 @@ const VTerm::Sequence VTerm::escape_sequences[] = { { '`', &VTerm::cursor_position_col, ESnormal }, { ']', &VTerm::linux_specific, ESnormal }, { '}', &VTerm::fbterm_specific, ESnormal }, - { -1 }, + { 0xFFFF }, // ESnonstd { '0' | ADDSAME(9), &VTerm::set_palette, ESkeep }, @@ -112,25 +112,25 @@ const VTerm::Sequence VTerm::escape_sequences[] = { { 'a' | ADDSAME(5), &VTerm::set_palette, ESkeep }, { 'P', &VTerm::begin_set_palette, ESkeep }, { 'R', &VTerm::reset_palette, ESnormal }, - { -1 }, + { 0xFFFF }, // ESpercent { '@', &VTerm::clear_utf8, ESnormal }, { 'G', &VTerm::set_utf8, ESnormal }, { '8', &VTerm::set_utf8, ESnormal }, - { -1 }, + { 0xFFFF }, // EScharset { '0', &VTerm::set_charset, ESnormal }, { 'B', &VTerm::set_charset, ESnormal }, { 'U', &VTerm::set_charset, ESnormal }, { 'K', &VTerm::set_charset, ESnormal }, - { -1 }, + { 0xFFFF }, // EShash { '8', &VTerm::screen_align, ESnormal }, - { -1 }, + { 0xFFFF }, // ESfunckey - { -1 }, + { 0xFFFF }, }; -- 2.8.1
→「diff -u」(diff --git) で作成された差分ファイルです。
2016年7月13日 作成の「src/lib/vterm.cpp」と「src/lib/vterm_states.cpp 」のgcc-6 の不具合の修正(fbterm 1.7-4)差分になります。
-
差分ファイルの位置を確認:
$ ls ~/ダウンロード/debian/patches/0001-Fix-build-with-gcc-6.patch
-
対象ファイルの位置を確認:
$ cd ~/ダウンロード/fbterm-git/src/fbterm/ $ ls -1 src/lib/vterm* src/lib/vterm.cpp src/lib/vterm.h src/lib/vterm_action.cpp src/lib/vterm_states.cpp
patch コマンドの確認:
$ patch --version GNU patch 2.7.6
-
作業前の確認:
$ cd ~/ダウンロード/fbterm-git/src/fbterm/ $ ls -l src/lib/vterm* -rw-r--r-- 1 ubn users 20357 6月 18 13:38 src/lib/vterm.cpp -rw-r--r-- 1 ubn users 6992 6月 18 13:38 src/lib/vterm.h -rw-r--r-- 1 ubn users 12058 6月 18 13:38 src/lib/vterm_action.cpp -rw-r--r-- 1 ubn users 4387 6月 18 13:38 src/lib/vterm_states.cpp
-
13). 差分の適用:
$ cd ~/ダウンロード/fbterm-git/src/fbterm/ $ patch -p 1 < ~/ダウンロード/debian/patches/0001-Fix-build-with-gcc-6.patch patching file src/lib/vterm.cpp patching file src/lib/vterm_states.cpp
→差分のパス指定をひとつズラして実行(-p 1)
-
作業後の確認:
$ cd ~/ダウンロード/fbterm-git/src/fbterm/ $ ls -l src/lib/vterm* -rw-r--r-- 1 ubn users 20365 6月 18 17:10 src/lib/vterm.cpp ←(変更) -rw-r--r-- 1 ubn users 6992 6月 18 13:38 src/lib/vterm.h -rw-r--r-- 1 ubn users 12058 6月 18 13:38 src/lib/vterm_action.cpp -rw-r--r-- 1 ubn users 4423 6月 18 17:10 src/lib/vterm_states.cpp ←(変更)
修正の確認:
$ xed ~/ダウンロード/fbterm-git/src/fbterm/src/lib/vterm.cpp $ xed ~/ダウンロード/fbterm-git/src/fbterm/src/lib/vterm_states.cpp
-
14). 「.git」が邪魔しないように削除:
$ sudo rm -r ~/ダウンロード/fbterm-git/src/fbterm/.git
-
15). PKGBUILD の退避:
$ cd ~/ダウンロード/fbterm-git/ $ ls INSTALL PKGBUILD fbterm pkg src $ cp PKGBUILD PKGBUILD-old
-
16). PKGBUILD の修正:
$ cd ~/ダウンロード/fbterm-git/ $ xed PKGBUILD
-
(1). ローカルのソースを使うように置換え:
source=('git+https://github.com/izmntuk/fbterm' 'INSTALL') sha1sums=(SKIP SKIP)
↓
source=('local://fbterm-git-new.tar.gz' 'INSTALL') sha256sums=(SKIP SKIP)
これをやらないとリモートで上書きされて、不具合の修正が元に戻ってしまいます。
-
(2). git を使わないように置換え:
pkgver() { cd "${srcdir}/" git log -1 --format="%cd" --date=short | sed 's|-||g' }
↓
pkgver() { cd "${srcdir}/" date +%Y%m%d }
→リモートは当てにできないので、git を使わないように修正
-
(3). 下記の行を削除:
install -Dm644 terminfo/fbterm "${pkgdir}/usr/share/terminfo/f/fbterm"
→「fbterm-git」のインストール時に下記のエラーでインストールできなかったので、その対策:
エラー: 処理を完了できませんでした (衝突しているファイル) fbterm-git: /usr/share/terminfo/f/fbterm がファイルシステムに存在しています (ncurses によって所有されています)
→「fbterm」と「ncurses」のパッケージが扱っているファイルが同じで衝突します。この行を削除すると「fbterm」のインストール時に余計なものがインストールされなくなります。
$ yay -Ss ncurses : core/ncurses 6.2-2 (1.1 MiB 3.5 MiB) (インストール済み) System V Release 4.0 curses emulation library
-
17). 修正したソースのフォルダを「tar.gz」に圧縮:
- インストールパッケージを作成するときに使われるソースイメージをローカルに作成:
「fbterm-git-new.tar.gz」を新規に作成:
$ cd ~/ダウンロード/fbterm-git/src/ $ ls INSTALL fbterm $ tar -zcvf fbterm-git-new.tar.gz fbterm : fbterm/ fbterm/configure.ac : fbterm/INSTALL
-
18). 修正したソースを配置:
$ cd ~/ダウンロード/fbterm-git/src/ $ ls INSTALL fbterm fbterm-git-new.tar.gz $ cp fbterm-git-new.tar.gz ~/ダウンロード/fbterm-git/ $ cd ~/ダウンロード/fbterm-git/ $ ls INSTALL PKGBUILD PKGBUILD-old fbterm fbterm-git-new.tar.gz pkg src $ sudo rm -r fbterm $ sudo rm -r pkg $ sudo rm -r src $ ls ~/ダウンロード/fbterm-git/ INSTALL PKGBUILD PKGBUILD-old fbterm-git-new.tar.gz
-
19). 「fbterm-git」のパッケージの作成:
$ cd ~/ダウンロード/fbterm-git/ $ makepkg -s : ==> 作成完了: fbterm-git 20210618-1 (2021年06月18日 20時32分24秒)
-
確認:
$ ls -1 ~/ダウンロード/fbterm-git/ INSTALL PKGBUILD PKGBUILD-old fbterm-git-20210618-1-x86_64.pkg.tar.zst ←(作成されました) fbterm-git-new.tar.gz pkg src
→「fbterm-git-new.tar.gz」をソースにして、ビルド、パッケージ化したのが「fbterm-git-20210618-1-x86_64.pkg.tar.zst」です。
→拡張子が「.pkg.tar.zst」になっていることに注目(新しい圧縮方式)。
-
20). 「fbterm-git」のインストール:
$ cd ~/ダウンロード/fbterm-git/ $ sudo pacman -U fbterm-git-20210618-1-x86_64.pkg.tar.zst : パッケージ (1) fbterm-git-20210618-1 : ==> To run fbterm as a non-root user, do: ←インストール完了時にコメント表示 sudo gpasswd -a YOUR_USERNAME video ==> To enable keyboard shortcuts for non-root users, do: sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm fbterm-git の提案パッケージ libx86: accelerator with VESA compatible video card [インストール済み] gpm: mouse selection support [インストール済み]
→余計な処理が実行されないので、「$ makepkg -i」よりも速くインストールできます。
→コメントは「INSTALL」に記述されていた内容:
$ cd ~/ダウンロード/fbterm-git/ $ cat INSTALL post_install() { cat <<EOF ==> To run fbterm as a non-root user, do: sudo gpasswd -a YOUR_USERNAME video ==> To enable keyboard shortcuts for non-root users, do: sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm EOF } post_upgrade() { post_install $1 }
-
21). インストールの確認:
$ fbterm --version FbTerm version 1.7
→ちなみに、PKGBUILD の 3行目が「pkgver=20210618」に更新されました。 パッケージ化が成功すると、自動的にpkgver() の設定が反映されるようです。
-
22). アプリがインストールされているかの確認:
$ yay -Ss fbterm : aur/fbterm 1.7_5-1 (+0 0.00) Framebuffer terminal emulator aur/fcitx-fbterm-git 20110825-1 (+2 0.00) add fbterm support to fcitx
→ダウンロードしてのインストールだと、表示されません。
ちなみに、登録のなかった「fbterm」の最新版?(1.7_5-1) がいつの間にか登録されました。今までの苦労は何だったのかな。勉強になったから良いけど…。
-
ダウンロードしてインストールしたアプリの確認:
$ pacman -Qm archlinux-appstream-data-pamac 20210612-1 downgrade 10.0.0-1 ←(注目) fbterm-git 20210618-1 ←(注目) i3-scrot 1.0-2 libglade 2.6.4-7 libpamac-aur 11.0.0-1 obmenu-generator 0.89-1 pamac-aur 10.1.3-1 ←(注目) perl-linux-desktopfiles 0.25-2 yay 10.2.3-1
→デスクトップ環境があるなら「ソフトウェアの追加と削除」(pamac-aur) を起動して、「インストール済」→「外部」タブでも確認できます。
ちなみに、PKGBUILD を使わずに手動でソースをビルドしてインストールすると、実行はできても認識はされないはずです。
-
個別の表示:
$ pacman -Qm fbterm-git fbterm-git 20210618-1 $ pacman -Qi fbterm-git 名前 : fbterm-git バージョン : 20210618-1 説明 : A fast framebuffer-based terminal emulator for Linux アーキテクチャ : x86_64 URL : https://github.com/izmntuk/fbterm ライセンス : GPL2 グループ : なし 提供 : fbterm 依存パッケージ : fontconfig 提案パッケージ : libx86: accelerator with VESA compatible video card [インストール済み] gpm: mouse selection support [インストール済み] 必要パッケージ : なし 任意パッケージ : なし 衝突パッケージ : fbterm 置換パッケージ : なし インストール容量 : 127.60 KiB パッケージ作成者 : Unknown Packager ビルド日時 : 2021年06月18日 20時31分52秒 インストール日時 : 2021年06月18日 20時47分00秒 インストール方法 : 明示的にインストール インストールスクリプト : Yes 検証方法 : なし
→「明示的にインストール」になっています。
-
23). 使うには、ユーザがグループ video に属している必要があります:
→インストール完了時のコメント表示より。
-
(1). ユーザをグループ(video) に追加:
$ sudo gpasswd -a ユーザ名 video : [sudo] パスワード: ユーザ xxx をグループ video に追加
-
(2). 下記も使えますが、操作を間違えやすいので危険:
$ sudo usermod -aG video ユーザ名
→「a」を抜かして「-G」とすると、既に設定されていた他のグループの設定が上書きされて全部消え、大事(おおごと)になります。sudo が使えなくなるので復旧が面倒。
-
(3). 参考:
ubuntu14.04でusermodしてsudoできなくなったとき
ちなみに、Shift キーを押して起動してもGRUB2 のメニューが出ないときは、右のShift キーを押して起動。
-
(4). 参考:
$ id uid=1000(ubn) gid=984(users) groups=984(users),987(storage),998(wheel) $ groups ubn wheel storage video users
-
(5). fbterm の実行ファイルに setuid モードを付けます:
SUID(Set User ID)が設定されたファイルでは、その実行ファイルの所有者のアカウント権限で実行されます。 通常は、実行ファイルを実行すると、そのファイルを実行したユーザーの権限で実行されます。
$ sudo chmod u+s `which fbterm`
-
24). 実行:
$ fbterm : stdin isn't a interactive tty!
→仮想コンソールで起動する必要があります。
実機だったら、Ctrl+Alt+F2 とすれば仮想コンソールに画面が切り替わります。
-
そのつもりでいたら、VirtualBox でCtrl+Alt+F2 としたら、ホストOS 側の仮想コンソールが起動しました。予想外だったけど、とうぜんのこと。
というわけで、確認するにはデスクトップ環境が立ち上がらないように設定変更が必要です。 日本語化しても使わないかもしれないし、面倒です。
デスクトップ環境に切り替える前に、先にやっておけば良かったけど、CUI だと作業効率は落ちます…。
-
25). ゲストOS をクローンして、VM VirtualBox マネージャで仮想マシンを切り替えるやり方で動作確認:
失敗しても仮想マシンを削除するだけなので、気が楽です。ストレージ容量を倍使ってしまうのが難点。動作確認が終わったら削除の予定。
項番(6) の「Slim」の隠し機能を使うことで、この作業は要りませんでした。(項番(6) 以降を参照)
-
(1). 電源オフの状態で仮想マシンを右クリック→「クローン…」
-
「新しいマシンの名前とパス」にて、
名前: 任意の名前
追加オプション:
「ディスク名を保持」のチェックなし ←(デフォルト) 「ハードウェアUUID を保持」にチェック ←これを忘れると、項番(3) の画面が表示されます。
→「次へ」
-
→「すべてをクローン」にチェック→「クローン」:
-
(2). 新しく出来た仮想マシンを起動:
-
(3). 起動途中で、「UEFI Interactive shell」画面表示:
Esc キー →「exit」Enter
ブート選択メニューにて、Boot Manege を選択
一番下の「UEFI VBOX HARDDISK」を選んで、Enter
-
- 立ち上げのたびに聞いてきます。
-
(4). いつものブート選択メニューが表示されました
その後、立ち上がりました。
-
(5). デスクトップ環境が立ち上がらないようにする、下記の設定は要りませんでした:
- 「~/.xinitrc」でのセッションのコメント化:
$ xed .xinitrc
↓ ファイルの最後の行をコメント化:
#exec openbox-session
→これだけ行い、再起動すると、時間が来るとデスクトップのログイン画面が表示され、ログインしてもログイン画面に戻るを繰り返します。ログインできません。
-
- ディスプレイマネージャ「Slim」の停止:
$ systemctl disable slim.service
-
下記の操作を使うなら、上記の 2つの操作は不要です。
-
(6). 「Slim」の隠し機能?を使いました:
参考:
-
- ユーザー名にコマンドが入力できます:
reboot : 再起動 halt : シャットダウン exit : slim を終了して bash に戻る console : xterm を起動(/etc/slim.conf で端末を変更可能)
-
(7). ちなみに、console の設定:
$ sudo nano /etc/slim.conf
Ctrl+W →検索: console
console_cmd /usr/bin/xterm -C -fg white -bg black +sb -T "Console login" -e /bin/sh -c "/bin/cat /etc/issue; exec /bin/login" ↓ 修正 console_cmd /usr/bin/fbterm -C -fg white -bg black +sb -T "Console login" -e /bin/sh -c "/bin/cat /etc/issue; exec /bin/login"
Ctrl+O 保存
Ctrl+X 終了
-
(8). 「デスクトップのログイン画面が表示されたら、ユーザー名に「exit」Enter
→仮想コンソール画面に戻りました。
-
試しに、ここで cat を使ってみると、
「仮想コンソール」で勝手に改行が入力される現象を確認できました。
$ cat typescript
→内容を確認したいけど、勝手に行が送られるので確認できません。 そして、改行の入力が止まらないと、キーを受け付けなくなります。
-
(9). 「fbterm」を起動して確認
$ fbterm -s 14
→デフォルトの12 だと、文字が小さいのでフォントサイズを指定しています。無くてもOK
-
- 日本語表示可能です。ただし、日本語はきれいなフォントではありません。
一番ありがたいことは、余計な改行が入力されないので、安心して cat が使えることです。
そして、Ctrl+PageUP、Ctrl+PageDown で画面のスクロールが可能です。
公式リポジトリにあるフレームバッファを使った端末があれば、インストールも安心してできそうです。残念ながら「fbterm」はAUR なので、インストールに手間がかかりすぎます。
-
26). ビルドが完了し動作確認できたら「autoconf」のバージョンを戻します:
ダウングレードに使っている「downgrade」をアンインストール、設定ファイルも削除、システム更新すれば良さそうですが、しばらくは保留。バージョンを最新にすることだけを行いました。
-
事前確認:
$ yay -Ss autoconf : core/autoconf 2.71-1 (645.2 KiB 2.2 MiB) [base-devel] (インストール済み: 2.69-6) A GNU tool for automatically configuring source code
Index of /packages/a/autoconf/
-
現在のautoconfのバージョン:
$ autoconf --version autoconf (GNU Autoconf) 2.69
-
バージョンを最新にアップ?しました。(2.69-6 →2.71-1)
「autoconf」をインストールした状態で実行:
$ sudo downgrade 'autoconf=2.71-1' : Available packages (core): - 1) autoconf 2.71 1 remote - 2) autoconf 2.71 1 /var/cache/pacman/pkg select a package by number: 1 パッケージ (1) autoconf-2.71-1 add autoconf to IgnorePkg? [y/N] ←(Enter)
-
確認:
$ autoconf --version autoconf (GNU Autoconf) 2.71
-
-
参考: 手動で「fbterm」をビルドする場合:
ソースをダウンロードして展開:
3つの依存「fontconfig、gpm、libx86」をインストール:
$ yay -Ss fontconfig : extra/fontconfig 2:2.13.93-4 (321.9 KiB 760.6 KiB) (インストール済み) Library for configuring and customizing font access $ yay -Ss gpm : core/gpm 1.20.7.r38.ge82d1a6-3 (140.5 KiB 422.9 KiB) (インストール済み) A mouse server for the console and xterm $ yay -Ss libx86 : community/libx86 1.1-8 (42.1 KiB 137.5 KiB) Provides an lrmi interface that works on x86, am64 and alpha
→「libx86」だけインストールすれば依存は解決しそう。
次に、ビルド「./configure --prefix=/usr、make、sudo make install」を実施で良さそう。
-
- PKGBUILD があれば、不足している依存パッケージのインストール→ダウンロード→ビルド→パッケージ化→インストールと勝手にやってくれます。一度、パッケージ化するのは、pacman で管理できるようにするための工夫。
-
参考: 「fbterm」に色を付ける設定:
「fbterm」は 256 色の色表示ができますが、デフォルトの .bashrc と .profile の設定だと色が付きません。
-
追記: AUR に「fbterm」が新規に登録されました:
2021-06-19 確認:
$ yay -Ss fbterm aur/fbterm 1.7_5-1 (+0 0.00) Framebuffer terminal emulator aur/fcitx-fbterm-git 20110825-1 (+2 0.00) add fbterm support to fcitx
→バージョンもUbuntu に近いみたい。
$ yay -Si fbterm :: AUR を検索... リポジトリ : aur 名前 : fbterm キーワード : emulator fbterm framebuffer terminal tty バージョン : 1.7_5-1 説明 : Framebuffer terminal emulator URL : https://salsa.debian.org/debian/fbterm AUR URL : https://aur.archlinux.org/packages/fbterm グループ : なし ライセンス : GPL2 提供 : fbterm 依存するパッケージ : freetype2 fontconfig ビルド時の依存パッケージ : なし チェック時の依存パッケージ : なし 任意の依存パッケージ : なし 衝突するパッケージ : fbterm メンテナ : ivanp7 投票 : 0 人気度 : 0.000000 最初の投稿 : Wed 19 May 2021 09:15:19 PM JST 最終更新 : Thu 20 May 2021 06:31:54 AM JST 古いバージョン : No
→2021年5月19日の登録。依存パッケージが少なめ。
ちょうど自分のトライと重なったみたい。自分のはビルドで問題になるパッチしか当てていないので、パッチの歯抜けがなくなります。感謝。
-
「fbterm」のインストール:
-
(1). 「fbterm-git」と、そのビルドに使ったパッケージの削除:
-
「fbterm-git」をアンインストール:
$ pacman -Qm fbterm-git fbterm-git 20210618-1 $ sudo pacman -R fbterm-git : パッケージ (1) fbterm-git-20210618-1 $ pacman -Qm fbterm-git エラー: パッケージ 'fbterm-git' は見つかりませんでした
-
「downgrade」をアンインストール:
$ pacman -Qm downgrade downgrade 10.0.0-1 $ sudo pacman -R downgrade : パッケージ (1) downgrade-10.0.0-1 $ pacman -Qm downgrade エラー: パッケージ 'downgrade' は見つかりませんでした
-
設定ファイルの確認:
$ ls /etc/xdg/downgrade/ ls: '/etc/xdg/downgrade/' にアクセスできません: そのようなファイルやディレクトリはありません
-
「autoconf」の再インストール:
$ sudo pacman -R autoconf : パッケージ (1) autoconf-2.71-1 $ sudo pacman -S autoconf : パッケージ (1) autoconf-2.71-1 $ pacman -Ss autoconf core/autoconf 2.71-1 (base-devel) [インストール済み] A GNU tool for automatically configuring source code
-
削除されたことを確認:
$ pacman -Qm
-
(2). 「fbterm」のインストール:
$ pacman -Ss fbterm $ yay -Ss fbterm : aur/fbterm 1.7_5-1 (+0 0.00) Framebuffer terminal emulator
-
インストール:
$ yay -S fbterm : make[1]: ディレクトリ '/home/ubn/.cache/yay/fbterm/src/fbterm-1.7' から出ます : ==> 作成完了: fbterm 1.7_5-1 (2021年06月22日 17時48分04秒) ==> 清掃... [sudo] パスワード: パッケージ (1) fbterm-1.7_5-1
-
確認:
$ yay -Ss fbterm aur/fbterm 1.7_5-1 (+0 0.00) (インストール済み) Framebuffer terminal emulator
-
(3). 「fbterm」の動作確認
-
ログアウト
ログイン画面のユーザ名に、「exit」Enter
-
ユーザにログイン:
$ fbterm -s 14 $ date $ cat typescript $ exit
-
root にログイン:
# fbterm -s 14 # date # cat /home/ubn/typescript # exit
→日本語入力ができますし、余計な改行も発生しません。ちなみに、typescript はログ記録したときのファイルです。確認に使うのはテキストファイルなら何でもよいです。
当たり前だけど、ビルドした「fbterm-git」と同じです。ビルドとか、ツールのダウングレードとかやらなくてもよいので楽です。日本語フォントがきれいでないのまで同じです。
-
「fbterm」から抜けると、そのとたんに、余計に改行する現象が出ました:
→めったに使うことは無いだろうけれど、仮想コンソールのそのままでの使用は(キー入力を受け付けなくなる、フリーズ?、の可能性があるので)不安が残ります。
-
-
--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
-
仮想コンソールで気づいたことの回避策のまとめ
-
1). スクロールバーがないので表示をさかのぼれません
→仮想コンソールで「fbterm」を起動して使うと、Shift+PageUp、Shift+PageDown で画面のスクロールが可能になりました。
-
2). 問題: 「仮想コンソール」が安定していません
→端末で勝手に改行が入力されます。
特にcat (less、more 等)を使うと画面が送られてメッセージが確認できず、ファイル操作の確認にcat が使えず操作性が落ちます。また、ひどくなるとキーを付け付けず、フリーズしたのと同じです。
→仮想コンソールで「fbterm」を起動して使うと、発生しなくなりました。
-
ライブUSB メモリで立ち上げたときも発生します。
→「fbterm」を起動して使うと回避できそうですが、ライブ立ち上げてインストールするのは難しそう。 公式リポジトリの仮想端末の代替えアプリがあれば行けそうです。
-
3). 問題: 仮想コンソールで日本語が文字化け
仮想コンソールは日本語に未対応みたい。
→「fbterm」を起動して使うと日本語が表示できました。ただし日本語のフォントはきれいではありません。
-
-
まとめ
「Arch Linux」のコンソール(端末)は安定していません。なぜか、cat やless 、more などのコマンドを使うとすぐにハングします(改行が入りっぱなしでキーを受け付けなくなります)。確認作業にcat は極力使わないようにして、さっさと設定を終わらせるのがコツみたい。
「fbterm」で回避できましたが、 どちらにしても、デスクトップ環境をインストールすれば不要な作業です。
-
-
-
-
-
目次
-
-
- 目次
- VirtualBox の「Arch Linux」の画面:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -
- 現時点のバージョンを表示:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --
- Arch Linux について:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---
- 「Arch Linux」のインストール
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----
- Arch Linux の仮想コンソールについて
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----
- 仮想コンソールで気づいたこと
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -
- 日本語の文字化け対策として、「fbterm」をインストール:
- 1). 「fbterm」について
- 2). 「fbterm」はAUR から削除されました
- 3). 管理者はいませんが、GitHub にアーカイブが残っていました:
- 4). PKGBUILD をWeb アクセス履歴から入手:
- 5). 「fbterm-git」のパッケージの作成の準備:
- 6). 「fbterm-git」のパッケージを作成:
- 7). 残念ながらビルドでエラー
- 8). ビルドツールの「autoconf」を2.69 にダウングレードする必要がありました
- 9). 「fbterm-git」のパッケージを作成:
- 10). GitHub にあるソースは「v1.7」で不具合修正前につき、このままでは使えません
- 11). Ubuntu ではメンテされているので、確認:
- 12). GCC6 の不具合の修正差分がありました:
- 13). 差分の適用:
- 14). 「.git」が邪魔しないように削除:
- 15). PKGBUILD の退避:
- 16). PKGBUILD の修正:
- 17). 修正したソースのフォルダを「tar.gz」に圧縮:
- 18). 修正したソースを配置:
- 19). 「fbterm-git」のパッケージの作成:
- 20). 「fbterm-git」のインストール:
- 21). インストールの確認:
- 22). アプリがインストールされているかの確認:
- 23). 使うには、ユーザがグループ video に属している必要があります:
- 24). 実行:
- 25). ゲストOS をクローンして、VM VirtualBox マネージャで仮想マシンを切り替えるやり方で動作確認:
- 26). ビルドが完了し動作確認できたら「autoconf」のバージョンを戻します:
- 参考: 手動で「fbterm」をビルドする場合:
- 参考: 「fbterm」に色を付ける設定:
- 追記: AUR に「fbterm」が新規に登録されました:
- 「fbterm」のインストール:
- --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --
- 仮想コンソールで気づいたことの回避策のまとめ
- まとめ
- -
-
-
-