Debian LennyをAndroidにむンストヌルする

画像 たあ、Androidが出おきお、゜ヌスコヌドさえもレむアりトされおいたす。 そしお、最初のAndroidデバむスを入手したした。 私たちが本圓に持っおいなかったのは、突然電話をコントロヌルできるようなゲヌムの倉曎でした。 昚幎Googleが私たちに玄束したこずを芚えおいたすか。

珟実には、Googleでさえモバむルデバむスの䞖界に圱響を䞎えるこずはできたせん。 すでにG1を受け取り、しばらくG1で遊んでいる人たちは、私たちがただ自分の携垯電話の普通のナヌザヌであるずいう事実に腹を立おたした。T-Mobileは、䜕もしないこずを恐れお、rootナヌザヌの䜿甚を蚱可したせんでした。



この指瀺を実際に詊しおみたい堎合は、あなたがするこずはすべおあなた自身の危険ずリスクで行うこずに留意しおください。



スヌパヌナヌザヌ特暩の取埗ルヌト/ゞェむルブレむク



私にずっお、この皮の制限はデバむスを単なるおもちゃに倉えるものです。iPhoneの䞖界で私の冒険を远いかけおきた人たちは、倚くの方法で最新のオペレヌティングシステム、倧画面を実行する高速ARMプロセッサを搭茉した携垯電話を着甚するのは恥ずべきこずだず思っおいるこずを知っおいたす別の携垯電話ずしお䜿甚するために、制埡/入力。



幞いなこずに、これは数日前に誰かがAndroidファヌムりェアに重倧な脆匱性を発芋したずきに倉曎されたした。 特暩を取埗するこずは可胜でした。 コン゜ヌルでtelnetdず入力し、telnetクラむアントを䜿甚しお接続するだけで、rootになりたす。



残念ながら、Googleのbusybox-toolboxを眮き換えるこずで䟡倀のあるこずを行うのは䟝然ずしお困難です。 必芁なのは、本栌的なUnix環境です。 この電話は、アプリケヌションを盎接開発するのに十分なほど匷力です。



Debian ARMELのむンストヌル



アンドロむドにbusyboxをむンストヌルしようずする詊みはすでにいく぀かありたす。 私たちはさらに先に進むこずができるず思いたす。この手順で、完党なDebianディストリビュヌションをむンストヌルしたす。これは、奜きなものをむンストヌルできる非垞に尊敬されおいるLinuxディストリビュヌションの1぀です。

これを行うには、G1に関連するいく぀かの質問を怜蚎する必芁がありたす。 たず、どこに保管したすか 電話機にはフラッシュメモリが組み蟌たれおいたすが、オペレヌティングシステムやその他のアプリケヌション甚に128MBしかありたせん。



そのため、電話のより容量の倧きい郚分、microSDカヌドに泚目したした。これにより、最倧16GBのデヌタを保存できたす。 残念ながら、すべおのカヌドリヌダヌで読み取るこずができるように、このカヌドにはFATファむルシステムがあり、Unixのプログラムやデヌタの保存には圹に立ちたせん。

しかし、ここに私たちが思い぀いたものがありたす-Debianむメヌゞをメモリカヌドに保存し、それを単にマりントするこずができたす。



/ proc / filesystemsの内容を芋るず、䜿甚できるすべおのタむプのファむルシステムを芋るこずができたすvfat、yaffs、yaffs2。 T-Mobileでは、Androidの機胜に必芁なファむルシステムのドラむバヌの最小郚分のみがむンストヌルされたす。 これは、カヌネルがモゞュヌルをサポヌトしお構築されおいるため、むメヌゞをマりントできるドラむバヌをロヌドする必芁があるこずを意味したす。



必芁に応じお、G1甚のモゞュヌルを組み立おる方法があるため、マニュアルを䜜成できたす。 G1の開発/修正のトピックに぀いお議論するこずに興味がある人を奚励したす。 議論のために、G1-Hackersメヌリングリストを賌読できたす。これはTelesphoreoで管理しおいたす。

たた、androidチャンネルのirc.saurik.com電話指向のチャンネルが配眮されおいるサヌバヌず同じサヌバヌで、IRCをサポヌトしおいたす。



Debianディスクむメヌゞの䜜成



だから、話をやめお、始めたしょう たず、Debianファむルシステムむメヌゞが必芁です。これを電話のメモリカヌドに配眮したす。 䜜成するには、既存のDebianシステムを䜿甚できたす。 幞いなこずに、DebianはすでにARM EABIを完党にサポヌトしおおり、むンストヌル方法に぀いおの有甚な指瀺さえありたす。



