Android 上で Linux を実行する方法の詳細な説明。 Android スマートフォンおよびタブレットへの Linux ディストリビューションのインストール

09.10.2021 モニター

Android 上で Linux を実行することは可能です。 また、このために root 権限を持つデバイスは必要ありません。必要なソフトウェアはすべて公式の Google Play ストアで入手できます。 わずか 10 ~ 15 分で、Android とは異なる高度な機能を備えたオペレーティング システムを入手できます。

注記:私たちの指示に従うと、Linux OS が仮想環境で実行されます。 Android は引き続きバックグラウンドで実行されます。 このようなシステムを完全と呼ぶのは間違いです。 それにもかかわらず、標準的なタスクのリストにはうまく対応します。

インストールする前に、不要なアプリケーションをすべて終了し、Android デバイスの RAM をクリアしてください。

1. Google Play ストアから、GNURoot Debian と XServer XSDL をインストールします。

2. Linux のインストールを開始する前に、デバイスが安定した Wi-Fi ネットワークに接続されていることを確認してください。 GNURootを起動します。 必要な環境パッケージのダウンロードが開始されます。

インターネット接続の速度に応じて、インストールには 30 秒から数分かかります。 次のメッセージが表示されるまでティッカーを無視してください。

root@localhost:/#

「」の概念に精通している人は、この行を怖がらせる必要はありません。アプリケーションは「サンドボックス」で動作するため、デバイスに害を及ぼすことはありません。

3. 次のコマンドを入力します。

apt-getアップデート

パッケージがダウンロードされるまで待ちます。 これは、「Reading package lists...Done」という行で示されます。

4. 次に、別の行を入力します。

apt-get アップグレード

「続けますか?」という質問には、 英語の文字 Y を入力し、Enter キーを押します。 パッケージのインストールが開始されます。

今回はインストール手順に少し時間がかかります。 待望の行が表示されるまで、インストールが完了するまで辛抱強く待ちます。

root@localhost:/#

Debian Linux 環境がインストールされたので、グラフィカル シェルの展開に進むことができます。

5. すべての Linux 配布パッケージのインストールは、次のコマンドで実行します。

apt-get install lxde

次の行を使用してシステム カーネルをインストールするオプションもあります。

apt-get install lxde-core

Y を再入力して Enter キーを押し、インストールを確認します。 パッケージのダウンロードプロセスが開始されます。

インストール中、すべてのファイルが正常にダウンロードされたこと、および解凍時にデバイスの空き容量が不足していないことを確認してください。 そうしないと、システムの起動に失敗します。

6. オペレーティング システムのインストールを完了するには、次の 3 つの追加ユーティリティをダウンロードする必要があります。

  • XTerm - Linux グラフィカル シェルからターミナルにアクセスします。
  • Synaptic Package Manager - apt パッケージの管理とアプリケーションのダウンロード用。
  • Pulseaudio - サウンド ドライバーのインストール用。

3 つのユーティリティはすべて、1 つの GNURoot 端末コマンドを使用してインストールされます。

apt-get インストール xterm synapticpulseaudio

約 260 MB のデータがデバイスにダウンロードされます。

7. ここで GNURoot アプリケーションを最小化し、以前にインストールした XServer XSDL を開きます。 追加のフォントをダウンロードすることに同意します。 インストールが完了したら、青い背景と白いテキストのスプラッシュ画面が表示されるまで、画面を数回タップします (アプリケーションは解像度とフォント サイズを選択するよう求めます。すべては設定によって異なります)。

GNURoot を再起動し、次の 2 つのコマンドを順番に入力します。

エクスポート DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4712
startlxde &

さらにシステムを再起動する手順 (Linux を再度開きたい場合) は次のようになります。XServer XSDL を起動し、ブルー スクリーンが表示されるまで待ち、GNURoot を開いて上記の 2 つのコマンドを入力し、XServer XSDL に戻ります。

ターミナルが無効なコマンドについてエラーを表示した場合は、この手順のステップ 5 に戻り、ベア カーネルのインストールを試してください。 Android デバイスのメモリ状況を確認します。

8. XServer XSDL を開いて数秒待つと、Linux を使用できるようになります。

アプリケーションをインストールするには、左下隅で [スタート] メニューを開き、[ファイル名を指定して実行] を選択します。 「Synaptic」と入力して Enter キーを押します。

開いたウィンドウで、検索を使用して必要なアプリケーションをインストールします。 これには、Firefox ブラウザ、GIMP 画像エディタ、Libre オフィス スイート、その他の Linux 互換プログラムが考えられます。

もちろん、Linuxをインストールするためのこのオプションは、Android上でのオペレーティングシステムの本格的な起動とは言えません。 Virtual Linux にはいくつかの制限がありますが、ワイヤレス マウスとキーボード (おそらく OTG アダプターと USB ハブに接続) を使用すると、スマートフォンやタブレットを成人向け OS の機能を備えたラップトップに変えることができます。

多くの Android スマートフォン所有者は、デバイス上で実際の Linux ソフトウェアを実行するのが困難です。 すべての法律によれば、ここで動作するはずですが、何らかの理由でインストールするにはルート権限が必要であり、それ自体はいくつかの自家製インストーラーで配布されており、プログラムの選択肢は非常に限られています。 この記事では、なぜこれが起こったのかという疑問に対する答えを提供し、Android 上でほぼすべての Linux ソフトウェアをインストールして実行するための便利な方法である解決策を提案します。

LinuxかLinuxではないのか?

ご存知のとおり、Android は Linux カーネルに基づいており、通常の Linux ディストリビューションに典型的な一連の標準ライブラリとコマンド ライン ユーティリティが含まれています。 ただし、ここでクラシック Linux ソフトウェアを起動することは、ABI の非互換性、パッケージ マネージャーの欠如、独自のセキュリティ システム、標準 Linux システムの多くのコンポーネントの欠如など、多くの理由により非常に困難です。

そのため、Android には標準ライブラリ libc やその他のライブラリが存在しますが、ほとんどの場合、それらの実装は GNU プロジェクトのライブラリと互換性がなく、機能が大幅に低下しています。 このため、Linux ソフトウェアは少なくとも Android および ARM プロセッサ向けに特別に再構築する必要があり、多くの場合、ライブラリに欠けている機能を追加するパッチも適用されます。

BotBrew: サポートされているデバイスのリスト

BotBrew は次のデバイスでテストされています: Barnes & Noble NOOK Color、LG P970 Optimus Black、Huawei Ascend M860、HTC Desire、HTC Evo 4G、HTC Evo 3D、HTC Inspire 4G、HTC Droid Eris、HTC Hero、Samsung Galaxy Nexus、 Samsung Galaxy S2 (GT-I9100)、Samsung Galaxy Y (GT-S5360)、Motorola Atrix 4G、Motorola Droid/Milestone、Sony Ericsson Xperia X8、Asus EeePad Transformer TF101。

アプリケーションの権限を最大限に遮断し、アプリケーションが独自のディレクトリを越えることを許可しない Android セキュリティ システムも、標準の Linux ソフトウェアの動作を深刻に妨げます。 したがって、多くの場合、これらの制限を解除するルート権限を取得する必要があります。 Java アプリケーションだけでなく、通常の Linux ソフトウェアをインストールできるパッケージ マネージャーがないため、開発者は他のアプリケーションをインストールするためにのみ必要なアプリケーションを作成する必要があります。 これらのカスタム インストーラーはすべてこのように表示されます。

