Yanıtlar:
Sorunuzu doğru anlamak ediyorum, size çalıştırdığınızda otomatik olarak root erişimi nasıl soruyorsun adb shell
sen kabuk gidip yazmak zorunda kalmamak için bu, su
telefonunuzda root olarak bir komut çalıştırmak için.
Bu, önyükleme bölümünüzdeki, çoğu özel ROM'un varsayılan olarak kök iznine izin verecek şekilde değiştirdiği bir bayrakla denetlenir. Kullandığınızda bir $
zamana bırakılırsanız adb shell
, iki kalıcı seçeneğiniz ve bir geçici seçeneğiniz vardır (yeniden başlatmanız durumunda yapışmaması geçicidir):
adbd
Kök izinleriyle cihazınızda yeniden başlatın2 Numara aslında o kadar zor değil, ama dikkatsizseniz biraz tehlikeli olabilir. Burada süreci açıklayan ve size yardımcı olacak bir kaç Perl betiği içeren bir wiki makalesi var . Bu talimatlar bir Linux / Unix ortamını varsayar. Bu talimatları Fedora Linux'ta şahsen kullandım ve size çalıştıklarını söyleyebilirim, ancak Mac'ler gibi diğer * nix ortamlarını bilmiyorum. Ayrıca benzer Windows yönergeleri de bilmiyorum, ancak Windows'taysanız bazılarını izlemeyi deneyebilirim. Farklı komutlar farklı bölüm tabloları kullandığından, komutlar telefondan telefona değişebilir.
Genel olarak konuşursak, geçerli boot.img'nizi telefonunuzdan çekmeniz, paketinden çıkarmanız, ramdisk'i çıkartmanız ve default.prop dosyasını bulmanız gerekir . Bu, bir metin düzenleyicide açmanız ve ardından değeri içeren satırı bulmanız gereken bir düz metin dosyasıdır ro.secure
. Satır diyorsa ro.secure=1
o zaman değiştirmeniz gerekir ro.secure=0
. Bundan sonra ramdisk ve boot.img paketlerini yeniden paketleyebilir, ardından telefonunuza aktarabilirsiniz. Yeniden başlattıktan sonra, koşmak zorunda kalmadan #
yaptığınız her seferinde bir komut ile karşılaşacaksınız .adb shell
su
Alternatif olarak, özel bir ROM kullanıyorsanız ancak bu değişikliği içermiyorsa, ROM'u açıp yukarıdaki adımları kullanarak içerdiği boot.img dosyasını değiştirebilirsiniz. Ardından ROM'u yeni değiştirilmiş boot.img ile fermuarlayabilir ve zip dosyasını normalde olduğu gibi flaş edebilirsiniz.
Bu muhtemelen söylemeden geçiyor, ama bunu yaparken dikkatli olun . Önyükleme bölümünüzle uğraşmak telefonunuzu kolayca kolayca mahvedebilir ve sizi HBoot ile kurtarmaya zorlayabilir. Genişletilmiş Fastboot komutlarını kullanabilmenizi ve kurtarma işlemini gerçekleştirebilmenizi sağlamak için Fastboot'u test etmenizi şiddetle tavsiye ederim. Bu, modelinize göre biraz farklılık gösterir, ancak çoğu telefonda, telefonu yeniden başlatmak için çalıştırılabilecek bir tür masaüstü yazılımı bulunur.
Üçüncü seçenek, birçok durumda adbd
cihazınızda kök ayrıcalıklarıyla yeniden başlatmanızın mümkün olmasıdır . Bir olasılık adb root
bir PC terminalinden çalıştırmaktır , ancak bu tüm ROM konfigürasyonlarında çalışmayacaktır (ROM bir "userdebug" olanı olarak inşa edilmelidir). Ayrıca Chainfire'ın adbd güvensiz uygulamasını da deneyebilirsiniz . Bu, yeniden başlatma boyunca geçerli olmayacağından, uygulamayı adb root
yeniden başlatmanız veya telefonunuzu yeniden başlattığınızda tekrar kullanmanız gerekir .
adbd
telefonda varsayılan olarak sadece kök iznine izin veriyor . Android ekibinin bir üyesinden bunu ima eden bir yazı var , ancak açıkça söylemedi. AOSP'ye verilen bu taahhüt , yalnızca adbd
başlangıçta kontrol eden bir bayrak olduğu anlamına gelir (onu kaynağın başka bir yerinde göremiyorum). Bahsettiğim gibi, gördüğüm özel ROM'ların çoğunluğu (CM dahil) 0 olarak ayarlamıştı.
adb root
Adbd'i otomatik su modunda yeniden başlatma komutunu keşfettim , görünüşe göre buna güveniyor. Yine de sadece bir bayrak olduğu konusunda haklı olduğunu düşünüyorum.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. Bu arada, Kindle Fire için BurritoRoot'un ilk versiyonunun çalışması, IIRC.
Eğer telefonunuz köklü ise, "su -c" komutuyla komutları çalıştırabilirsiniz.
Telefonların ürün bilgilerini almak için build.prop dosyasındaki bir cat komutunun bir örneği.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Bu root izni çağırır ve komutu '' içinde çalıştırır.
5 uçtan alıntılara dikkat edin; bu, TÜM son tekliflerinizi kapatmanız veya bir hata almanız gerekir.
Açıklama için format bu şekildedir.
adb shell "su -c '[your command goes here]'"
EXACTLY komutunu, kabukta çalıştırırken normalde yaptığınız gibi girdiğinizden emin olun.
Bir deneyin, bunun yardımcı olacağını umuyorum.
Basitçe adbd Insecure'u kurun .
Neden root olarak kaçmaya çalışıyorsun? ADB kabuğunu kök ile çalıştırmak istediğinizi ancak ADB kabuğunu kullanmak istemediğinizi mi söylüyorsunuz? Açıklayabilir misin?
Uygulama kök erişimi istiyorsa, telefonunuzdaki SuperUser uygulaması izin vermeli veya vermemelidir. Telefonunuzu kurduğunuz işlem bir SuperUser uygulaması içermelidir.
adb shell ps
ya da adb shell
ve sonra ps
çalışan işlem listesini almak için yapabilirsiniz. Bu yüzden bazı şeyler kök erişimi gerektiriyor, eskisi gibi yapabilmek istiyorum.
Alternatif olarak, komut dosyanızı telefona yazabilir ve adb'nin çalıştırmasını sağlayabilirsiniz, örneğin:
adb shell sh /sdcard/myscript.sh
Betik, sizin müdahaleniz olmadan kendini kaldırabilir (SuperUser'ın onay hatırlayacak şekilde ayarlandığı varsayılarak), örneğin:
su
pm setInstallLocation 1
Bunu telefonumda başarılı bir şekilde yaptım, tek sorun adb kabuğu oturumunu nasıl temiz bir şekilde sonlandıracağımı tam olarak çözememekti. Windows komut istemine geri dönmek için Windows kabuğumda Ctrl-C'ye ihtiyacım var - aksi halde adb sadece #
istemde oturuyor ve girişi kabul etmiyor.
onarım ev düğmesi sorunu başarısızlık için kullanıyorum
adb aygıtları
adb kabuğu su commands
veya
adb root shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "Güvenli INSERT (isim, değer) DEĞERLER ('device_provisioned', '1');"
adb-server öldürmek
Ayrıca, 'sh' kısmındaki suid bitini ayarlayabilirsiniz. BusyBox kullanıyorum, böylece talimatlar kurulumunuzla eşleşmeyebilir:
ve sizden kök istemi almalısınız
mksh