Z.OOL.ネット信託統治領 はてな諸島

こちらは "Z.OOL.ネット信託統治領 はてな諸島" です。

Rootless Containers 版 proot のソースコードの修正点について

ここ最近は、随分と腰痛に悩まされる日々が続きます。
そして、身体的な疲労感が著しく蓄積していく状況です。


[BGM]: Miu Sakamoto - The Never Ending Story (PV)

本稿について

本稿は、技術的事項についての速報的で簡易な短信についての Z.OOL.ネット信託統治領 Qrunch 諸島からのクロス投稿です。

本稿は、以下の Qrunch 諸島の投稿から御覧になれます。どうか御了承下さい。

z80oolong.qrunch.io

追記 (2018/12/03)

この度本稿において、 Akihiro Suda 氏によるオリジナルの proot への Pull Request を取り上げましたが、当該 Pull Request は、 Rootless Containers の開発コミュニティによる proot への Pull Request が誤って、オリジナルの proot に流れたものでありました。

この件に関しまして、係る事実関係を見落として誤った内容に基づき、本稿を投稿致しましたことを Akihiko Suda 氏を始め、関係者各位及び読者の皆様に心より深く御詫び致します。

しかしながら本稿に関しましては、最終的な結論に関する箇所に関しては、事実関係の訂正後もなお、変わることはないと考えますので、この度は、本稿の表題と内容を大幅に改稿した上で本稿を再掲する所存で御座います。

改めまして、本稿に付きまして事実誤認が御座いましたことを心より御詫び申し上げます。

はじめに

proot とは、 Android OS 及び Linuxカーネルとする各種ディストリビューション等において、 root 権限を取ること無く chroot 環境や mount --bind コマンドに基づくディレクトリのバインド等を擬似的に実現するツールです。

Debian noroot 環境においては、 Android OS 上に構築した Debian 環境をルートディレクトリとして、 Android OS のネイティブ環境上の /dev, /proc, /sys, /system ディレクトリ等をバインドした chroot 環境を構築する為に使用されます。

また、 Debian noroot 環境prootpelya 氏による proot から Termux の開発コミュニティによる proot に交換する事によって、 Android OS 6.0 以降の端末においても Debian noroot 環境を使用する事が出来ます。

本稿では、 OCI に準拠したコンテナを作成・実行させることを可能にするためのツール群である Rootless Containers を実行する為に、オリジナル版の proot に修正を加えた Rootless Containers の開発コミュニティ版の proot と、オリジナルの proot からの修正点について取り上げます。

そして、この修正点が、オリジナルの proot 及び Termux の開発コミュニティ版の proot に反映された場合において、 Debian noroot 環境等の Android OS 上で Linux OS 系各種ディストリビューションを動作させるアプリケーションに与える影響についての一つの考察について述べます。

Rootless Containers の開発コミュニティ版の proot について

Rootless Containers とは、 root 権限を取ること無く、 OCI に準拠したコンテナを作成・実行させることを可能にするためのツール群です。

Rootless Containers の他に、 root 権限を取ること無く、コンテナの実行を行うためのツールとして、 uDocker が挙げられます。

github.com

github.com

なお、 uDocker についての詳細については、 @percipere 氏による以下の Qiita の投稿が参考になります。

qiita.com

ここで、 Rootless Containers のツール群を実行する為に使用する proot には、Akihiro Suda 氏及び Rootless Containers の開発コミュニティの各氏等によって、主に以下の点において修正が加えられています。

以上で述べた事からも判る通り、これらの prootソースコードの修正によって、オリジナルの proot に、 root 権限を取ることを必要としないコンテナ型仮想化技術に関する機能が大幅に追加されている事が判ります。

なお、prootrootlesscontainers への対応 (add rootlesscontainers support)に伴い、 proot がライブラリ talloc に依存する他に、ライブラリ protobuf にも依存する事も判ります。

Termux の開発コミュニティ版の proot への反映について

以上で述べた Rootless Containers の開発コミュニティによる、オリジナルの proot へのソースコードの変更が、オリジナルの proot 及び Termux の開発コミュニティによる proot にどの程度反映されるかに関しては、現在の時点では不明な点が多い状況です。

しかし、今回の変更が Termux の開発コミュニティによる proot に取り込まれると、今後、 Debian noroot 環境を始め、各種 Android OS 上において Linux OSディストリビューションを動作させるアプリケーションの構築に関しては、前述した root 権限を取ること無く実行可能な各種コンテナ型仮想化技術に基づく手法が、何らかの有効性を示す可能性が高くなるものと考えられます。