さて、全体像をまとめると、Android には、たとえば、X Window グラフィックス スタックや GTK+ ライブラリなどの不可欠なコンポーネントさえも含め、標準の Linux コンポーネントがあまりありません。 もちろん、これらすべてをここに導入するいくつかの試みが行われていますが、物事は半実用的なアルファ版を超えて進んでいません。

それにもかかわらず、本格的な Linux システムの機能を Android に移行するという機会は、愛好家にとってあまりにも魅力的なアイデアなので、その過程で生じる問題を解決して本格的なユニバーサル ソリューションを提供しようとしないのです。 最も明白で簡単な方法は、本格的な Linux ディストリビューションの「仮想化」バージョンを実行することです。これについてはすでに詳しく説明しています。 この方法は興味深いものですが、システムを 2 つの領域に分割し、それぞれが互いに独立して動作するという問題があります。

BotBrew プロジェクトはさらに興味深いものに見えます。そのフレームワーク内では、Linux システムでは非常に一般的なパッケージ マネージャーとリポジトリが開発されており、これを利用して Android 内の別のディレクトリに Linux ソフトウェアをインストールできます。 また、かつては、兄貴分の Android 内で動作するのに適した Linux ソフトウェアを簡単かつ不必要な問題なくアセンブルできるようにするさまざまなスクリプトが発明されました。 この記事の残りの部分では、これら 2 つのプロジェクトについて説明します。

ボットブリュー

BotBrew プロジェクトは、ユーザーが所有する Linux ソフトウェアのインストールに関する多くの問題を解決し、Android システムが外部のアプリケーションを受け入れるように準備するように設計されています。 基本的に、システムは 4 つのコンポーネントで構成されます。
  • プリコンパイルされた Android アプリケーションを含むリポジトリ。これを使用すると、単一のコマンドを使用して多くの Linux アプリケーションをインストールできます。
  • パッケージ マネージャー。BotBrew Bazil の実験版で apt-get とともに軽量の Opkg または dpkg を使用します。
  • runit プロセス マネージャー。デーモンがインストールされている場合は、デーモンの動作を適切に起動して維持するために必要です。
  • デスクトップ Linux ディストリビューションを使用してアプリケーションをクロスコンパイルするために必要なすべてのツールを含む独自のビルド システム。
このプログラミング的思考の奇跡が機能するためには、root 権限と、スマートフォンの内部メモリまたはメモリ カードに少しの空き領域があれば、何も必要ありません。 さらに、SD の場合、ファイルは仮想ディスクにダンプされますが、これはすべてのコアでサポートされているわけではないため、最初のオプションをお勧めします。


初期化

現時点では、独自のリポジトリを使用する BotBrew のクラシック バージョンでは、dcron、GCC、Git、dropbear SSH サーバー、Lynx コンソール ブラウザ、Nmap セキュリティ スキャナ、rsync バックアップ ツール、Vim エディタ、lighttpd Web などのソフトウェアをインストールできます。サーバー、スクリプト言語 Python と Ruby、およびその他数十のパッケージ。 ちなみに、これらはすべてスマートフォン/タブレットの内部メモリの専用ディレクトリにインストールされ、メインシステムを混乱させることはありません。 つまり、1 つのディレクトリを削除するだけで、BotBrew とインストールしたすべてのものを削除できます。

ソフトウェアをインストールする

では、BotBrew を使用して Linux ソフトウェアをインストールするにはどうすればよいでしょうか? まず、プログラム自体を含むパッケージが必要です。 これは Google Play で入手でき (実験版の Bazil ではなく、BotBrew ルートが必要であることに注意してください)、重さは 1 メガバイト未満です。 インストール後、起動して画面下部の「続行」ボタンをクリックすると、ソフトウェアがコンソール パッケージ マネージャーやその他のユーティリティ (Debian Linux 用語でブートストラップ) など、その操作に必要なすべてのコンポーネントをダウンロードします。 重さはわずか数メガバイトなので、長く待つ必要はありません。 インストールが完了すると、BotBrew によってプロジェクトの公式 Web サイトが表示されたウィンドウが表示されますが、これは安全に閉じても問題ありません。

画面上に、インストール可能なパッケージのリストが表示されます。 それらは非常にたくさんありますが、上で説明した理由により、それらの中にはグラフィカルなアプリケーションは見つかりません。 ただし、さまざまなサーバー、コンパイラ、インタプリタがあるため、スマートフォンを真剣に「遊んでみたい」と考えている人には、方向転換する余地があります。 パッケージをインストールするには、その名前をタップし、アプリケーションに関する情報が表示される次の画面で「インストール」ボタンをクリックします。

タンバリンを持って踊る

BotBrew ブートストラップで問題が発生した場合は、次のコマンドを使用して手動でインストールしてみてください。

Wget http://repo.botbrew.com/anise/bootstrap/install.sh -O - | す
これで問題が解決しない場合は、すべてのインストールを削除して (設定の「BotBrew を削除」)、このコマンドを実行してみてください。

この後、パッケージは「インストール済み」タブに表示されますが、「実行」ボタンなどは表示されません。 アプリケーションはコンソールから独立して起動する必要がありますが、これは当然のことです。 アプリケーション自体はディレクトリ構造 /data/botbrew 内にインストールされ、ディレクトリ /etc、/usr などを含む Linux ディストリビューションの実際の環境が「エミュレート」されます。 また、コマンドへのフル パスを入力する必要性でユーザーを苦しめないようにするために、BotBrew 開発者は同じ名前のラッパー コマンドを提供しました。 これを使用して、たとえば、インストールされている Lynx コンソール ブラウザを起動するには、次のコマンドを入力する必要があります。

$ botbrew lynx http://xakep.ru
あるいは、/data/botbrew/bin ディレクトリを PATH 環境変数に追加することもできますが、これはターミナルを起動するたびに行う必要があります。

$export PATH="$PATH:/data/botbrew/bin"
ちなみに、悪魔やさまざまなネットワークサービスを使用すると、状況ははるかに良くなります。 開始後、デーモンはすぐに起動され、BotBrew インターフェイスの下部にある [再生] ボタンをクリックしてアクセスできるグラフィカル インターフェイスを介してデーモンの組み込みを制御できます。 一部のアプリケーションでは、追加のユーザーを作成し、その設定を変更する必要がある場合があります。これは、通常の Linux システムと同じ方法で行うことができます。

  1. ユーザーの作成:
    $ botbrew adduser Vasya
  2. ユーザーにインターネット アクセスを開く:
    $ botbrew addgroup vasya inet
  3. BotBrew を別のユーザーに切り替えます。
    $ボットブリュー・ス・ヴァシャ
これらすべての変更は BotBrew 仮想環境にのみ影響し、メイン システムにはまったく影響しないことに注意してください。 コンソールを使用して、GUI をバイパスしてアプリケーションをインストールすることもできます。 これを行うには、コンソール パッケージ マネージャー Opkg を使用する必要があります。このコマンド構文は apt-get と完全に互換性があります。

$ botbrew opkg install Dropbear
逆の操作:

$ botbrew opkgはdropbearを削除します
「進歩の最前線」を維持するには、グラフィカル インターフェイスの対応するボタンをクリックして、BotBrew リポジトリを随時更新する必要があります (他のものと混同しないでください)。 パッケージの新しいバージョンは「アップグレード可能」タブに表示されます。 彼の名前をタップして「アップグレード」をクリックするだけです。

ボットブリューバジル

また、市場には BotBrew Basil という実験的アプリケーションとしてマークされているアプリケーションもあります。 本質的には、これは BotBrew と同じですが、非常に重要な違いが 1 つあります。 ネイティブ リポジトリと Opkg パッケージ マネージャーの代わりに、Debian Linux ARM リポジトリと apt-get パッケージ マネージャーを使用します。 これは、アプリケーションの「ブラジル版」を使用してインストールできるソフトウェアの量がはるかに多いことを意味します。 10倍以上です。

Debian リポジトリの使用に加えて、Basil はわずかに変更されたインターフェイスも備えています。 たとえば、起動直後に、インストール ディレクトリを選択するように求められます。 デフォルトは /data/botbrew-basil で、これは私の意見では非常に論理的ですが、メモリ カードの ext2 パーティションを含め、他のものを選択することもできます (FAT は機能しません)。

2 番目の重要な違いは、「続行」をクリックした直後に表示される、アプリケーションの使用方法を選択できることです。 ここには 4 つのオプションがあります。

  1. コマンド ラインで BotBrew を使用します。これは基本的に、通常の BotBrew のスタイルでのインストールに似ています。
  2. dpkg/APT システムを使用します。apt-get および Debian リポジトリとともにインストールします。 推奨されるインストール オプション。
  3. [Python プログラムの実行] は、Python を自動インストールする最初のオプションに似ています。
  4. 最小限の Debian をインストールする - Debian の最小限のインストール。
2点目と4点目について説明させていただきます。 最初の BotBrew とこのリストの最初の項目は、最小限の Linux システム (わずか数個のコマンドとライブラリで構成される) をインストールするだけであり、その中で Linux ソフトウェアが起動されます。 ただし、apt-get は最小限の Opkg とは異なり、多かれ少なかれ完全な Linux インストールを必要とします。 したがって、2 番目のオプションを選択すると、スマートフォン上に一種の micro-Linux がインストールされます。 そして、マイクロバージョンをインストールできるのであれば、多かれ少なかれ本格的なディストリビューションをインストールしてみてはいかがでしょうか。 これが 4 番目のポイントがある理由です。

BotBrew Basil ブートストラップ後、アプリケーションのクラシック バージョンでおなじみの同じアプリケーション インストール管理インターフェイスが画面に表示され、botbrew2 コマンドがシステムに表示され、これを使用してソフトウェアを起動できます。 おそらく、opkg の代わりに apt-get コマンドが使用されることと、アプリケーション インストール インターフェイスを介して追加のリポジトリ (最初の BotBrew リポジトリを含む) に直接接続できる機能を除いて、管理に大きな違いはありません。

問題は自分たちの手で解決しましょう

プリコンパイルされたアプリケーションと既製のパッケージを備えたリポジトリは優れていますが、必要なアプリケーションがインストールできない場合はどうすればよいでしょうか? 結局のところ、Debian リポジトリと膨大な量のソフトウェアを接続できる同じ BotBrew Basil であっても、その実験的な性質により、すべてのスマートフォンで動作するとは限りません。

この場合、アプリケーションを自分で構築してみることができます。 ただし、ここではいくつかの困難が待っています。実際には、スマートフォン用のソフトウェアを構築するには、必要なクロスコンパイル ツールを準備し、次にアセンブルされるアプリケーションのすべての依存関係を考慮し、最後に、いくつかの依存関係を考慮する必要があります。場合に応じて、コードに必要な変更を加えます。 これらはすべてかなり面倒な問題であり、時間を無駄にする価値はほとんどありません。

ただし、他の人の作業を利用して、ソフトウェアの構築プロセスを自動化することはできます。 この分野で最も開発された興味深いソリューションの 1 つは、XDA Developers のユーザー smitna によって開発された SCRIPTSET スクリプトのセットです。 これを使用すると、htop、ImageMagick、iptables、ELinks、Screen、mc、node.js、Samba、strace、QEMU、Parted、SANE などのさまざまなアプリケーションを文字通りわずか 2、3 のコマンドで組み立てることができます (電話を使ってプリンタに直接印刷!) などなど。 スクリプト自体は、クロスコンパイラー、必要な依存関係およびアプリケーションをすべてダウンロードし、必要に応じてパッチを適用し、電話で解凍できるアーカイブを生成します。

SCRIPTSET は Linux でのみ動作しますが、Windows を使用している場合は、仮想マシンに Ubuntu をインストールできます。 次に、ターミナルを開いて、クロスコンパイラーの構築に必要なツールをインストールする必要があります。

$ sudo apt-get install build-essential cmake autoconf2.13 scons
この後、SCRIPTSET 自体を取得して解凍できます。

$ cd ~ $ wget http://goo.gl/zvnom -O scriptset-2.6.zip $ unzip scriptset-2.6.zip
解凍の結果、別のアーカイブ scriptset-2.6.tar.bz2 が得られます。 しかしそれだけではありません。アーカイブは従来の tar のルート ディレクトリなしでパッケージ化されているため、自分で作成する必要があります。 そしてすでにその中に解凍されています:

$ mkdir スクリプトセット $ cd スクリプトセット $ tar -xjf ../scriptset-2.6.tar.bz2

解凍すると、いくつかのスクリプト、構成ファイルに加え、スクリプトの使用方法が記載された非常に大きなサイズの README ファイルがディレクトリに表示されます。 スクリプトには実行ビットがないため (以前の問題を考えると、これは驚くべきことではありません)、自分で設定する必要があります。

$ chmod 755 *.sh

# vi ~/scriptset/configuration.conf // スマートフォンにアプリケーションをインストールするディレクトリ TARGET_SYSROOT="/data/sysroot" // ターゲットプロセッサ TARGET_MARCH="armv7-a" TARGET_MTUNE="cortex-a9" TARGET_MFPU="neon" TARGET_MFLOAT =ソフトFP」

あらゆるアプリケーションを正しくアセンブリするにはこれで十分です。 ターゲット プロセッサは、追加の NEON 命令セットを備えた標準 ARMv7 になります。 過去3~4年以内に発売されたスマートフォンには搭載されています。 /data/sysroot ディレクトリはスマートフォンにアプリケーションをインストールするために使用されますが、奇妙なことに、デスクトップ マシンにも作成する必要があります。

$ sudo mkdir -p /data/sysroot $ sudo chown user:users /data/sysroot $ sudo chmod 777 /data/sysroot
スクリプトの作成者が説明しているように、一部のアプリケーションでは主要なディレクトリのパスがビルド段階で組み込まれるため、このアクションが必要です。 したがって、現在のディレクトリと他のディレクトリをルートとして使用してアプリケーションを構築した場合、パスの違いによりスマートフォンでは動作しません。 chroot を使用してこの問題を解決する方が正しいと確信していますが、目的のディレクトリを作成し、完了したら削除する方が簡単かつ迅速です。

