本稿の Gist にて公開していました差分ファイル を適用した Termux 開発コミュニティによる libandroid-shmem.so を以前より公開したことに伴い、今後は、本稿 Gist より libandroid-shmem-termux-0.2_3-fix.diff
を削除し、以下の Github リポジトリにて Debian noroot 環境に再移植した Termux の開発コミュニティによる libandroid-shmem.so のソースコードを公開することと致します。
- libandroid-shmem-termux.so -- Termux の開発コミュニティよって移植された libandroid-shmem.so を Debian noroot 環境に再移植した動的ライブラリ
なお今後、本 Gist には本稿のみを残しておきますので、Debian noroot 環境に再移植した Termux の開発コミュニティによる libandroid-shmem.so のソースコードにつきましては上記 URL より取得して下さいますよう御願い致します。
以上誠に勝手ながらどうか御了承下さいますよう御願い致します。
この差分ファイルは、Debian noroot 環境 の作者である pelya 氏によって作成された、 共有メモリ関連の標準 C ライブラリ関数を /dev/ashmem によってエミュレートする Debian noroot 環境のための動的ライブラリである libandroid-shmem.so を termux の開発コミュニティが Termux 環境に対応するよう移植したものを、再度 Debian noroot 環境上で動作するように修正した差分ファイルです。
pelya 氏による libandroid-shmem.so と異なり、 termux の開発コミュニティによる libandroid-shmem.so は、関数 shmget(2)
の第一引数 key
に IPC_PRIVATE
以外の値を指定出来るために、 termux の開発コミュニティによる libandroid-shmem.so の導入によって Debian noroot 環境上で動作する各種ソフトウェアが正常かつ安定に動作することが可能となります。
まず、 termux の開発コミュニティによる libandroid-shmem.so の github 版若しくは v0.2 版を以下の URL から入手し、 tarball の場合は適当なディレクトリに展開します。
- https://github.com/termux/libandroid-shmem
- https://github.com/termux/libandroid-shmem/archive/v0.2.tar.gz
そして、入手したソースコードが置かれているディレクトリに、以下のようにして、差分ファイル libandroid-shmem-termux-0.2_3-fix.diff
を適用して通常通りに make
コマンドによってコンパイルすると、動的ライブラリ libandroid-shmem-termux.so
が生成されます。
$ patch -p1 < /path/to/diff/libandroid-shmem-termux-0.2_3-fix.diff
(ここに、 /path/to/diff は、 libandroid-shmem-termux-0.2_3-fix.diff が置かれているディレクトリのパス名)
$ make ... (オプションを適宜設定すること。)
この動的ファイルを使用するには、まず最初に生成された動的ライブラリを Debian noroot 環境のルートディレクトリにインストールします。
# install -v -m 0755 libandroid-shmem-termux.so /
次に、 Debian noroot 環境 の初期化ファイルである /proot.sh
において、環境変数 LD_PRELOAD
が定義されている行を以下のように修正します。
# LD_PRELOAD="... /libandroid-shmem.so ..."
LD_PRELOAD="... /libandroid-shmem-termux.so ..." # /libandroid-shmem.so を /libandroid-shmem-termux.so に修正。
初期化ファイル /proot.sh
の修正後は、 Debian noroot 環境を再起動して設定を有効にします。
ここに、本差分ファイルを適用して生成した動的ライブラリ libandroid-shmem-termux.so
において使用する環境変数について述べます。
環境変数 LIBANDROID_SHMEM_QUIET
の値を 1 に設定すると、動的ライブラリ libandroid-shmem-termux.so
が stderr
に出力するデバッグ用のログの出力を抑止します。
環境変数 LIBANDROID_SHMEM_DISABLE
の値を 1 に設定すると、共有メモリ関連の標準ライブラリ関数である shmget(2), shmat(2), shmdt(2), shmctl(2)
を一時的に無効化します。一部のソフトウェアについて、この動的ライブラリの為に動作が不安定になる場合は、この環境変数の設定を試みて下さい。
まず最初に、 Debian noroot 環境及びそれに伴う libandroid-shmem.so
を開発した pelya 氏に心より感謝致します。また、 libandroid-shmem.so
の機能を強化して Termux 環境に移植した termux の開発コミュニティに心より感謝致します。
そして、 Debian noroot 環境及び Termux 環境に関わる全ての人々に心より感謝致します。
libandroid-shmem.so のデバッグ用ログ出力の変更に伴い、差分ファイルを修正しました。以降は、差分ファイルは libandroid-shmem-termux-0.2_1-fix.diff
を適用して下さい。
libandroid-shmem.so の一部動作の不具合を修正しました。以降は、差分ファイルは libandroid-shmem-termux-0.2_2-fix.diff
を適用して下さい。
クロスコンパイル環境で生成した libandroid-shmem.so の動作の不具合を修正しました。以降は、差分ファイルは libandroid-shmem-termux-0.2_3-fix.diff
を適用して下さい。
これに伴い、差分ファイル libandroid-shmem-termux-0.2_1-fix.diff, libandroid-shmem-termux-0.2_2-fix.diff
を削除致しました。どうか御了承下さい。
Thank you very much for your comment. In order to use
libandroid-shmem-termux.so
created with my diff file in Gnuroot Debian, you need to specify the path name oflibandroid-shmem-termux.so
in the environment variableLD_PRELOAD
as follows.For details, please see the following web page by Mr. pelya -- https://github.com/pelya/android-shmem.