adb shell su çalışıyor ancak adb kökü çalışmıyor


93

Kilitli olmayan Galaxy S3'ümü (SGH-T999) köklendirdim

Şimdi, adb rootWindows Komut İstemi'nden çalıştırmaya çalışıyorum , ancak adbd cannot run as root in production buildshata alıyorum. Yani, kontrol ettiğim ilk şey telefonumun gerçekten köklü olup olmadığı oldu?

Bu yüzden aşağıdakileri denedim:

Komut istemini aç

$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**

Ancak bunu adb rootyaptığımda adbd cannot run as root in production buildshata alıyorum. Bu yüzden, yukarıda yaptığımın ötesinde bazı ek şeyler yapmam gerekebileceğini düşündüm. Aşağıdaki SO sorularındaki tüm çözümleri denedim:

Yukarıdakilerin hiçbiri benim için işe yaramadı. Tek yaptıkları, KABUK İÇİNDE KÖK erişimini sağlamaktır. adb rootKabuğa girmeden çeşitli adb komutlarını çalıştırabilmek için çalışmak istiyorum .


5
android> 4.3'te çalışmaz. su eksik.
drdrej

Yanıtlar:


35

Tasarım By adb rootgelişiminde komut işler yalnızca oluşturur (yani engve userdebughangi sahip ro.debuggable=1varsayılan). Bu nedenle, köklü cihazınızda adb rootkomutu etkinleştirmek için satırı aşağıdaki dosyalardan birine eklemeniz yeterlidirro.debuggable=1 :

/system/build.prop
/system/default.prop
/data/local.prop

Varsayılan adb shellolarak başlamak istiyorsanız root- o zaman da ekleyin ro.secure=0.

Alternatif olarak değiştirilmiş adbdikili kullanabilirsiniz (bunu kontrol etmez ro.debuggable)

Gönderen https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp

#if defined(ALLOW_ADBD_ROOT)
// The properties that affect `adb root` and `adb unroot` are ro.secure and
// ro.debuggable. In this context the names don't make the expected behavior
// particularly obvious.
//
// ro.debuggable:
//   Allowed to become root, but not necessarily the default. Set to 1 on
//   eng and userdebug builds.
//
// ro.secure:
//   Drop privileges by default. Set to 1 on userdebug and user builds.

9
Yukarıdakilerin çalıştırılabilir dosyasını nereden derleyebilirim?
Waqas Bukhary

3
Ro.debuggable ve ro.secure için yeni değerleri belirttiğiniz dosyalara ekliyorum, ancak yine de her yeniden başlatmada üzerine yazılıyor ve değişikliklerin herhangi bir etkisi olmuyor.
Patryk Czachurski

31

Bazı geliştirici dostu ROM'larda , Ayarlar> Geliştirici seçeneği> Kök erişimi'nde Kök Erişimini etkinleştirebilirsiniz . Bundan sonra müsait olur. Maalesef piyasadaki çoğu hisse senedi ROM'u için çalışmıyor.adb root


64
Geliştirici seçeneklerinde bir "Kök erişim" seçeneği görmüyorum.
Amalgovinus

2
@Amalgovinus Sanırım hangi odayı kullandığınıza bağlı. :)
NgaNguyenDuy

@NgaNguyenDuy Lütfen hangi rom'u kullandığınızı belirleyebilir misiniz?
Lobster Fighter

22

Öykünücüyü köklendirmeye çalışırken bu sorunla karşılaştım, bunun üzerinde Google Play bulunan Nexus 5x emülatörünü çalıştırdığım için olduğunu öğrendim. Google play'e sahip olmayan ve adb rootsizin için cihazı köklendirecek farklı bir emülatör oluşturdu . Umarım bu birine yardımcı olur.


her iki emülatörü nasıl ayırt edebiliriz?
Sanjay

@Sanjay Android Virtual Device Manager'ı açtığınızda, Play Store için bir sekme görmeli ve root yapmaya çalıştığınız cihazda play store simgesinin bulunmadığından emin olmalısınız.
Andrew Steinmetz

1
2020, bu bana yardımcı oldu, ancak
rootlu

8

Abd shell'de su moduna girmek için kullanıyorum

adb shell "su"


2
Mac OS'de "/ system / bin / sh: su: not found" hatası alıyorum. Herhangi bir öneri lütfen?
Sachin G