次に、収集する予定のアプリケーションのリストを指定する必要があります。 これを行うには、package_selection.conf ファイルを開き、必要なオプションの [no] を [yes] に変更します。 たとえば、bash、ImageMagick、Screen をビルドするには、次の 3 行を変更する必要があります。

# vi ~/scriptset/package_selection.conf BASH=yes IMAGEMAGICK=yes SCREEN=yes
# ALWAYS NEEDED 行間の設定は変更できないことに注意してください。 これらのアプリケーションとライブラリは常に必要であり、これらがなければ他のアプリケーションを構築することはできません。 これで、アプリケーションをコンパイルできるようになりました。 これを行うには、引数なしで build.sh スクリプトを実行するだけです。

$./build.sh
必要なパッケージがすべてインストールされ、コンパイラがビルド中にエラーを生成しなかった場合、ビルドの結果、cs-sysroot.tar.bz2 と android-mysysroot.tar.bz2 という 2 つのアーカイブが現在のディレクトリに表示されます。 1 つ目は、クロスコンパイラーによって作成されるアプリケーションの実行に必要な環境であり、2 つ目はアプリケーションのセット自体です。 これらのアーカイブは両方ともスマートフォンのメモリ カードに転送し、その上でターミナル エミュレータを実行するか、ADB 経由で接続して、次の 2 つのコマンドを実行する必要があります。

$ tar xjf /sdcard/cs-sysroot.tar.bz2 $ tar xjf /sdcard/android-mysysroot.tar.bz2
その結果、スマートフォンの内部メモリに /data/sysroot ディレクトリが表示され、そこにアプリケーションが配置されます。 これらは同じ端末からフルパスを指定して起動する必要があります。 例えば:

$ /data/sysroot/usr/bin/bash
または、ターミナルを起動した後、/data/sysroot/usr/bin を PATH に追加します。

$export PATH="$PATH:/data/sysroot/usr/bin"

結論

Android と一般的な Linux ディストリビューションの間には大きな違いがあるにもかかわらず、スマートフォンに Linux コンソール アプリケーションをインストールすることはそれほど難しくありません。 残念ながら、グラフィカル アプリケーションについてはまだ話されていませんが、Qt ライブラリと Wayland グラフィカル サーバーを Android に移植するプロジェクトはすでにあり、すぐに実用的なソリューションが得られることを願っています。


2013 年 8 月付けの Hacker マガジンに初掲載されました。

その後、中国のタブレット製造の奇跡であるスーパーパッドを購入することにしました。 このタブレットは、「ちょっと掘る」ためのおもちゃ、パートタイム、リーダー、ペア用のゲーム、そして長旅の時計として使用されました...500 GBのUSBハードドライブが2つあることにすぐに気づきます1 TB には、楽しい生活にとって最も重要なものがすべて保存されており、ntfs と ext4 に分割されています。 そして当然のことながら、タブレットにはそれらが表示されません。

こちらが私のボランティアです

これが、さらに深く掘り下げる最初の理由です。 xda-developers.com で 200 のフォーラム ページを閲覧した後、特定の

現段階では、このタブレットを開こうとする試みはすべて棚上げされています。 学生にとって輝かしい時間、つまりセッションまで。 そして、セッション中、学生は主題に参加しない限り、まったくすべてのことを行うため、インターネット上の明らかにブルジョワ的なサイトでの楽しい夜の集まりが再開されました。 そして、このタブレット、私の場合は ubuntu に Orthodox Linux をインストールするという素晴らしいアイデアが生まれました。
ここから何が得られたかについては、以下を参照してください。

単に手に取ってインストールすることができないことは明らかです...さて、私たちのものはどこに行ったのか...

必要なものは次のとおりです。

Android と Linux をロードする主な段階を見てみましょう
1. 電源を入れてブートROMコードを実行します。 電源を入れてブートROMコードを実行
2. ブートローダー ブートローダー
3. Linux カーネル Linux カーネル
4. 初期化プロセス 初期化プロセス
5. ザイゴートとダルヴィク コンソール(bash、zsh...) / wm(kde、gnome...)
6. システムサーバー ブートが完了しました
7. 起動完了

ご覧のとおり、違いは init の実行段階から始まります。
変えるのが一番簡単なんです。

正直に書きますが、私は Android init しか使えず、カーネルにしっかりと固定されていると思っていました。 そして、別のタブレットから RAM ディスクが動作する例を受け取った後でも、それが起動するとは思いませんでした...

ラムディスカの内容
bin dev etc home init init.rc lib linuxrc mnt newroot opt proc root sbin sys tmp usr var
/bin には、busybox があり、/sbin には、そこへのリンクを持つ switch_root があります。
zt-180 の RAM ディスクからの初期化コード

#!/bin/sh echo initram イメージから開始します。 Echo SD-CARD ウェイクアップを待機中... sleep 3 echo "新しい rootfs をマウントしています" mount -t ext2 /dev/mmcblk0p2 /newroot && echo OK echo 待機、root を切り替えます... exec switch_root /newroot /sbin/init echoうーん、代わりにシェルを使用して /bin/ash を実行してください

残っているのは、RAM ディスクをメモリにフラッシュすることだけです (私は XP で burntool を使用しました)。そして、ブート段階です。 はい、リカバリではなくファームウェアをフラッシュしたため、Linux を起動するには、起動時にキーを押し続ける必要があります。

これでロード段階は完了しました。コンソールには何の兆候も見られず、すべてのロードが非常に遅いため、辛抱強く待つ必要があります。

最初のコンソールの自動ログインの設定
/etc/init/tty1.conf で、最後の行を exec /bin/login -f Yor_Login に置き換えます。< /dev/tty1 >/dev/tty1 2>&1 その後、~/.bashrc に自動ログイン中に開始されるコマンドを記述することができます。
私たちはXサーバーと戦っています
私の場合、タッチスクリーン、xorg.conf、xterm では間違いなくうまく動作しませんでした...シナプスドライバーを削除し、以下を ~/.xinitrc に置きました。
#!/bin/bash # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ # /etc/X11/xinit/xinitrc # # 開始されたすべての X セッションで使用されるグローバル xinitrc ファイルby xinit (startx) # グローバル X セッション スクリプトを呼び出します #。 /etc/X11/Xsession x Clock -geometry 50x50-1+1 & exec xterm -geometry 80x66+0+0 -namelogin
労働環境との戦い
qt ライブラリを使用したグラフィックス レンダリングがとても気に入ったので、kde をインストールしたいと思いました。 すぐに言います。はい、インストールして開始しましたが、どうやって...
まず、すぐに自動ログインを設定しました。
/etc/kde4/kdm/kdmrc で以下を見つけて自分に合うように変更します
AutoLoginEnable=true # true の場合、ログアウト後に自動ログインします。 false の場合、自動ログインは、 # 表示セッションの開始時にのみ実行されます。 # デフォルトは false #AutoLoginAgain=true # 自動ログインが開始されるまでの遅延 (秒単位)。 # デフォルトは 0 AutoLoginDelay=3 # 自動的にログインするユーザー。 決してルートを指定しないでください。 # デフォルトは "" AutoLoginUser=Login # ユーザーが自動的にログインするためのパスワード。 # ユーザーが NIS または Kerberos ドメインにログインしていない限り、これは必要ありません。 この # オプションを使用する場合は、明らかな理由から、「chmod 600 kdmrc」を実行する必要があります。 # デフォルトは「」です AutoLoginPass=パスワード
そして、書かれているように、悪意のある人がパスワードを盗み見しないように、root 下のコンソールで chmod 600 kdmrc を実行します。
次に、入り口でスクリーン セーバーが疑わしいほど長時間ハングしていたので、疑問を感じてコンソールから startkde を呼び出しました。 あらゆる種類のエラーが長く退屈に表示された後、プラズマは最終的にネットブック モードでロードされました。 フレームバッファの下に座っているため、グラフィック効果はオフになっており、場所によっては大幅に速度が低下しますが、それでもこれは kde であり、ロードされています。
あなたに合わせてすべてを微調整
それぞれに独自の特徴があり、まだ最適化は行っていませんが、読み込みの高速化、ワークスペースの最適化など、やるべきことはたくさんあります。 より軽量な wm – e16 – を検討していますが、まだそれをメインにはしていません。 タッチスクリーンを調整する必要もあります。幸いなことに、kde には仮想キーボードがすでにあります。
私はopenbox + razor-qtを検討しています。
"楽しもう!"
結果

