[英]How can I get a working adb shell on android when /system/bin/sh is missing?
我正在嘗試從Measy U2C HDMI棒的源頭構建Android Jellybean。 我已經設法構建並安裝所有分區(啟動,內核,misc,恢復,系統......)。 我遇到的問題是系統分區似乎沒有安裝。 我跑的時候
adb ls /system
我得到以下輸出:
000041ed 00000400 51301410 .
000041c0 00000800 00000003 lost+found
000041ed 00000000 00000001 ..
我想將shell添加到設備中並嘗試調試系統分區未安裝的原因,但adb希望在/ system / bin / sh中有一個可用的shell。
$ adb shell
- exec '/system/bin/sh' failed: No such file or directory (2) -
我的問題是,如何讓adb在別處查找shell命令,這樣我才能使用它? 或者是否有另一種遠程進入設備並進行調試的方法? 在/ sbin / busybox上安裝了busybox,所以如果我能以某種方式調用它,我可以解決這個問題。
“SHELL_COMMAND”似乎是在adb / services.c中硬編碼的,其中非正式的副本可以瀏覽
https://github.com/android/platform_system_core/blob/master/adb/services.c
鑒於您正在從源代碼構建,您應該能夠更改它。 但是,由於您希望將其指向較短的路徑,因此您也可以編輯二進制文件並向上移動終止空值。
調查問題的另一種方法可能是在啟動到恢復分區后查看是否可以獲得有效的adb shell,並嘗試在那里手動安裝有問題的系統分區以查看導致的錯誤。
另一個想法是在啟動腳本中添加一些東西,啟動一個備用shell,監聽你可以使用adb轉發套接字的東西 - 我沒有想到為什么設置adb轉發依賴於設備端的明顯原因shell,但我還沒有通過實驗或檢查代碼驗證。
如果你想變得非常聰明 ,我相信你可以在根文件系統上創建一個包含sh
副本的/ system / bin。 我的回憶是,您可以在非空目錄上掛載文件系統 - 不確定是否存在打開該目錄的文件描述符的問題,例如運行sh
本身,但是您的掛載無論如何都會失敗,並且您可以嘗試在別處手動安裝以調試該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.