android-ramdisk.img分析、recovery.img&boot.img執行過程

来源:https://www.cnblogs.com/linhaostudy/archive/2019/09/18/11543887.html
-Advertisement-
Play Games

一、ramdisk介紹 ramdisk通過直面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的文件系統。對於傳統的磁碟文件系統來說,這樣做的好處是可以極大提高文件訪問速度;但由於是ram,所以 在掉電後,這部分內容不能保存。ramdisk文件系統是在系統上電後直接從磁碟一 ...


一、ramdisk介紹

ramdisk通過直面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的文件系統。對於傳統的磁碟文件系統來說,這樣做的好處是可以極大提高文件訪問速度;但由於是ram,所以 在掉電後,這部分內容不能保存。ramdisk文件系統是在系統上電後直接從磁碟一次性載入到記憶體,在整個運行期間都不會有寫回操作,所以,任何修改都掉 電後丟失。

二、ramdisk.img介紹

ramdisk.img是android打包生成的,解壓ramdisk.img後對比root根目錄很相似,所以ramdisk是虛擬文件系統。這裡主要講解如何解壓ramdisk.img。

file ramdisk.img
--ramdisk.gz: gzip compressed data, from Unix   
-----可知ramdisk.img是gz的文件
mv ramdisk.img ramdisk.gz
-----更改尾碼名
gunzip ramdisk.gz
-----解壓,會生成ramdisk文件
file ramdisk
--ramdisk: ASCII cpio archive (SVR4 with no CRC)
cpio -i -F ramdisk

image

三、ramdisk、boot.img、recovery.img之間的關係

ramdisk.img會被打包到boot.img和recovery.img中(不是同一個ramdisk.img).

ramdisk.img中比較重要的文件是"init","init.rc",其中init是system/core/init/init.c編譯而來,boot.img中ramdisk里的init.rc位於system/core/init/init.rc,而recovery.img中ramdisk里的init.rc位於bootable/recovery/etc/init.rc。

kernel載入結束以後第一個進程是執行init,init會解析init.rc文件,並起相應的服務。由此可以知道正常開機和進入recovery模式起的進程是不同的。

下麵的代碼位於bootable/recovery/etc/init.rc,由此可知,進入recovery模式後會執行sbin/recovery,此文件是bootable/recovery/recovery.cpp生成(可查看對應目錄的Android.mk查看)。

service recovery /sbin/recovery
    seclabel u:r:recovery:s0

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [TOC] 1. 概述 System V共用記憶體在概念上類似於Posix共用記憶體,代之以調用shm_Open後調用mmap的是,先調用shmget,再調用shmat。 對於每個System V共用記憶體,內核都維護如下的信息結構,它定義在sys/shm.h頭文件中,其中帶註釋的是我們需要關註的成員。 ...
  • [TOC] 1. 概述 System V消息隊列使用消息隊列標識符標識,和Posix消息隊列一樣,發送消息和接收消息的線程(進程)是相互獨立、互不依賴的。 對於系統中的每個消息隊列,內核維護一個定義在sys/msg.h頭文件中的結構,其中帶註釋的是我們需要關註的成員變數。 2. 消息隊列API ms ...
  • 1.電腦基礎 二進位 由於電腦運行時全補是使用二進位運行的,所以必須要學習二進位的轉換 二進位|十六進位|十進位|2的n次方 | | | 00000001|01|01|2^0 00000010|02|02|2^1 00000100|04|04|2^2 00001000|08|08|2^3 000 ...
  • 鍵入dpkg reconfigure locales ...
  • 我們在linux下配置了tomcat後發現,無法訪問除了linux(如果是虛擬機的話,宿主機子根本無法訪問tomcat),解決下吧 原因是我們的tomcat訪問需要8080埠,但是從外部訪問,我們的防火牆會攔截,而你此時又恰好沒有配置8080埠,也沒有關閉防火牆,那麼就導致這樣咯, 解決步驟: ...
  • linux上古神器thefuck, 裝機必備, 命令行輸入錯誤殺手 ...
  • 更換壁紙 ​ 在kde的桌面右鍵 配置桌面 壁紙里更換壁紙,我不能直接添加圖像並應用。我的系統在這樣操作後重啟就會發現一切都被重置了。剛剛添加的圖片也不見了。 ​ 於是,我就模範原本存在壁紙文件夾里的文件,自己創建了一個壁紙文件夾 ​ 這是原本breath壁紙文件位置 我們在wallpapers文件 ...
  • CentOS 預設只有一個 root 用戶,但是 root 用戶的許可權過大,而且不利於多人協作,基於許可權管理和安全的原因,我們為系統新建一個用戶,並且使能其 SSH 登錄,同時禁止 root 用戶的登錄; ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...