debian 6 リポジトリに接続しましたが、サウンドが機能しません。タッチスクリーンとワークスペースが設定されていません。 カーネルモジュールが本当に足りないので、組み立ててネジ止めしてみます...
多くのサービスとポリシーがダウンし、インターネットには root としてのみアクセスできますが、インターネットは設定されており、これは良いニュースです。

Ps: はい、カーネル モジュールがないと、fat パーティションと ext2 パーティションのみが接続されるため、これは望ましいことではありません。
USB キーボード + マウスは、デバッグや設定の際に非常に役立ちます。

次に、そのプロセスで使用できるものについて
ZT-180のRAMディスク
燃焼ツール
ラムディスク再梱包キット。 バイナリは PATH に配置する必要があります。

こんにちは、私はミニ PC ug 802 を持っていますが、それに Linux をインストールするにはどうすればよいですか? テルタル

私は専門的に Linux サーバーを管理しているので、これは私にとって非常に興味深いトピックです。 サーバーでは興味深いですが、私にとってはそれはすでに日常的であり、普通のことです。 しかし、ARM アーキテクチャを備えたデバイスに Linux ディストリビューションをインストールすることは、桁違いに興味深いものです。

パソコンとスマートフォンやタブレットの違いは何ですか?

実際、概念的には違いはわずかで、モバイル デバイスとデスクトップ デバイス、さらにはサーバーの両方が同じ原理に従って作られています。 ただし、モバイル デバイスの場合は、異なるプロセッサ アーキテクチャが使用されます。 デスクトップ CPU は、x86 または amd64 アーキテクチャで設計されています。 また、ほとんどのモバイル デバイスには ARM アーキテクチャに基づくプロセッサが搭載されています。 歴史的に見て、これは、このようなプロセッサの消費電力が大幅に低いという事実によるものであり、これはモバイル デバイスにとって不可欠です。

モバイルデバイスにインストールできるOSは何ですか?

したがって、このハードウェアで動作するには、オペレーティング システムを含むすべてのプログラムをこのアーキテクチャ専用に開発する必要があります。 したがって、デスクトップまたはサーバーにインストールされている通常バージョンの Linux はここでは動作しません。 幸いなことに、このアーキテクチャには多くのディストリビューションとバージョンがあります。 ほとんどのスマートフォンに搭載されている悪名高い Android から始まり、特殊な Backtrack (現在は Kali Linux) のような珍しいディストリビューションで終わります。 しかし、当然のことながら、さらに興味深いのは、よりよく知られたディストリビューションです。

アンドロイドとは何ですか?

Androidはオペレーティングシステムです Linuxベース、Googleによってモバイルデバイス向けに開発されました。 世界で最も人気のあるモバイル オペレーティング システム。 実際には、LINux はオペレーティング システムのカーネルにすぎないことを理解してください。 そして多くのオペレーティング システムはこれに基づいて構築されており、Android はそのうちの 1 つにすぎません。

カーネルは、ハードウェア プラットフォームのすべてのデバイスとオプション、つまりドライバーとデバイス管理を使用できるようにする基本機能です。 カーネルには、いくつかの基本プログラムとコマンド ライン ユーティリティも含まれています。 実際のところ、Linux ファミリ (カーネル自体ではなく、このカーネルに基づいたオペレーティング システム ファミリ) では、グラフィカル シェルは別個の部分であり、独自のレベルの抽象化です。

そして、これらの OS の最小構成は、まさにグラフィカル シェルを使用せず、テキスト コマンド ライン インターフェイスだけです。 これにより、これらの OS を最も珍しい場所に組み込むことができます。 たとえば、ネットワーク機器、工作機械、コンピュータ、その他の複雑なデバイス、たとえば飛行機や自動車などです。 あなたの洗濯機や電子レンジにも同様のものが設置されている可能性があります:)

これは Android デバイスです。 したがって、Android はデフォルトでインストールされる必要があります。 実際、これは Linux です。 ただし、いくつかの重大な制限があります。 他の Linux をインストールすると、モバイル デバイスの機能を大幅に拡張できます。 使用の可能性は事実上無限になります。 携帯電話をサーバーとして使用することを想像してみてください。 多くのツールが利用可能になりつつあります。 タブレットならOTGケーブルで周辺機器を接続すれば本格的なパソコンとして使えます! 何のために? それはまた別の質問です。 読者がコメントで彼のアイデアを共有してくれることを願っています。

Android デバイスに Linux をインストールするにはどうすればよいですか?

ということで、取り付け。

2つのオプションがあります - 彼らが言うように、ハードウェア上で本格的なインストールを行うことができます。 これは実際にはデバイスの点滅です。 同時に、メーカーが提供するデバイスのネイティブ機能が失われます。 そして、これは私たちが望んでいたものではないかもしれません。 たとえば、読者が興味を持っている UG 802 ミニコンピューターは、テレビの機能を拡張するために設計されたデバイスです。 テレビの HDMI ポートに直接挿入できるので、テレビをスマートに変えることができます。

幸いなことに、Linux をインストールする 2 番目の方法があります。デバイスのメイン オペレーティング システム (この場合は Android) 内に直接インストールします。 これにより、Android 内でいわゆる chroot 環境を実行できるようになります。 この場合、1 つのコア (Android) 上で並行して実行される 2 つの関連するオペレーティング システムを受け取ることになります。 そしてそれらを切り替えることができます。

このアプローチはスマートフォンやタブレットには便利ですが、UG 802 には適していない可能性があります。この場合、必要なオペレーティング システムをフラッシュする必要がある場合があります。 そして、これはすでにデバイスが損傷する可能性があるリスクです。

残念ながら、私にはそのような実験の経験がありません。 しかし、これについてはインターネット上に十分な情報があります。 勉強して、インストールしてみます。

したがって、モバイル デバイス ハッキングの世界について知り始めるためのリンクをいくつか提供します :)

ハッカーとは誰ですか?

はい、そうです、驚かないでください。これはまさにハッキングです。システムやプログラムの運用や設計に標準外の干渉を加え、それらを変更し、機能を拡張することです。 まさにこの言葉の本来の意味です。 そして、ほとんどの人が考え慣れているように、ハッカーはクラッカーやウイルス作成者ではありません。 これは何よりもまず研究者です。 はい、彼はシステムを破壊し、公開されることを意図していなかったものを明らかにします。しかし、彼はこれを危害を加えるのではなく学習するという目的で行っています。

