kindle底层系统详细说明
開篇
Kindle有一個“魔彈”,可以隨時在上面安裝自定義代碼,包括從添加越獄鍵、自定義屏幕保護程序或自定義字體,一直到在上面安裝完全不同的操作系統,比如Android操作系統。這些工具已經存在,我們知道如何使用它們。將提供簡單的分步說明,以及已經包含我們想要的自定義更改的自定義分區映像。
為什么不是快速啟動模式
到目前為止,我一直在想,因為fastboot太強大了(因此對初學者來說太危險了),所以我們應該避免使用它,盡可能使用amazon提供給我們的工具,盡可能接近它們的默認配置。這意味著使用盡可能簡單的方法將自定義代碼安裝到kindle上。
越獄
因為所有kindle型號都可以安裝簽名的更新包,正常的越獄程序會添加一個自定義密鑰,這樣開發者簽名的更新包就可以使用“更新你的kindle”菜單項安裝,就像它們是亞馬遜簽名的更新包一樣。這些開發人員簽名的更新包含安裝過程中運行的安裝腳本,可以對kindle進行任何更改,包括添加新的屏幕保護程序、新字體,甚至USB網絡,這樣您就可以使用SSH獲得根shell。
破解
當一款kindle機型問世,或者對現有kindle進行新的固件更新時,真正的問題是如何首先將自定義密鑰安裝到主系統根分區上。這需要大量的研究來找到獲得根訪問權限的方法(通常稱為“根”設備),以便可以運行自定義代碼。對于kindle,rooting它做的第一件事就是安裝自定義密鑰,這樣用戶選擇的自定義應用程序就可以使用開發者簽名的更新來安裝。
在新的k4(kindle mini)上,原來根訪問是直接在diags的USBnet菜單項中提供的。只需將ENABLE_DIAGS添加到USB驅動器并重新啟動,然后從DIAGS菜單中啟用USBnet并使用SSH獲得一個根shell。使用根shell,您可以進行任何更改并安裝任何程序。首先要做的一件事是將dropbear文件從diags復制到main,這樣當從main引導時就可以使用SSH獲得一個根shell。另一件事,你想安裝自定義密鑰,以便開發人員簽署的更新可以安裝從“更新你的kindle”菜單,就像所有其他kindle。
對于觸摸,事情與K4有點不同,因為當您從diags菜單啟用USBnet時,diags缺少允許SSH的文件。在這種情況下,有必要找到一個漏洞來利用它。第一個發現的是“MP3 bug”,它允許一個專門設計的MP3文件執行它包含的代碼。這是用來創建MP3越獄,它安裝了自定義密鑰,以便可以從“更新kindle”菜單安裝開發人員簽名的更新。
固件更新
隨后固件版本5.0.3問世,修復了MP3的漏洞,因此需要一種新的方法來破解5.0.3固件附帶的新Kindle。替換越獄使用當前的“tar根路徑bug”,它使用數據.tar.gz將自定義代碼安裝到可寫位置,但不執行此自定義代碼。有必要研究啟動腳本,找到用戶可以編寫自定義代碼的位置數據.tar.gz并找到一個方法來觸發代碼的執行。在/var/local中找到了多個位置,其中可以包含在啟動期間執行的自定義腳本代碼。使用的第一個位置是/var/local/system/locale,但這只在觸摸屏上起作用,而且只在從main引導時起作用。
繼續搜索其他位置和觸發方法,以防新固件禁用現有方法。發現了多個位置和觸發方法,其中一些僅在main(正常模式)中起作用,一些僅在diags(工程模式)中起作用,一些僅在Touch上起作用,而另一些則在K4上起作用。我們將在這個線程中使用的是“/var/local/system”/mntus.參數“有效負載腳本。這一個特別強大,因為它運行在觸摸屏上的主要和診斷,它運行在K4在主要和診斷,它運行在K3,和DX和DXG。除了這個特殊的有效載荷目的地是強大的,它也是危險的。如果你使用mntus.參數專為不同型號的kindle設計,它可以讓啟動腳本擦除你的USB驅動器。如果你在使用kindle運行自定義代碼時犯了一個小錯誤,它會嚴重阻塞你的kindle,使你無法啟動main或diags,也無法訪問USB驅動器。在這種情況下,只有“USB Downloader”模式才能訪問它。它可以部署在K4上,并在數據.tar.gz文件。
USB下載模式和魔法按鍵
我們可以通過插入USB電纜進入USB下載模式,使電源指示燈亮起,然后按住電源按鈕直到指示燈熄滅,然后在松開電源按鈕之前,我們需要在松開電源按鈕的同時按住“魔法按鍵”。每種kindle型號都有一個不同的“魔法按鍵”(在源代碼中實際上是這樣稱呼的)。Touch使用Home按鈕(它唯一的按鈕)作為魔術鍵。K4使用五向向下按鈕作為魔術鍵。K3使用音量下降按鈕(Vol-)作為魔術鍵,但它也使用不同的VID/PID,需要不同的工具與之通信。
隨著我們對USB下載模式的了解,我們稱之為USB下載的模式也在不斷變化。在這些論壇中,它可以被稱為“USB HID”模式(因為這是它在Windows設備管理器中的顯示方式),也可以被稱為“USB恢復”模式(因為這正是我們想要使用它的目的),但在制造商文檔中,他們稱之為“USB Downloader”模式(這是它的官方名稱)。在USB Downloader模式下,K4和Touch似乎是具有VID/PID 0x15a2/0x0052的USB HID設備。可從制造商網站下載的特殊軟件(飛思卡爾網站)可以使用VID/PID與kindle通信。我們在這個線程中使用的軟件稱為“MfgTool”。它允許很多事情,包括向mmc存儲設備寫入新固件。但我們用它來加載和執行kindleram內存中的自定義代碼。在這個線程中,我們使用定制的u-boot引導加載程序代碼來選擇我們想要的引導模式并引導到那個模式。這里提供的引導模式有main、diags和fastboot。對于一個kindle磚如此嚴重,它只能引導到fastboot模式,我們需要修復它要么使用MfgTool(在USB下載模式下工作)或我們可以修復它在fastboot模式下使用kindle fastboot工具。
快速啟動模式——為什么要使用它?
使用fastboot工具處理命令行參數比使用MfgTool更快更簡單,MfgTool可以做許多與fastboot相同的事情,但是需要自定義XML文件來配置您想做的每一件事情。Fastboot更簡單,所以我們將使用它。我們只使用MfgTool引導到main、diags或fastboot模式。
Fastboot功能強大,可以輕松擦除或重新編程kindle mmc存儲設備中的任何內容(包括USB驅動器、主固件和diags固件)。危險之處在于,它甚至會破壞fastboot工具與之通信的固件部分,使fastboot不再工作。在這種情況下,您可以回到MfgTool,它將始終工作,因為它只依賴于CPU芯片(iMX50 SoC)內置的功能。這使得fastboot的危險性有所降低,因為即使您通過錯誤地使用fastboot來禁用fastboot支持,您也可以使用MfgTool恢復kindle。使用MfgTool作為備份方法,使用fastboot可以減少恐懼感。
所以,首先使用fastboot的原因是當一個kindle變成磚,它不能引導到main或diags,但仍然可以引導到fastboot,我們可以使用fastboot來修復我們的kindle。即使我們破壞了它,使fastboot不再工作,那么我們最終可以開發定制的XML文件,這樣我們就可以使用MfgTool來修復fastboot模式,這樣我們就可以再次使用fastboot模式來修復kindle。
強大的快速啟動模式
Fastboot可以將映像文件寫入主分區、diags分區和數據分區。它還可以編寫新的引導加載程序代碼,如果執行不正確,則會禁用上面提到的fastboot。但是,(這是我今天晚上剛剛意識到的突破性的發現)數據分區包含USB驅動器,這是將內容上傳到kindle的正常方式。
真正的突破是當你需要一個特別的數據.tar.gz以及運行名.sh當你無法訪問U盤時,你可以使用fastboot將這些文件放到U盤上!怎樣?創建一個包含這些文件的vfat格式的映像文件,然后使用fastboot將其flash寫到數據分區。就這么簡單!
我們甚至可以使用fastboot來閃存自定義的main或diags分區映像,這些映像是官方分區的備份映像,其中添加了額外的文件,例如自定義越獄密鑰、丟失的SSH文件,以及任何您想要的自定義屏幕保護程序和自定義字體。不需要安裝任何東西,而且預先安裝的工廠固件是否修復了所有錯誤,從而無法通過任何其他方法添加自定義代碼也無關緊要。只要亞馬遜沒有禁用fastboot,這種方法就一直有效,即便如此,MfgTool仍然可以用來在kindle上安裝自定義代碼,就像fastboot工具一樣,但配置起來有點復雜。當然,在創建mfgtoolxml配置文件之后,可以多次使用它們。
永久解決方案
亞馬遜阻止我們安裝自定義固件的唯一方法是,如果他們在新Kindle上禁用“解鎖”USB下載模式,以便只有使用其官方(秘密)密鑰簽名的固件才能寫到mmc存儲設備。根據制造商文檔,CPU SoC似乎是以“加密固件”模式從工廠來的,并且在首次配置時必須永久燒毀內部保險絲,以便像kindles現在支持的那樣未加密(打開)固件。
這意味著任何現在可以運行自定義代碼的kindle都將始終能夠運行自定義代碼。只有新的Kindle才能鎖定,以防止這一點,因為它不燒允許自定義代碼的保險絲。K5 u引導源代碼包括對多個kindle型號的支持,包括使用簽名固件包的未來型號,因此未來的kindle型號可能會防止固件映像。在這種情況下,我們必須返回當前的方法,利用bug來獲得根訪問。
對我們有什么好處?
我的kindle現在處于“fastboot only”模式(它不能啟動main或diags,也沒有USB驅動器訪問)。這樣做是因為mmcblk0p3包含損壞的mntus.參數我不知道如何用fastboot修復這個問題。我知道變磚是因為mntus.參數不會返回到在運行名.sh腳本被調用。我可以用不同的運行名.sh修復損壞的腳本mntus.參數文件(替換或刪除它,或銷毀mmcblk0p3)。但是我不能用普通的方法把這些文件添加到我的USB驅動器上。如果問題出在主分區上,可以通過引導到diags來修復。但是它在mmcblk0p3上,我不知道如何(或者是否)使用fastboot刷新分區。
所以我會用我所知道的去做。我將創建一個包含運行名.sh我需要修復文件數據.tar.gz我要啟動它運行名.sh文件。我將使用fastboot將該映像文件寫入數據分區。然后我將重新啟動到診斷模式。在這一點上,我相信這將做的工作。
對你們有什么好處?
即使mmcblk0p3、main和diags都已損壞,我們也可以使用fastboot將修復的(原始)映像寫入main(系統)和diags分區,并將自定義USB驅動器映像寫入包含運行名.sh以及數據.tar.gz維修mmcblk0p3。這樣做可以救K4變磚,但有固件映像觸摸使用fastboot有問題。這可以通過為MfgTool配置文件使用bist(內置自檢)構建u-boot來克服,其中包括“修復的”fastboot代碼(如果它有任何bug需要修復的話)。
最后
所以,全部都是好消息。不僅對我,而且對每個人。對?讓我們聽聽反饋吧!最起碼,kindle在fastboot模式下給電池充電的速度要快得多,所以它至少在這方面是有用的。
編輯:由于這是編寫的,我們發現一個大小限制,防止fastboot寫入大型映像文件,如主系統分區(mmcblk0p1)。我清理了kindletouch,其他許多人也成功地清理了kindle,方法是使用fastboot從包含SSH預安裝的映像中寫入較小的診斷分區(mmcblk0p2),然后引導到診斷模式,并使用linux“dd”命令從備份映像中寫入較大的主系統分區。這種恢復bricked kindle健康的方法與以前的方法相比已經大大簡化,并在“simple kindle touch(and k4nt)debricking method”一文中進行了說明。
kindle 3 GPL源代碼包含一個uboot-1.3.0-rc3文件夾。”grep-r fastboot*“找不到fastboot。所以你的“加載”(否定)問題的答案要么是“是的,fastboot不在那里”,要么是“不,fastboot不在那里”。另一類問題是“你停止打你妻子了嗎?”。在這種情況下,英語很難學。
Fastboot是新kindles中u-boot引導加載程序的bist(內置自檢)版本,它從mmc加載,當您使用idme bootmode Fastboot引導時運行。
USB Downloader模式與fastboot有很多相同的功能,并且它不能被鎖定以防止在解鎖后閃爍未簽名的自定義代碼(通過燒掉SoC中的配置保險絲)。到目前為止,所有的kindle都沒有鎖。
kindle5(touch)u-boot源代碼中有一些注釋,顯示了為使用簽名固件映像的未來kindle設備配置設置,因此未來的kindle可能會被鎖定以防止自定義固件,然后我們只能利用固件錯誤來運行自定義代碼,就像我們過去所做的那樣。
Kindle3使用了飛思卡爾IMX35CPU SoC,也有USB下載模式。它使用與iMX50 CPU SoC不同的USB VID/PID,并且需要不同的下載工具(AdvancedToolKit,而不是MfgTool)。我已經在我的主機PC上安裝了AdvancedToolKit,并且我驗證了它報告說它在我的Kindle3中成功下載并運行了代碼。
如果你真的想在kindle3上使用fastboot,你可以從kindle4gpl源代碼中進行備份。
k4和K5U-boot的GPL是獨立的,因此沒有denx或freescale依賴項。我造的,但它被剝去,以適應更小的mmc。k5(觸摸)u型行李箱更大,支持更多的設備,包括k4。我在KindleSelectBoot中使用了這個。根據可用大小,您可以只需將mmc中的K3U引導映像替換為k4或k5 u-boot映像。您可以使用AdvanceToolKit(K3版本的MfgTool)進行測試,以下載并運行k5 uboot映像。K3魔術鍵=音量-。
總結
以上是生活随笔為你收集整理的kindle底层系统详细说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器分虚拟空间,服务器怎样分虚拟主机
- 下一篇: Spring简化Java开发_sprin