# 仮想 Debian 環境

FIRERPA アドオンモジュールを使用することで、Android 内で利用可能な完全な Debian 環境を作成できます。これは `Termux` や `androdeb` が提供する機能に似ており、この環境で apt を使用してソフトウェアをインストールしたり、コードをコンパイルしたりすることができます。同様に、この環境で bpf 関連のプログラムを独自にコンパイルして使用することも可能です。これは、Android デバイス上で動作する、ほぼ完全な Linux 実行環境です。

```{hint}
この Debian 環境には基本的なパッケージしか含まれていません。git や python3 などの一般的なコマンドは、apt を使用してご自身でインストールする必要があります。
```

## 環境のインストール

プロジェクトのリリースページで `lamda-mod-debian-arm64-v8a.tar.gz` を見つけることができます（お使いのマシンのアーキテクチャに対応するインストールパッケージをダウンロードしてください）。ダウンロード完了後、リモートデスクトップを開き、ダウンロードしたファイルをデバイスにドラッグ＆ドロップしてアップロードします（リモートデスクトップのファイルアップロードディレクトリを変更していないことを前提とします）。その後、以下のインストール操作を行ってください。このインストール操作は一度だけ行えば十分です。


```{hint}
リモートデスクトップでアップロードしたファイルは、デフォルトで /data/usr/uploads ディレクトリに保存されます。
```

```bash
tar -C /data/usr/modules -xzf /data/usr/uploads/lamda-mod-debian-arm64-v8a.tar.gz
```

上記のコマンドを実行すると、インストールは完了です。次に、システムへの入り方を説明します。

## 環境へのアクセス

関連環境のファイルシステムをインストールした後、コマンドを実行して仮想 Debian 環境に入ることができます。Debian 環境パッケージは `/data/usr/modules/debian` にインストールされているので、以下のコマンドを実行して Debian のインタラクティブターミナルに入ることができます。

```bash
debian /bin/bash
```

一度だけコマンドを実行したい場合、例えば `id` コマンドを実行する場合は、次のように使用できます。

```bash
debian /bin/bash -c id
```

```{attention}
同時に仮想環境に入れるインスタンスは1つだけです。`debian /bin/bash` を実行して使用中の状態を維持している場合、他のターミナルでこのコマンドを再度実行するとエラーが返されます。最初に起動した `debian /bin/bash` を終了させない限り、新しいインスタンスは起動できません。
```

## 高度な使用方法

ここでは簡単な高度な使用方法を紹介します。これを完了すると、環境内で SSH サービスを実行したり、Python スクリプトを実行したりできるようになり、セッション数の制限もなくなります。まず、以下のコマンドを実行して仮想環境に入ります。

```bash
debian /bin/bash
```

これで、仮想環境内に入りました。続けて以下のコマンドを実行してください。一つも漏らさずに実行する必要があります。

```bash
root@localhost: apt update
root@localhost: apt install -y openssh-server procps python3 python3-pip python3-dev
root@localhost: echo 'PermitRootLogin yes' >>/etc/ssh/sshd_config
root@localhost: echo 'StrictModes no' >>/etc/ssh/sshd_config
root@localhost: mkdir -p /run/sshd
root@localhost: # root パスワードを変更
root@localhost: echo root:lamda|chpasswd
root@localhost: # debian 環境を終了
root@localhost: exit
```

これで、SSH と Python のインストールが完了しました。次に、コマンドを実行して SSH サーバーを起動します。

```bash
debian /usr/sbin/sshd -D -e
```

上記のコマンドは現在のターミナルをブロックしてしまいます。この問題を避けるために、内蔵の定時タスク（cron）を使用して、この SSH サービスを FIRERPA サービスと共に自動起動させることもできます。次に、`crontab -e` を実行し、以下のルールを書き込んでから FIRERPA またはデバイスを再起動してください。定時タスクの使用方法に関するドキュメントは、`定時タスク` の章で確認できます。

```bash
@reboot debian /usr/sbin/sshd -D -e >/data/usr/sshd.log 2>&1
```

次に、このデバイスの IP アドレスを取得し、お使いのコンピュータで以下のコマンドを実行してパスワード `lamda` を入力するとログインできます。

```bash
ssh root@192.168.x.x
```

さまざまなアイデアを発展させて、無限の可能性を生み出すことができます。これはまさに小型の Linux サーバーです。