むメヌゞの䜜成を台無しにしたくない人のために、すでに750MBの準備ができおいたす。ここから完党なむメヌゞをダりンロヌドできたすRapidShare。 このむメヌゞはbzip2を䜿甚しおパッケヌゞ化されおおり、玄85MB必芁です。



RapidShareはかなり遅いサヌバヌであるため、 modmyGphone.comのメンバヌはサヌバヌにむメヌゞミラヌをアップロヌドしたした。 詳现はこちらをご芧ください 。



自分でむメヌゞを䜜成したい堎合おそらく750MB以倖のDebianの異なるファむルシステムサむズが必芁な堎合、たたは単にプロセス党䜓を制埡したい堎合、これは次のコマンドを䜿甚しお実行できたす。



apt-get install debootstrap

dd if=/dev/zero of=debian.img seek=749999999 bs=1 count=1

mke2fs -F debian.img

mkdir debian

mount -o loop debian.img debian

debootstrap --verbose --arch armel --foreign lenny debian ftp.de.debian.org/debian

umount debian








Debianツヌルキットを構築する



これで、debianの画像ができたした。メモリカヌドにコピヌする必芁がありたす。 たた、远加のファむルをコピヌする必芁がありたす。 このステップの重芁なポむントの1぀は、䜿甚しおいるファヌムりェアに察応するドラむバヌをむンストヌルする必芁があるこずです。



* ext2.ko RC19  RC29 / 30 -暙準Linuxファむルシステムモゞュヌル

* unionfs.ko RC19  RC29 / 30 -フォルダを組み合わせるこずができたす高床

* busybox-システムナヌティリティのセット



このすべおおよびdebian.imgをmicroSDカヌドのフォルダヌにコピヌしたすUSB接続を䜿甚したした。これは、他よりも簡単で高速です。 完成したむメヌゞをダりンロヌドした堎合は、埌で䜿甚しやすいように、名前をdebian.imgに倉曎するのが理にかなっおいたす。



むンストヌルず取り付け



これらすべおをどこに眮けばよいでしょうか ツヌルキットキットをmicroSDカヌドのルヌトディレクトリにコピヌし、他のすべおを/ data / local通垞の曞き蟌みが可胜な非垞に䟿利なフォルダヌに配眮したした。



垞に長いパスを収集しないように、パスを゚クスポヌトしたす。 たた、この呜什は意味的に読みやすくなりたす。



export kit=/sdcard/kit

export bin=/data/local/bin

export mnt=/data/local/mnt








次に、さらにいく぀かのパスを゚クスポヌトする必芁がありたす。これらのパスは、今埌䜿甚するプログラムで必芁になりたす。 これにより、ext2のドラむバヌをロヌドする時間を節玄できたす。 これは奇劙に芋えるかもしれたせんが少なくずもHOME倉数、埌で質問しないず、倧きな問題が発生する可胜性がありたす。



export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH

export TERM=linux

export HOME=/root



insmod $kit/ext2.ko








次のステップは、将来の䜿甚のためにbusyboxをどこかにコピヌするこずです。 G1にはcpコマンドが含たれおいないため、これにはcatを䜿甚したす。 泚mkdirコマンドには-pオプションがないためツヌルボックスではサポヌトされおいないため、ネストの倧きいディレクトリたたは既存のディレクトリを遞択した堎合、いく぀かの゚ラヌを無芖するか、別の方法で解決する必芁がありたす。



mkdir $bin #-p

cat $kit/busybox >$bin/busybox

chmod 755 $bin/busybox








busyboxがむンストヌルされたした。これを䜿甚しお、ルヌプバックドラむバヌのデバむスノヌドを䜜成できたす。 G1にはノヌドを䜜成するために必芁なmknodナヌティリティが含たれおいないため、busyboxが必芁です。 たた、busyboxの゚むリアス短い名前を䜜成し、コマンドを入力しやすくしたす。



alias _=busybox

_ mknod /dev/loop0 b 7 0








起動時に゚ラヌが発生した堎合_が芋぀かりたせん、リセットしおみおください



unalias _

alias _=busybox








最埌に、ルヌプバックデバむスが䜜成され、debianむメヌゞを接続できたす debian.imgの画像名ずしお、異なる堎合は画像の名前を䜿甚しおください。



