SDの2番目のセクションまたはシステムメモリカードのサブフォルダーにあるAndroid携帯電話にArchlinuxをインストールする

画像



みなさんこんにちは。 ボットブリューに関する記事はすでにあり、一般にボットブリューとは何か、またそれが与えるものについて説明しています。 要するに:

BotBrewプロジェクトは、ユーザーが遭遇する可能性のあるLinuxソフトウェアのインストールに関する問題の多くを解決し、外部のアプリケーションを受け入れるためにAndroidシステムを準備するように設計されています。


通常の古典的なBotbrewには独自のリポジトリがありますが、パッケージはほとんどないので残念です。 本当に台無しにしたい人は、debian emdebianリポジトリを使用するBorbrew-Basilを気に入るはずです。 しかし、今も彼と一緒に、すべてが悲しいです、なぜなら

2014年7月の時点で、Emdebianディストリビューションの更新は終了しました。 これ以上の更新や安定したリリースはありません。


かつてemdebianをインストールした人でさえ、現在飛行中です。 この投稿では、ルーティングされたArchlinux電話の配置方法について説明しますが、通常のループイメージではなく、ネイティブAndroidファイルシステムまたは2番目のSDパーティションに配置します。 メインコンピューターに、busyboxがインストールされ、USBデバッグが有効になっており、adbユーティリティを備えたルート化された電話があることを前提としています。



調理器具



最初に必要なことは、Linuxを置くフォルダーを作成することです。 2つのオプションがあります-/データセクションのフォルダーまたはメモリカードの別のext4セクション。 2番目のケースでは、セクションを何らかの方法で電話のメインFSにマウントする必要があります。 これは、たとえばLink2SDを使用して実行できます。 次に、/ data / sdext2にマウントされている2番目のSDパーティションを使用しているという事実から進みます。これを/ data / sdext2 / archフォルダーに配置します。

また、使用するプロセッサアーキテクチャのリポジトリを理解する必要があります。 私は、armv7lプロセッサを備えたQumo Quest 454を所有しており、 http: //mirror.archlinuxarm.org/arm/が登場しました。



電話をUSB経由で接続し、adb経由で電話に行き、急いで行きました。



最小限の開始オプションを収集します



最小限のインストールには、次のパッケージが必要です(ルートから実行します。パッケージのバージョンは時間が経つにつれて新しくなる可能性があります)。



mkdir -p /data/sdext2/arch/packages cd /data/sdext2/arch/packages wget http://mirror.archlinuxarm.org/arm/core/acl-2.2.52-2-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/attr-2.4.47-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/bash-4.3.030-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/bzip2-1.0.6-5-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/curl-7.39.0-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/e2fsprogs-1.42.12-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/expat-2.1.0-4-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/filesystem-2014.10-3-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/gcc-libs-4.9.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/glibc-2.20-4-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/gpgme-1.5.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/keyutils-1.5.9-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/krb5-1.13-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libarchive-3.1.2-8-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libassuan-2.1.3-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libgpg-error-1.17-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libidn-1.29-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/libssh2-1.4.3-2-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/lzo-2.08-3.1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/ncurses-5.9-6.1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/openssl-1.0.1.j-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/pacman-4.1.2-7-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/pacman-mirrorlist-20141208-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/readline-6.3.006-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/util-linux-2.25.2-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/xz-5.0.7-1-arm.pkg.tar.xz wget http://mirror.archlinuxarm.org/arm/core/zlib-1.2.8-3-arm.pkg.tar.xz
      
      







すべてがダウンロードされたら、解凍します。

 cd /data/sdext2/arch tar xvf packages/*.pkg.xz
      
      







Archlinuxの最小インストールのようなものを得ました。 それでは、システムフォルダー()を以前にマウントして、chrootを作成してみましょう。



 busybox mount -t proc none ./proc busybox mount -o rbind /dev ./dev busybox mount -t sysfs none ./sys busybox mount -t tmpfs none ./tmp busybox mount -o size=10%,mode=0755 -t tmpfs none ./run chroot . /bin/bash
      
      







すべてがうまくいけば、bashは最小限の環境から始まり、pacmanが利用可能になります。 プロセスを開始すると、システムは、LD_PRELOADで説明されているlibsuc.soを見つけることができないと呪いました。 この場合、LD_PRELOADをクリアするだけです:



 export LD_PRELOAD=
      
      







パッケージを整理する



だから、私たちはchrootにいます。pacmanとbashは私たちのために働いています。 まず第一に、何を整理しましょう。 DNSを登録し、リポジトリをロードします。



 echo "nameserver 8.8.8.8" > /etc/resolv.conf pacman -Sy
      
      







ここで、解凍したものを正式にインストールし、生活に最低限必要な残りのパッケージを追加し、ファイルシステムのインストールが私たちに勝った場所にdnsを返します。

 pacman -S base --force --noconfirm echo "nameserver 8.8.8.8" > /etc/resolv.conf
      
      







すべてがうまくいけば、systemdとArchlinuxコアを完全に取り除いたものになります。 chrootを終了し、マウントしたものをすべてアンマウントします。



 exit umount ./dev/pts umount ./dev/cpuctl umount ./proc umount ./sys umount ./tmp umount ./run
      
      







自動マウントおよびその他のバンを追加する



簡単でシンプルであることが判明したものを使用するために、botbrew-basilからinitをねじ込みます。 これは、必要なものがすべてマウントされているかどうかを確認し、環境内でchrootを実行するユーティリティです。 ボットブリューリポジトリからダウンロードする方法が見つからなかったため、今のところ、Yandex.Diskにリンクを投稿しました。 initを/ data / sdext2 / archにコピーし、実行用の属性を追加します。



adbシェルに入り、次のように入力します。

 /data/sdext2/init /bin/bash
      
      







その結果、必要なものはすべて一度マウントされ、新たに配置されたアーチにいることに気づきます。 ボーナスとして、initは、chrootのルートに/ storage、/ mnt、および/ androidフォルダーを作成し、元のファイルシステムの断片をマウントします。



LinuxをUSBケーブル経由ではなく、電話から直接使用するには、お気に入りの端末で/ data / sdext2 / init / bin / bashをシェルとして登録できます。 さらに、sshdなどを味わうユーザーを作成することもできます。 しかし、すべてのアーカイブは既にこれを行う方法を知っているので、ここでそれについては書きません。



ご清聴ありがとうございました。追加や修正は大歓迎です。



更新:再起動後に1回実行する小さなスクリプト

初期化スクリプト
 #!/bin/bash if [[ `whoami` != "root" ]] then sudo bash $0 $@ exit $? fi chmod 777 /tmp c=`ps afx | grep /usr/sbin/sshd | grep -cv grep` if [[ "$c" != "1" ]] then echo Strating sshd /usr/sbin/sshd else echo sshd already started fi if [[ ! -e /dev/fd ]] then echo Creating /dev/fd links ln -s /proc/self/fd /dev/fd ln -s /proc/self/fd/0 /dev/stdin ln -s /proc/self/fd/1 /dev/stdout ln -s /proc/self/fd/2 /dev/stderr fi if [[ ! -e /dev/net/tun ]] then echo Creating /dev/net/tun mkdir /dev/net ln -s /dev/tun /dev/net/tun else echo /dev/net/tun already exists fi
      
      






All Articles