https://xakep.ru/2012/10/22/android-tablet-linux-install/ - 最古の雑誌に掲載されたスマートフォンへの Linux のインストールに関する記事。これはまさにハッキングの本質を反映しています。

https://habrahabr.ru/post/221543/ - Habr、同様に古く、さらに有名なリソースです。 そして、ここの記事は新鮮で、chroot 環境の形式で Android 上に Arch Linux をインストールする経験を非常に詳細に説明しています。

https://geektimes.ru/post/44220/ - Giktimes - Habr の作成者によるサイトで、そこにはスマートフォンの Android 上に Debian をインストールするための詳細なマニュアルがありました。 この記事は非常に古いものですが、そのような操作に着手する前に理解する必要がある基本的な事項について触れています。 たとえこれが確立に役立たなかったとしても、知識を得るのに役立ちます。それなしでは、トピックをさらに発展させ、問題を解決することは不可能です。 このような記事を読んだ後は、より自信を持ち、そのトピックに関する情報、つまりインストール中に対処する必要がある特定の問題に関する情報をより具体的に検索できるようになります。

たとえば、このトピックに関するこれらの記事は、おそらく上記のサイトにある唯一の記事ではありません。 いつでも、このような専門リソースでこれに関する記事をさらに探すことができます。 4pda.ru で、モバイル デバイスへの Linux のインストールに関するトピックをいくつか見つけて調べました。 このような、 例えば

それが今日のすべてです。 しかし、このトピックの宴会を続けたいと思うことが常に起こるかもしれません:)

問題が発生した場合 (99% の確率で発生します:))、ここで質問することもできます。情報を収集し、一緒に問題を解決します。私もこれに非常に興味があります。

Android OS を実行する最初のスマートフォンのリリースから、スマートフォン上で本格的な Linux ディストリビューションを実行する方法を愛好家が学ぶまで、ほとんど時間がかかりませんでした。 現在、Android デバイスに Linux ディストリビューションをインストールする方法は広く知られており、Google Play リポジトリには Linux をインストールして実行するための自動システムも用意されています。 この記事では、スマートフォンで Linux を操作するために蓄積された経験をすべて蓄積し、これが必要な理由を説明し、Linux をスマートフォンやタブレットに移行するときに起こり得る落とし穴を回避する方法を示します。

何のために?

一見すると、原理的に小さな画面で動作するように設計されておらず、十分な精度のマニピュレータ (マウス) やキーボードを備えていないモバイル デバイス上でオペレーティング システムを実行しようとしている人がいることは奇妙に思えるかもしれません。 ただし、性急に結論を下すべきではありません。 Linux ディストリビューションは、コマンド ライン ユーティリティ、高度なエディタ、FTP および SSH サーバー、ネットワーキング ツール、アプリケーション開発ツールなど、古くから実績のあるツールのセットを含め、スマートフォンの所有者に非常に多くの利点を提供します。 ハードウェア キーボード (Motorola Droid など) を備えたスマートフォンでグラフィカル シェルなしで Linux を実行すると、Android 自体を離れることなく、外出先でもこれらすべてを非常に快適に使用できます。 すべてのツールがいつでも利用でき、スマートフォンはスマートフォンであり続け、電話を受けたり、インターネットラジオを聴いたりすることができます。

スマートフォンに Linux をインストールする場合の 2 番目の論点は、スマートフォンをポータブル ワークステーションとして使用でき、どの PC にも接続でき、SSH/Telnet クライアントまたは VNC/RDesktop クライアントを使用して端末に即座にアクセスできることです。 これは、定義上、Linux がインストールされているフラッシュ ドライブよりも優れています。第一に、マシンを再起動する必要がなく、第二に、データをやり取りする必要がないからです。 スマートフォンをコンピュータから切断すると、作業結果がすぐに表示されます。

最後に、Linux はタブレットで最大のメリットをもたらします。タブレットの画面では、グラフィカル環境で多かれ少なかれ耐えられる作業が可能であり、OTG ケーブル経由でマウスとキーボードを接続できるため、一般にタブレットをタブレットに変える機会が得られます。本格的なワークステーション。 同時に、タブレットとスマートフォンに Linux ディストリビューションをインストールすることに特に違いはありません。

どうやって?

Linux を Android に移植するのは非常に簡単で、ここでは Linux カーネルが重要な役割を果たします。 Linux ディストリビューションは、Linux カーネル上で動作するアプリケーションとライブラリのセットであり、Android 自体はほとんど変更されていない Linux カーネルに基づいているため、これらのアプリケーションやライブラリは Android 環境内で問題なく実行できます。 必要なのは、ARM プラットフォームへのポートがあるディストリビューションを見つけて (すべての Android デバイスの 99% が ARM で実行されていることを忘れないでください)、仮想ハードディスク上の ARM エミュレータを使用してインストールするだけです (つまり、ファイル)、このファイルをデバイスの SD カードにドロップし、ターミナルを開き、イメージをループバック デバイスとしてマウントし、内部で chroot します。 全て! これは、chroot 環境で FTP サーバーを実行するのと同じくらい簡単です。これは、シンプルで数十年に渡ってテストされた方法です。

Android 内で Linux ディストリビューションを実行することを決めた場合の唯一の障害は、グラフィカル環境です。 本格的なターミナル エミュレータの存在のおかげでコンソールへのアクセスに問題はありませんが、問題はグラフィカル アプリケーションから始まります。Android にはネイティブ X サーバーがなく、ディストリビューション自体内で通常の X サーバーを実行することは不可能です。グラフィックス アーキテクチャのグリーン ロボット サブシステムの根本的な違いによるものです。 標準の Linux フレームバッファを使用し、その上で X サーバーを実行できるにもかかわらず、それを使用する排他的権利は最初は高レベルの Android ライブラリに属しているため、Android の代わりに Linux ディストリビューションをロードする必要があります (これは完全に非現実的です)または回避策を考えています。

必要なモジュールの動作確認

イメージのマウントに必要なループバック デバイスと ext2/ext3 ファイル システムのサポートは、Android スマートフォンにインストールされているすべての Linux カーネルで利用できるわけではないことに注意してください。 lsmod | を使用してサポートを確認できます。 grep -e ループ -e ext2。

愛好家たちは、Android で利用可能な VNC クライアントを使用してデスクトップに「リモート」接続するという簡単な方法を使用して、この状況を克服しました。 chroot 環境内では、Xvnc X サーバーが実行され、すべてのアプリケーションがその制御下で実行されます。 ユーザーは、VNC クライアントをインストールし、ローカル アドレスを入力するだけで、画面に本格的なデスクトップが表示されます。

リモート デスクトップを使用する場合の唯一のボトルネックはパフォーマンスです。 ローカルで作業している場合でも、VNC は遅延なくスムーズなスクロールやウィンドウの移動を行うのに十分な適切なレベルのパワーを提供できません。 この問題はまだ解決できていません。Android グラフィック サブシステムを使用するネイティブ X サーバーを開発するプロジェクトはまだ非常に粗雑で、本格的なグラフィック環境を実行するために使用することはできません。 ただし、それらの使用を禁じている人はいません。 たとえば、Darkside Technologies Pty Ltd (goo.gl/ap3uD) の X Server は、単純なソフトウェアの実行に非常に適しています。

