यह एक पुराना सवाल है, लेकिन मैं हाल ही में इस बारे में खुद उत्सुक था। मुझे एक विधि मिली adbd
, जिसमें पुन: जमा करने की आवश्यकता नहीं है , हालांकि इसकी आवश्यकता है su
(मैं चेनफायर सुपरसु 2.45 का उपयोग कर रहा हूं)।
मान लिया जाये कि bash
में स्थित है /system/bin/bash
, और su
पर है /system/xbin/su
, यह अनिवार्य रूप से कुछ इस तरह है:
adb shell
(एक इंटरैक्टिव शेल का उपयोग करें। एक-लाइनर के रूप में इस प्रक्रिया को आमंत्रित करना एडीबी का कारण बन सकता है अगर कोई समस्या है तो काम करना बंद कर देगा)
mount -o remount,rw /system
mv /system/bin/sh /system/bin/sh.bak
echo -e '#!/system/bin/bash\n/system/xbin/su -mm -l -s /system/xbin/bash' > /system/bin/sh
ध्यान दें कि आपके रास्ते अलग हो सकते हैं; उपयोग करें which bash
और which su
सुनिश्चित करें।
chmod 777 /system/bin/sh
- बाहर निकलने से पहले शेल का परीक्षण करें
/system/bin/sh
:। यदि आपको कोई त्रुटि मिलती है, तो त्रुटि को ठीक करें या बैकअप को पुनर्स्थापित करके वापस करें cp /system/bin/sh.bak /system/bin/sh
:।
- वैकल्पिक रूप से रिमाउंट / सिस्टम; अधिकांश डिवाइस स्वचालित रूप से ऐसा करेंगे:
mount -o remount,ro /system
और आपने कल लिया।
बस एसएच को BASH सहानुभूति देना काम नहीं करता है क्योंकि इस तरह से आह्वान करने पर bash SH का अनुकरण करता है।
हालाँकि, bashrc
स्ट्रेस को देखते हुए, यह देखने में प्रतीत होता है कि सिम्प्लेक्स किए गए BASH को 'sh --login' कहा जाता है। जबकि यह अवधारणा को स्क्रिप्ट के माध्यम से "चेनलोड" के गोले के लिए इस्तेमाल किया जा सकता है, जैसा कि adbd
एसएच हार्डकोडेड है जिस तरह से ऊपर वर्णित है।
यदि कोई समस्या है और आपने /system/bin/sh
एडीबी को हटा दिया है (या स्थानांतरित कर दिया है) तो समस्या को ठीक करने के लिए आपको देने के लिए एक शेल है। यदि ऐसा होता है, तो आपके पास कुछ विकल्प हैं:
- एक रिकवरी में रिबूट करें
adbd
(जैसे कि CWM या TWRP) और उसके पास एक adb खोल दें, ताकि /system/bin/sh.bak को / system / bin / sh पर फिर से कॉपी कर सकें।
- बैकअप की प्रतिलिपि बनाने के लिए अदब का उपयोग करें:
adb root; adb remount; adb shell; adb pull /system/bin/sh.bak; adb push sh.bak /system/bin/sh
ध्यान दें कि यह सभी उपकरणों पर काम नहीं करेगा; कुछ इस तरह से adb को remount / system rw को अनुमति देने से इंकार करते हैं।
- एक टर्मिनल एमुलेटर का उपयोग करें जिसे एक अलग शेल चलाने के लिए सेट किया जा सकता है; ध्यान दें कि कई कोशिश करेंगे / प्रणाली / बिन / श पहले और बल करीब।
sh
, न किbash
जब मैं कनेक्ट करने के लिए एडीबी का उपयोग करता हूं। आप किस निर्माण का उपयोग कर रहे हैं?