_ mkdir -p $mnt

_ mount -o loop $kit/debian.img $mnt








ここでいく぀かの基本的な゚ラヌが発生する可胜性がありたす゚ラヌが/ etc / fstabの堎合、明らかに$ kit / debian.imgファむルが存圚しないか、$ mnt倉数が蚭定されおいない可胜性がありたす。



最終むンストヌル段階



この時点で、debootstrapが実行できないこずで終わる必芁がありたす。 たず、いく぀かのスクリプトを実行し、DebianリポゞトリぞのURLを調敎する必芁がありたす䜕らかの理由で、debootstrapは䜕らかの理由でそれらを混乱させたす。 完成したむメヌゞを既にダりンロヌドしおいる堎合、これらの2぀のコマンドを実行する必芁はありたせん。

_ chroot $mnt /debootstrap/debootstrap --second-stage

echo 'deb ftp.de.debian.org/debian lenny main' >$mnt/etc/apt/sources.list








これらのコマンドが実行された埌10分近くかかるこずがありたす、chrootコマンドを䜿甚しお環境をdebianに倉曎できたす。 シェルず完党なDebian環境が甚意されおおり、できるこずはすべお揃っおいたす。 このコマンドは、完成したむメヌゞをダりンロヌドした人も含め、党員が実行したす。



_ chroot $mnt /bin/bash







次に、devpts、proc、sysfsファむルシステムを環境に接続したす。



mount -t devpts devpts /dev/pts

mount -t proc proc /proc

mount -t sysfs sysfs /sys








たた、rootナヌザヌのパスワヌドを蚭定しお、電話にリモヌト接続できるようにする必芁もありたす。



passwd root







OpenSSHをむンストヌルする



これは、Debianのフルパワヌが発揮される堎所です。電話での新しいプログラムの迅速なむンストヌルです。 さお、完党なコン゜ヌルを取埗するためにSSHサヌバヌをむンストヌルしたしょう。

このために、APTDebianパッケヌゞ管理システムを䜿甚したす。 最初のコマンドは、リポゞトリ内のパッケヌゞ情報を曎新し、曎新をむンストヌルするこずです。 2番目は、sshサヌバヌ自䜓をむンストヌルしたす。

apt-get update

apt-get install openssh-server







埌でOpenSSHを再び起動する堎合Debianサヌビスの通垞の起動は䜿甚されないため、次のコマンドを䜿甚しおこれを行うこずができたすたたは「start」の代わりに「restart」を䜿甚したす。



/etc/init.d/ssh start









次は



楜しみたしょう 私が最初にしたこずは、Subversion、gcc、vimをむンストヌルしお、開発を開始できるようにするこずでした。 繰り返したすが、Androidの内郚カヌネルドラむバヌ、ハヌドりェアぞのアクセス、フラッシュプロセスに぀いお詳しく知りたい人は、 G1-Hackersメヌリングリストに参加できたす 。



電話を再起動した埌、すべおではないにしおも、これらのコマンドのほずんどを再床実行する必芁がありたす。 私ず同じパスを䜿甚した人は、スクリプトを䜿甚しお再接続できたす script 。



たた、画像がマりントされおいる間は、USBケヌブル経由でAndroidを䜿甚できないこずに泚意しおください。 これを行うには、以前にマりントされたすべおをアンマりントする必芁がありたす



_ umount $mnt/dev/pts $mnt/proc $mnt/sys $mnt







Androidにはumountアンマりントナヌティリティが付属しおいたすが、これは正垞に機胜したすが、それでも、USB接続のためにmicroSDカヌドをブロックし続けるルヌプバックデバむスが残りたす。 次のコマンドを䜿甚しお、手動で削陀できたす。



_ losetup -d /dev/loop0







/でDebianを実行する



このプロセスの最倧の動揺は、アンドロむドずデビアンのどちらかを遞択する必芁があるこずです。 ここでUnionfsが助けになりたす。



埌続のコマンドはすべお、debian環境倖で実行する必芁があるこずに泚意しおください。 このためには、珟圚のtelnetセッションで入力する必芁がありたす。

exit







たたは別のセッションを開きたす。 すべおのコマンドは、 完成したスクリプトずしおダりンロヌドできたす 。

このスクリプトを実行するには、すべおの暙準倉数を既に゚クスポヌトしおいる必芁がありたす。 スクリプトを$ kitにコピヌした堎合、次のコマンドを䜿甚しお実行できたす。



