既に指摘したように、デバイスにARM対応のchrootをインストールし、そのchrootにすべての必要なパッケージをインストールする必要があります。ただし、ホームディレクトリでこれを行うと、多くの貴重なスペースが無駄になります。代わりに、適切なLinux OS(Linux Mint 17およびUbuntu Trustyでテスト済み)で実行されているコンピューターを使用して、SDカードで実行できます。私はこれに関する情報を他のどこにも見つけられなかったので、古い質問への答えとしてここに入れました。
以下の手順では、jessieディレクトリーにdebian jessie chrootをインストールすることを想定しています。
デスクトップコンピューターでの画像ファイルの作成と入力
空の画像ファイルを作成する
現在の作業ディレクトリにIMAGE.imgという1GBのイメージを作成するには、次のようにします。
dd if=/dev/zero of=IMAGE.img bs=1G count=1
GBのBは省略されていることに注意してください。「if」は「入力ファイル」、「of」は「出力ファイル」、「bs」は「ブロックサイズ」を表します。
より効率的なコマンドがありますが、私が知る限り、特定のタイプのファイルシステムでのみ機能します。これは、SDカードまたはtempfsでも機能します。/ dev / randomまたは/ dev / urandomではなく/ dev / zeroを使用すると、時間がかかり、デバイス間でイメージを転送するのに時間がかかることに注意してください。
イメージ上にファイルシステムを作成する
ファイルシステムがなければ、電話機は画像にデータを保存できません。ファイルシステムがなければ、まだイメージをディレクトリにマウントすることはできません。ブロックデバイスにのみマウントしてください。
このbashコマンドは、次の空のループデバイスを変数に出力しますLOOP
。
$LOOP=$(sudo losetup -f)
次に、イメージをブロックデバイスに割り当てます。
sudo losetup $LOOP IMAGE.img
次に、ext4ファイルシステムを作成します。
sudo mkfs -t ext4 $LOOP
次に、ループデバイスからイメージをデタッチします。
sudo losetup -d $LOOP
command not foundエラーが表示された場合は、不足しているプログラムをインストールしてください。
画像ファイルをコンピューターにマウントしてアクセスします
次に、作業ディレクトリに一時ディレクトリを作成します。
mkdir jessie
画像ファイルIMAGE.imgをマウントします:
sudo mount -o loop IMAGE.img $(pwd)/jessie
このコマンドpwd
は、マウントに現在の作業ディレクトリへの絶対パスを指定することを確認します。
qemu-debootstrapを使用してイメージに新しいオペレーティングシステムを取り込む
次のステップは、qemu-debootstrapを使用して必要なファイルをダウンロードすることです。Ubuntuおよび派生OSの場合のようにqemu-debootstrapが利用可能な場合、これは簡単です。実行時にcommand not foundエラーが表示される場合
qemu-debootstrap --help
は、適切なパッケージをインストールしてみてください。これはUbuntuで次の方法で実行できます。
sudo apt-get install qemu-user-static
必要なすべてのファイルをダウンロードし、新しいOSを準備するには、次のコマンドを実行します。
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
1 jessie
つ目jessie
はOSバージョンを表し、2つ目はファイルをインストールするディレクトリを表します。残りの作業は電話で行う必要があるため、イメージをアンマウントできます。次のようにしてください:
sudo umount $(pwd)/jessie
qemu-debootstrapをインストールできない場合は、次のセクションを参照してください。
qemu-debootstrapを使用せずに新しいオペレーティングシステムでイメージを作成する
qemu-debootstrapを使用できる場合は、このセクションをスキップしてください。ただし、アーキテクチャにはネイティブのデブートストラップが必要です。これはarmhfであることを起こる場合は、単に上記のコマンドラインを使用しますが、置き換えるqemu-debootstrap
ことで
debootstrap
。そうでない場合は、このセクションに従ってください。
新しいOSに必要なすべてのファイルをダウンロードするには、次のコマンドを実行します。
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
これで、残りの作業を電話で行う必要があるため、イメージのマウントを解除できます。次のようにしてください:
sudo umount $(pwd)/jessie
電話に画像を転送する
次に、これからtarアーカイブを作成して、それを電話機にコピーするのが最適です。アーカイブがSDカードにあるか内部ストレージにあるかは関係ありません。次を使用してデスクトップにアーカイブを作成します。
tar -cvzf jessie.tar.gz IMAGE.img
ここで、携帯電話でsshサポートをオンにして、イメージをコピーします。代わりにUSBケーブルを使用して行うこともできます。sshサーバーは再起動のたびにリセットされるため、次の方法で電話でsshサービスを開始します。
sudo service ssh start
次に、次の方法で画像をコピーします。
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
変数COPYDIR
には、イメージが保存されるディレクトリが含まれます。このコマンドは、電話のユーザー名がphabletであり、電話のホスト名がubuntu-phabletであると想定しています。発行echo $USER
とecho $HOSTNAME
電話でそれぞれ確認できます。
これで、イメージを保存する場所にアーカイブを展開するだけで済みます。イメージを配置するディレクトリが変数に格納されていると仮定しますIMAGEDIR
。bashコマンドを使用してそこに画像を抽出します。
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
これで、アーカイブを削除できます。
rm $COPYDIR/jessie.tar.gz
電話で画像を仕上げて使用する
電話でsshサーバーをオンにしていない場合は、次の方法でオンにします。
sudo service ssh start
次に、選択したディレクトリ(この場合は「jessie」)にイメージをマウントします。
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
ここで、最初にchrootを入力します:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
コンピューターでqemu-debootstrapを使用できる場合は、すべて完了です。上記の2つのコマンドを使用して、chrootに接続します。そうでなければ、OSを適切にセットアップするために、chroot内に入ったら次のコマンドを実行する必要があります。
/debootstrap/debootstrap --second-stage
chrootにアクセスする方法の概要
上記の手順に従った場合、電話で次の簡単なスクリプトを使用してchrootにアクセスできるはずです。
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
端末アプリの防具の制限により、最初に電話から自分の電話にsshする必要があります。ターミナルアプリは特定の場所でのみバイナリを実行できますが、ホームディレクトリもSDカードもその中にはありません。ただし、sshサービスにはこのような制限はありません。