日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

制作 ramdisk.img,使用cpio 和 gzip

發(fā)布時間:2025/3/21 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 制作 ramdisk.img,使用cpio 和 gzip 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

linux2.6 內(nèi)核支持兩種格式的 initrd(虛擬文件系統(tǒng)),一種是 linux2.4 內(nèi)核那種傳統(tǒng)格式的文件系統(tǒng)鏡像?image-initrd,其核心文件就是 /linuxrc.

另外一種格式的 initrd 是 cpio 格式的這種格式的 initrd 使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init本文將這種 initrd 稱為 cpio-initrd。盡管 linux2.6 內(nèi)核對 cpio-initrd和 image-initrd 這兩種格式的 initrd 均支持,但對其處理流程有著顯著的區(qū)別。


  cpio命令有三種操作模式:copy-out、copy-in、copy-pass,生成 ramdisk.img 用的是它的copy-out模式,即把文件打包的操作模式。cpio的copy-out操作模式使用 -o?命令行選項(xiàng)指定。

  把~/root目錄下的文件打包成image.cpio.gz,執(zhí)行下面的命令:

??????? cd ~/root

  find . | cpio -o -Hnewc |gzip?-9 > ../image.cpio.gz

  命令執(zhí)行完畢后,在~/root 目錄下就會生成文件名為imgae.cpio.gz的init ramfs。

解釋 上邊的 命令:

??????? 上邊的 find . 就是 把 ~/root/ 下的 所有 文件 列一個表,

  上面?cpio命令的 -H?選項(xiàng)指定打包文件的具體格式,要生成init ramfs,只能用newc?格式?,

?????????

-----------------------------

ramdisk.img(虛擬文件系統(tǒng))在android中的使用


?ramdisk中包含一些對于啟動android的很重要的文件,比如 內(nèi)核啟動完后加載的第一個進(jìn)程用戶init ,一些重要的 配置文件 等,總之它控制著整個android的啟動.

?ramdisk的使用有兩種方法:1,編譯進(jìn)內(nèi)核; 2,將ramdisk單獨(dú)燒寫


1,編譯進(jìn)內(nèi)核
將 ramdisk解壓,可以看到它里面有很多文件和目錄, 如:data,dev,proc, sbin ,sys,system,default.prop,init,init.rc等,有點(diǎn)像板子跑起來的根目錄. 將解壓出來的文件夾重命名為root,放到linux內(nèi)核代碼的根目錄下,并用make menuconfig配置啟動這個root文件夾,配置保存后會生成如下項(xiàng):
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="root"

CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
這些也可以直接在xxxx_defconfig改,然后make xxxx_defconfig使其生效.

這樣做了以后,root將被編譯進(jìn)zImage,并隨之一起燒進(jìn)板子.


2,將ramdisk單獨(dú)燒寫

也 可以將ramdisk作為一個單獨(dú)的包燒寫,就燒在zImage的后面.假如zImage燒在0x600000,那么ramdisk就燒在 0x800000就好.值得注意的是,ramdisk在燒寫之前要進(jìn)行一次轉(zhuǎn)換.因?yàn)閎ootloader在運(yùn)行的時候,會將ramdisk從FLASH 加載到RAM中,它會把FLASH上0x800000-0x880000的空間作為ramdisk讀取,并檢查其最后四個字節(jié),這四個字節(jié)保存的是 ramdisk.img的實(shí)際大小.所以我們要做的轉(zhuǎn)換工作就是把原來的ramdisk.img(100多字節(jié))轉(zhuǎn)換成512字節(jié),并在其最后四個字節(jié)寫 ramdisk.img的實(shí)際長度。


--------------------------

解壓、修改Android的ramdisk.img的手動方法

??? 將ramdisk.img復(fù)制一份到任何其他目錄下,將其名稱改為ramdisk.img.gz,


???? mv ramdisk.img ramdisk.img.gz
??? gunzip ramdisk.img.gz
注意:這里之所以進(jìn)行改名,是因?yàn)閞amdisk.img 是經(jīng)過gzip壓縮過的,所以需要對其解壓,但是gzip對解壓的文件的文件后綴名又有要求,所以就先進(jìn)行改名。

?? 然后新建一個文件夾,叫ramdisktwo吧,進(jìn)入,輸入命令

??? cd ramdisktwo
??? cpio -i -F ../ramdisk.img

或者???cpio? -i -d? < ../ramdisk.img


??? 這下,你就能看見并操作ramdisk里面的內(nèi)容了。

根據(jù)自己的需要對里面的內(nèi)容修改之后,可以使用下列命令重新打包成鏡像


??? cpio -i -t -F ../ramdisk.img > list

???????????從 ../ramdisk.img 文件里 提取 文件名,包含遞歸,然后 重定向 到 list? 文件里。

??? cpio -o -H newc -O lk.img < list 


???把 當(dāng)前目錄下的文件(在list里的文件)打包成一個歸檔文件, 在當(dāng)前目錄下生成的lk.img就是我們的新鏡像了。

---------------------------------------------------

總結(jié)

以上是生活随笔為你收集整理的制作 ramdisk.img,使用cpio 和 gzip的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。