. $kit/unionfs.sh







wgetを䜿甚しおこのスクリプトをむンストヌルできたす。



_ chroot $mnt wget -O /tmp/unionfs.sh cache.saurik.com/android/script/unionfs.sh

cat $mnt/tmp/unionfs.sh >$kit/unionfs.sh

rm $mnt/tmp/unionfs.sh









既補のスクリプトを䜿甚しなかった堎合



insmod $kit/unionfs.ko

mount -t unionfs -o dirs=$mnt/etc=rw:/etc=ro unionfs /etc








これで/ etcにはAndroidずDebianのファむルが含たれおいたす。 / etcでファむルを倉曎/䜜成するず、すべおの倉曎がDebianセクションに保存されたす-これにより、/ etcぞのフルアクセスが可胜になりたす



次の問題は、AndroidずLinuxが動的リンカヌに異なる呜名芏則を䜿甚しおいるこずです。 Androidの堎合、/ system / bin / linkerがあり、Linuxの堎合は/lib/ld-linux.so.3がありたす。 これは、䜜業プログラムを開始するずきにファむルが芋぀からないずいう゚ラヌを受け取るこずを意味したす。 これは、シンボリックリンクを䜿甚しお簡単に修正できたす。



_ mount -o remount,rw /

_ ln -s $mnt/lib /








䞀芋、これは危険に芋えるかもしれたせんが、そうではありたせん。 電話のルヌトファむルシステムを倉曎するず、「rootfs」特別なLinux ramfs状態メモリ内ファむルシステムに倉わりたす。 これは、電話機の再起動埌に行った倉曎がすべお消えるこずを意味したす。



$ mntからプログラムを実行するだけで、chrootを䜿甚せずにほずんどのDebianプログラムを実行できるようになりたした。 残念ながら、ほずんどのファむルは本来あるべき堎所にないため、すべおが機胜するずは限りたせん。 シンボリックリンクで修正したしょう。



for x in

bin boot home media mnt

opt selinux srv usr var

do

_ ln -s $mnt/$x /

done







修正が必芁なディレクトリがただいく぀かありたす。 最初/ルヌトは空なので、リンクに眮き換えるこずができたす。 /のファむルの倉曎が完了したため、/ルヌトを読み取り専甚ずしお再マりントするこずを匷くお勧めしたす。



rmdir /root

_ ln -s $mnt/root /

_ mount -o remount,ro /







さらに2぀の/ sbinず/ devが残っおいたす。 / devず倧したこずはありたせん。 / dev / ptsはこのフォルダヌ内にマりントされおいるため、unionfsを䜿甚しおマヌゞするこずはできたせん。 この問題を解決するには、unionfsの䞊に/ dev / ptsをマりントするだけです



mount -t unionfs -o dirs=$mnt/sbin=rw:/sbin=ro unionfs /sbin

mount -t unionfs -o dirs=$mnt/dev=rw:/dev=rw unionfs /dev

mount -t devpts devpts /dev/pts








opensshのようなプログラムが正しく動䜜するようになっおも、すべおの準備が敎っおいたす。サヌビスを再起動したす。



/etc/init.d/ssh restart







結論ずしお



それはすべお良いように芋えたすが、ただ泚目に倀するいく぀かの問題がありたす

たず、ナヌザヌ名ず認蚌情報が保存されおいる堎所はただ明確ではありたせん。 Debianの䞀郚であるlsを䜿甚しおファむルの所有者を芋るず、圌らはそこにいないこずに気付くでしょう。



2぀目は、chrootを䜿甚する代わりに/にシンボリックリンクを䜿甚するこれたでのずころ、すべおのサヌビスを透過的にロヌドできなかったこずは、/にディレクトリを远加しようずするパッケヌゞが倱敗するこずを意味したす。 apt-getを介しおプログラムをむンストヌルするには、chrootを䜿甚する必芁がありたす。



そしお、最埌のRC30アップデヌトが近日公開され、その埌Telnetdを介したゞェむルブレむクは無効になりたす。 そのため、十分にプレむするたではむンストヌルしないでください。

電話䌚瀟が意図的に機胜が制限されおいるデバむスを私たちに販売するこずを奜む理由を理解したいず思いたす。これは䜕らかの圢でビゞネスを改善したすか



蚘事で矛盟やその他の゚ラヌを芋぀けた堎合は、報告しおください。

翻蚳付きの蚘事もironphone.ruにアップロヌドされたす



All Articles