@SachinG Belki yanlış tür alıntılar kullandınız? bunu çalıştırmayı deneyinadb shell "su -c whoami"
gkpln3

@ gkpln3 Hala aynı hatayı alıyorum. / system / bin / sh: su: not found
Sachin G

8

Köklü bir Samsung Galaxy Trend Plus'ım var (GT-S7580).

'Adb root' çalıştırmak bana aynı 'adbd, üretim yapılarında kök olarak çalışamaz' hatası veriyor.

Geliştirici Seçenekleri -> Kök erişimi olan cihazlar için, cihaza adb root erişimi sağlamak için "Yalnızca ADB" yi seçin ( NgaNguyenDuy tarafından önerildiği gibi ).

Ardından , ADB aracılığıyla bir komut dosyasını kök olarak başlatın bölümündeki çözüme göre komutu çalıştırmayı deneyin . Benim durumumda, sadece 'netcfg rndis0 dhcp' komutunu çalıştırmak istedim ve bunu şu şekilde yaptım:

adb shell "su -c netcfg rndis0 dhcp"

Lütfen bu şekilde çalıştırırken herhangi bir hata yapıp yapmadığınızı kontrol edin.

Hala çalışmıyorsa, cihazı doğru şekilde köklendirip köklendirmediğinizi kontrol edin. Hala şansınız yoksa, 'adb root'un çalışması için Cyanogen Mod gibi özel bir ROM yüklemeyi deneyin .


7

Boot.img / sbin / klasöründeki adbd ikilisini uygun olanla değiştirmeniz gerekir. Ayrıca bazı default.prop düzenlemeleri yapmanız gerekecektir.

Samsung, bunu diğer satıcılardan daha zor hale getiriyor gibi görünüyor. Deneyebileceğiniz bazı adbd ikili dosyalarım var, ancak boot.img dosyasını yeni ikili dosyayla yeniden derleme ve yeniden derleme bilgisine ihtiyaç duyacak. Ayrıca, kilitli bir önyükleyiciniz varsa ... bu olmayacak.

Ayrıca Chainfire, oyun mağazasında adbd root izni verecek bir uygulamaya sahiptir: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en

Son olarak, SU izinleriyle bir Windows komut dosyası yazmaya çalışıyorsanız, bunu aşağıdaki komut stilini kullanarak yapabilirsiniz ... Ancak, en azından (telefonda) SU izinlerini ilk çalıştırıldığında vermeniz gerekecektir. .

adb shell "su -c ls" <- su haklarına sahip çalışma dizini. adb kabuğu "su -c echo anytext> /data/test.file"

Bunlar sadece bazı örnekler. Özellikle neyi başarmaya çalıştığınızı belirtirseniz, daha spesifik tavsiyeler verebilirim

-koşucu


5

adbdroot erişimi sağlamak için bir derleme bayrak / seçeneği vardır: ALLOW_ADBD_ROOT=1.

Android 9'a kadar: adbdCihazınız bu işaret olmadan derlenmişse, başlatırken her zaman ayrıcalıkları bırakır ve bu nedenle "adb root" hiç yardımcı olmaz. Ben yama vardı aramaları setuid(), setgid(), setgroups()ve yeteneği benim e-kitap okuyucu üzerinde kalıcı köklü adbd almak için ikili kendimi dışarı düşer.

Android 10 ile bu durum değişti; telefonun / tabletin kilidi açıldığında ( ro.boot.verifiedbootstate == "orange"), her durumda adb root modu mümkündür.


1

Gerçekten ADBçalıştırmanız gerekiyorsa root, en hızlı ve en kolay yol Android Custom ROM'ları yüklemektir ve en popüler olanı CyanogenMod, Root Accessroot erişimi vermeyi seçebileceğiniz geliştirici seçenekleri menüsünde seçeneklere sahip olmasıdır apps and ADB. Daha önce CM kullandım ama artık geliştirilmediğinden, orada bazı çözümler aradım. CyanogenMod hala iyi bir alternatif olmasına rağmen, bloatware içermiyor.

Bir arkadaşımdan öğrendiğim bir alternatif adbd insecure, buradan deneyebileceğiniz uygulamayı kullanıyor : https://forum.xda-developers.com/showthread.php?t=1687590 . Benim durumumda, bir Android özel kernel ile çalışıyor, ancak Android hisse senedi ROM'unda değil (sadece vanilya android). boot.imgAndroid ROM'u değiştirmek gibi başka alternatifleri de deneyebilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.