当初、Android 用 Linux は、すでにインストールされているシステムを含むイメージと、このイメージの接続方法と使用方法についての説明手順の形式でのみ存在していました。 その後、イメージを接続して Linux を起動するプロセスを自動化するスクリプトが登場しましたが、これにはある程度の頭脳作業も必要でした。 最後に、最近では、Google Play でインストーラー (goo.gl/RSA1j など) を入手できるようになりました。これにより、ディストリビューションの起動プロセスがある程度自動化されます。ただし、本質的には、これは依然として同じインストール ガイドですが、インタラクティブです。画像とスクリプトをダウンロードするための直接リンクが含まれています。

代替オプション

Android の代わりに Linux ディストリビューションをロードできることはすでに上で述べました。これにより、フレームバッファを使用してビデオ アダプタに直接アクセスでき、グラフィカル インターフェイスの操作が大幅に高速化されます。 ただし、これをスマートフォンで行うのはほとんど意味がありません。Linux は小さな画面ではメイン システムとしては不向きであり、電話を受けたりインターネットを使用したりすることができなくなります。 しかし、タブレットでは Linux はかなりまともに見えます。

通常、Linux ディストリビューションのいわゆるネイティブ バージョンは、最初に Android を実行するデバイスに次のようにインストールされます。 タブレットの内部 NAND ドライブに追加のパーティションが作成され、そこに Linux ディストリビューションがコピーされます。 U-Boot ブート ローダー (ほとんどのタブレットで使用される) は、このパーティションをブート パーティションとして使用するように構成されます。 その結果、タブレットは電源を入れた後、自動的に Linux システムを起動します。

Android を起動できるようにするため、U-Boot ブート ローダーは、Linux システムのパーティションがメインではなく「回復パーティション」(回復モード)として機能するように再構成されます。音量キーを押したままにします (デバイスをフラッシュし、さまざまな回復操作を実行するために使用されるものと同じです)。 この方法で、デュアルブート デバイスを取得できます。デフォルトでは Android、リカバリ モードで起動すると Linux ディストリビューションが使用されます。 リカバリ モード自体には、特別なツールを使用した場合にのみアクセスできます。

NAND メモリが本格的な Linux システムを収容するのに十分でない場合、その一部 (通常は /usr パーティション) が SD カード上のイメージまたはパーティションに移動されます。 ちなみに、メモリカード上の ext2 パーティションは、chroot 環境で実行される Linux のインストールにも使用できます。

ネイティブ Linux ディストリビューションのインストールは、chroot 環境で実行するディストリビューションをインストールするよりも困難ですが、タブレットと、キーボードとマウスを接続できる OTG ケーブルがある場合は、それだけの価値があります。

実践レッスン

すでに述べたように、ARM アーキテクチャに移植されたディストリビューションのみが Android の実行に適しています。 まず第一に、これらは Ubuntu と Debian であり、前者は、明らかな理由から、ロボット工学の間で非常に大きな関心を集めています。 Gentoo や、Backtrack などのいくつかの特殊なディストリビューションをインストールすることもできます。 最も典型的なケース、つまり自動インストーラーなどを使用せずに、標準スキームに従って Ubuntu をインストールするケースを考えてみましょう。


まず、ディストリビューションがインストールされたハードディスク イメージが必要です。 QEMU エミュレータを使用して自分で作成することもできますが、インストール手順は完全に標準的で一般的なものであるため、説明は省略し、アドレス goo.gl/9nvBi に誘導するだけです。 これは、LXDE グラフィカル環境を備えた Ubuntu 12.04 がプリインストールされているイメージを含むアーカイブです (電話/タブレットで Unity/Gnome を実行するのは賢明ではありません)。 アーカイブを解凍し、ubuntu.img ファイルをメモリ カードに配置する必要があります。

次に、イメージをマウントし、配布環境に chroot する必要があります。 これを行うには、ルート権限、ブロック ループバック デバイスをサポートするファームウェア、およびビジーボックスがインストールされている必要があります (マーケットで「ビジーボックス インストーラー」を検索してください。CyanogenMod にはデフォルトで含まれています)。 シーケンス:

  1. Android でターミナル エミュレータを開きます (そうでない場合は、マーケットからターミナル エミュレータをインストールできます)。 または、スマートフォン/タブレットをコンピュータに接続し、adb を使用してターミナルにアクセスします。 $ cd path-to-Android-SDK/platform-tools $ sudo ./adb shell

    この場合、「設定 -> 開発者向け -> Android デバッグ」のデバッグ モードを有効にする必要があることを忘れないでください。

  2. ルート権限を取得します。$su
  3. ブロック ループバック デバイスを作成し、それにディスク イメージを接続してマウントします。# mknod /dev/block/loop255 b 7 255 # mount -o remount,rw / # mkdir /mnt/ubuntu # mount -o ループ,noatime -t ext2 \ /sdcard/ubuntu.img /mnt/ubuntu

    イメージの内容は /sdcard/ubuntu ディレクトリに表示されるはずです。 これが事実であることを確認してください。

  4. ディストリビューションが機能するために必要なすべての仮想ファイル システムを接続します。# mount -t proc proc /mnt/ubuntu/proc # mount -t sysfs sysfs /mnt/ubuntu/sys # mount -o binding /dev /mnt/ubuntu/dev
  5. chroot 環境からネットワークに完全にアクセスできるように構成します。# sysctl -w net.ipv4.ip_forward=1 # echo "ネームサーバー 8.8.8.8" > /mnt/ubuntu/etc/resolv.conf # echo "ネームサーバー 8.8.4.4" >> /mnt/ubuntu/etc/resolv.conf # echo "127.0.0.1 localhost" > /mnt/ubuntu/etc/hosts
  6. chroot 環境に移動しましょう。# chroot /mnt/ubuntu

実際には、これでインストールは終了です。 これで、コンソール ソフトウェアの起動、システムの更新、ネットワーク サービスの開始など、通常のデスクトップ Linux システムで実行できることのほぼすべてを行うことができます。もちろん、ハードウェアやさまざまな特殊な擬似デバイスと直接対話する一部のソフトウェアは、うまくいかない。 また、作業完了後は仮想FSをアンマウントする必要があることを忘れないでください。

ここで、VNC プロトコルを使用してディスプレイおよび入力デバイスをエクスポートする Xvnc X サーバーをインストールして実行する必要があります。 TightVNCserver は提示されたイメージにすでに含まれており、構成も行われていますが、プロセスをよりよく理解し、発生した問題を解決できるように、インストールと起動のプロセスを詳しく説明します。

  1. TightVNCserver を更新してインストールします。# apt-getアップデート # apt-getインストールtightvncserver
  2. ファイル /root/.vnc/xstartup を作成し、そこに次の内容を書き込みます。#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid grey export XKL_XMODMAP_DISABLE=1icewm & lxsession

    ここで 3 番目のコマンドは、デバイスにキーボードが物理的に存在しないために発生する可能性のある問題を修正するために必要です。

  3. root 権限を持つ vncserver ラッパーを使用して Xvnc を起動します。# エクスポート USER=root # vncserver -geometry 1024x800

    最後のコマンドを実行すると、VNC サーバーにアクセスするためのパスワードの要求が画面に表示されます。「123」などの簡単なパスワードを指定することをお勧めします。 実質的に任意の解像度を設定できますが、デバイス画面の物理解像度と一致することが望ましいです。

  4. スマートフォンにAndroidVNCアプリをインストールして起動し、IPアドレスとポート5901を指定して接続します。 LXDE デスクトップが画面に表示されるはずです。

