z80oolong
z80oolong.qrunch.io

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

2018/12/01に投稿
この投稿は別サイトからのクロス投稿です(クロス元:http://z80oolong.hatenadiary.jp/...

追記 (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 が挙げられます。

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

ここで、 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 権限を取ること無く実行可能な各種コンテナ型仮想化技術に基づく手法が、何らかの有効性を示す可能性が高くなるものと考えられます。

関連記事

コメントはありません。
ブログを開設

クランチで技術ブログを
始めてみませんか?

この先は、クランチへのアカウント登録、及びログインが必要なページになります。

Markdownの書き方
見出し # 見出し(h1)
## 見出し(h2) , ### 見出し(h3) ...
リスト - 箇条書き
   - タブでインデント
番号付きリスト 1. テキスト
2. テキスト
改行 行末に半角スペース2つ
リンクの挿入 [タイトル](https://xxx.com)
引用 > テキスト
コード挿入 ```cpp:title
code
```
画像の挿入 ![代替テキスト](URL "タイトル")
太字 **テキスト**
斜体 *テキスト*
打消し線 ~~テキスト~~
水平線 ***
技術ブログを開設
ログイン