Відповіді:
Якщо я правильно розумію ваше запитання, ви запитуєте, як автоматично отримати доступ до root під час запуску adb shell
, так що вам не доведеться входити в оболонку і вводити su
для виконання команди як root на телефоні.
Це контролюється прапором у вашому завантажувальному розділі, який більшість користувацьких ПЗМ модифікували, щоб дозволити кореневий дозвіл за замовчуванням. Якщо ви перебуваєте у випадку, $
коли ви користуєтесь, adb shell
тоді у вас є два постійні варіанти та один тимчасовий (тимчасовий, що він не прилипає при перезавантаженні):
adbd
на своєму пристрої права доступу до rootЧисло 2 насправді не так складно, але воно може бути дещо небезпечним, якщо ви недбалі. Існує вікі стаття тут , яка пояснює цей процес і включає в себе кілька сценаріїв Perl , щоб допомогти вам. Ці інструкції передбачають середовище Linux / Unix. Я особисто використовував ці інструкції в Fedora Linux і можу сказати, що вони працюють, але я не знаю про інші * nix середовища, такі як Macs. Я також не знаю жодних подібних інструкцій для Windows, але я можу спробувати відстежити, чи є ви в Windows. Точні команди дещо відрізнятимуться від телефону до телефону, оскільки різні пристрої використовують різні таблиці розділів.
Взагалі кажучи, вам потрібно витягнути з телефону ваш поточний boot.img, розпакувати його, витягти ramdisk та знайти файл default.prop . Це файл простого тексту, який потрібно відкрити в текстовому редакторі, а потім знайти рядок, що містить значення ro.secure
. Якщо рядок говорить, ro.secure=1
то вам потрібно змінити його ro.secure=0
. Після цього ви можете знову упакувати ramdisk і boot.img, а потім перенести його на телефон. Після перезавантаження ви будете зустрінуті #
підказкою кожного разу, коли ви будете виконувати adb shell
без необхідності запуску su
.
Крім того, якщо ви використовуєте користувальницький ROM, але він не має цієї модифікації, ви можете просто розпакувати ROM та змінити boot.img, що додається до нього, використовуючи вищезазначені кроки. Потім ви можете скопіювати ПЗУ за допомогою нещодавно зміненого boot.img і прошивати zip-файл, як зазвичай.
Це, мабуть, само собою зрозуміло, але будьте обережні, роблячи це. Возитися з завантажувальним розділом може досить легко зірвати ваш телефон і змусити вас відновитися через HBoot. Я настійно рекомендую протестувати Fastboot, щоб переконатися, що ви можете використовувати розширені команди Fastboot та виконати відновлення. Це залежно від вашої моделі, але більшість телефонів мають якесь програмне забезпечення для настільних ПК, яке можна запустити і для переформатування телефону.
Третій варіант полягає в тому, що в багатьох випадках можливий перезапуск adbd
на вашому пристрої з правами root. Однією з можливостей є виконання adb root
з терміналу ПК, хоча це не буде працювати у всіх конфігураціях ПЗУ (ПЗУ має бути побудовано як "користувацька помилка"). Ви також можете спробувати незахищений додаток Chainfire adbd . Це не буде зберігатися під час перезавантаження, тому вам потрібно буде використовувати або додаток, або adb root
знову під час кожного перезавантаження телефону.
adbd
мати root права на телефон за замовчуванням. Є повідомлення від команди команди Android, яке має на увазі це, але не говорить прямо. Цей прихильність до AOSP також передбачає, що це просто прапор, який adbd
перевіряє запуск (я не бачу його в іншому місці джерела). Як я вже згадував, більшість користувацьких ПЗМ, які я бачив (включно з CM), встановили значення 0.
adb root
команда перезапустити adbd в режимі auto-su, мабуть, на це покладається. Я думаю, ви мали рацію, що це був лише прапор.
// ... except we allow running as root in userdebug builds if the service.adb.root property has been set by the "adb root" command"
. До речі, саме так працювала перша версія BurritoRoot для Kindle Fire, IIRC.
Добре, якщо ваш телефон укорінений, ви можете запускати команди з командою "su -c".
Ось приклад команди cat на файл build.prop, щоб отримати інформацію про продукт телефону.
adb shell "su -c 'cat /system/build.prop |grep "product"'"
Це викликає дозвол root та виконує команду всередині ''
Зауважте 5 кінцевих лапок, що потрібно, щоб закрити ВСІ ваші кінцеві цитати, або ви отримаєте помилку.
Для уточнення формат такий.
adb shell "su -c '[your command goes here]'"
Переконайтесь, що ви ввели команду ТОЧНО так, як зазвичай ви виконували б при запуску в оболонці.
Спробуйте, сподівайтеся, це допоможе.
Просто встановіть adbd Insecure .
Для чого ви намагаєтеся запустити корінь? Ви говорите, що хочете запустити оболонку ADB з root, але не хочете використовувати оболонку ADB? Ви можете уточнити?
Якщо програма вимагає кореневого доступу, програма SuperUser на вашому телефоні має працювати з тим, надаючи їй дозвіл чи ні. Процес, в який ви вкоренили свій телефон, повинен включати додаток SuperUser.
adb shell ps
або, adb shell
а потім ps
отримати список запущених процесів. Отже, щось вимагає кореневого доступу, я хочу мати можливість зробити перший.
Як альтернативу, ви можете написати свій скрипт на телефон і просто дозволити його виконувати, наприклад:
adb shell sh /sdcard/myscript.sh
Сценарій може підніматись без вашого втручання (якщо припустити, що SuperUser встановлений для запам'ятовування затвердження), наприклад:
su
pm setInstallLocation 1
Я щойно це зробив на своєму телефоні з успіхом, єдина проблема в тому, що я не зовсім зрозумів, як чисто закінчити сеанс оболонки adb. Мені доводиться Ctrl-C у своїй оболонці Windows, щоб повернутися до командного рядка Windows - інакше adb просто сидить за #
запитом і не приймає введення.
я використовую для ремонту помилку видачі домашньої кнопки
пристрої adb
adb оболонка su -c commands
або
корінна оболонка adb sqlite3 /data/data/com.android.providers.settings/databases/settings.db "ВСТАВЛІТЬСЯ в безпечний (ім'я, значення) VALUES ('device_provisioned', '1');"
adb kill-сервер
Ви також можете встановити біт suid на "ш". Я використовую BusyBox, тому інструкції можуть не відповідати вашим налаштуванням:
і у вас повинен бути кореневий рядок