すべてのコマンドを手動で入力する手間を省くには、goo.gl/xSpK4 にある ubuntu.sh スクリプトを使用できます。 これと ubuntu.img イメージを SD カードの ubuntu ディレクトリに置き、sh ubuntu.sh コマンドでスクリプトを実行し、5 ~ 10 秒後に AndroidVNC を使用してデスクトップに接続します。 スクリプトはイメージを /data/local/mnt ディレクトリにマウントすることに注意してください。


Gentoo を ext2 パーティションにインストールする

そこで、ファイル システムを使用したイメージと、ループバック デバイスと chroot 環境を使用したトリックを使用して Ubuntu をインストールしました。 これは簡単に実行できることが判明し、スクリプトを使用すれば通常は非常に簡単ですが、さらに進んで、よりハードコアなディストリビューションを、イメージを使用せずにメモリ カード上の専用の ext2 パーティションにインストールしたらどうなるでしょうか? この方法により、ループバック デバイスをサポートしない一部のファームウェアとカーネルの問題を解決でき、さらに、すべてのルールに従ってインストールされた通常のディストリビューションを楽しむことができます。


Gentoo を実験システムとして取り上げてみましょう。 ext2 パーティションにインストールするには、少なくとも 2 GB の容量を持つメモリ カードと、busybox がインストールされた root 化されたスマートフォンが必要です。 一連の動作は次のとおりです。

  1. メモリカードからデータのバックアップを作成し、その上に少なくとも2GBの容量を持つ追加のパーティションを作成します。。 これは、任意のディスク パーティショニング プログラムを使用して実行できますが、SD カードを本来の目的で引き続き使用したい場合は、カードの先頭に FAT32 パーティションを作成して、それが最初のパーティションになるようにする必要があることに注意してください。 1 つ目はディストリビューションをインストールするための追加のパーティションです。2 つ目はパーティションです。
  2. SD カードのパーティションをフォーマットする:$ sudo mkfs.vfat /dev/sdc1 $ sudo mkfs.ext2 /dev/sdc2
  3. 電話機を手に取り、「設定 -> 電話機について」に移動し、どのプロセッサが搭載されているかを確認します。次に、goo.gl/PRfux ページに移動し、目的のアーキテクチャの stage3 をダウンロードします。たとえば、ARM v7 の stage3 は current-stage3-armv7a ディレクトリにあります。
  4. メモリ カードの ext2 パーティションをコンピュータにマウントし、生成されたアーカイブの内容をそこに解凍します。$ sudo mount /dev/sdc2 /mnt $ sudo tar -xxpf stage3-*.bz2 -C /mnt

    前のセクションの例に従って /etc/resolv.conf を編集するなど、設定と必要なものすべてを好みに合わせてすぐに編集します。

  5. ターミナル エミュレーターを起動し (または「adb シェル」を実行し)、必要なものをすべてマウントして chroot に移動します (Ubuntu の場合とほぼ同じ)。 # mount -o remount,rw / # mkdir /mnt/gentoo # mount /dev/ block/mmcblk0p2 /mnt/gentoo # mount -t proc proc /mnt/ubuntu/proc # mount -t sysfs sysfs /mnt/ubuntu/sys # mount -o binding /dev /mnt/ubuntu/dev # sysctl -w ネット。ipv4.ip_forward=1 # chroot /mnt/gentoo

デスクトップへのアクセスは Ubuntu と同じ方法で行われますが、電話機上で多数のソフトウェアを直接組み立てる必要がある点が異なります :)。 ただし、コンピュータ上でクロスコンパイル用の環境をセットアップすることはできますが、これについては別の記事で説明します。


ネイティブインストール

VNC サーバーを使用して Ubuntu を起動すると、「ネットワーク経由で」画像を送信するための VNC プロトコルのオーバーヘッドに関連して、その動作が遅いことに気づくでしょう。 この問題を回避するには、Ubuntu を Android の隣のメイン システムとしてインストールし、ビデオ アダプターを直接使用できるようにします。 残念ながら、これを行うための普遍的な方法はありません。 各デバイスは、それがインストールされている NAND メモリのさまざまなパーティション テーブル、さまざまなデバイス、およびそれらを操作するためのドライバーなど、独自の方法でユニークです。


幸いなことに、ディストリビューションのネイティブ バージョンをインストールするプロセスは、ロシア語のフォーラムで多くのデバイスについて詳しく説明されているため、手順を見つけるのは難しくありません。 ただし、このタイプのインストールのいくつかの機能にすぐに注意する価値があります。

  • 個別またはメインの NAND パーティション。 Linux ディストリビューションは、NAND メモリ内に事前に作成されたパーティションまたはメイン ブート パーティションにインストールできます。 前者の場合、ファームウェア開発者は通常、特別なスクリプトを使用して Android をロードするか、2 番目の場合はリカバリ モードで Linux ディストリビューションをロードするかのオプションを残します。 の代わりに Android では、ロボットをダウンロードできるようにするには、デバイスを再度フラッシュする必要があります。
  • デュアルブート機能。 Linux ディストリビューションが別のパーティションにインストールされている場合、開発者は Android を起動するオプションを残すことができます。 ただし、このダウンロードがどのように行われるか、つまりリカバリ モードを使用するか、通常のコンピュータから起動されるスクリプトを使用するかにすぐに注意する必要があります。 それでも、2 番目の方法は道路上では不便です。
  • ハードウェアのサポート。 Android ファームウェアのオリジナルの Linux カーネルには、本格的な Linux システムの動作に必要なドライバーがすべて含まれていますが、すべての Linux ファームウェアが単独ですべてを開始できるわけではありません。 Wi-Fi アダプターとタッチ スクリーンに問題が発生し、タッチに適切に反応しないことがよくあります。 したがって、ファームウェアをインストールする前に、起こり得る合併症についてよく読んでください。

いずれにせよ、Linux ディストリビューションのインストール中にすべてのデータが破壊されるという事実に備えてください。 これがないわけがない。

次は何ですか

元の Android システムの隣に Linux ディストリビューションをインストールすると、非常に便利な作業ツールになる可能性がありますが、現時点では「Android の中の Linux」は本格的なソリューションというよりは、おもちゃや友達に自慢するための手段として考えられています。 近いうちに、Android 向けに Wayland グラフィカル サーバーの本格的な実装が登場すると、状況は変わり始め、小さな画面に合わせたインターフェイスを備えたディストリビューションや、本格的な Linux アプリケーションが配布されることになるでしょう。通常の APK パッケージの形式。 また、「Ubuntu for Android」プロジェクトも忘れないでください。そのフレームワーク内で、Android 用 Ubuntu の公式ポートの作業が進行中です。これにより、スマートフォンを任意のモニターに接続されたポータブル システム ユニットとして使用できるようになります。