ramdisk.img是编译Android生成的一个镜像文件,最后和kernel一起打包生成boot.img镜像。ramdisk.img中主要是存放android启动后第一个用户进程init可执行文件和init.*.rc等相关启动脚本以及sbin目录下的adbd工具。
file ramdisk.img
//ramdisk.img: gzip compressed data, from Unix
看出为gzip压缩过的文件,将ramdisk.img重命名为ramdisk.img.gz .
mv ramdisk.img ramdisk.img.gz
gunzip ramdisk.img.gz
file ramdisk.img
//ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
cpio -i -F ramdisk.img
rootfs之所以存在,是因为需要在VFS机制下给系统提供最原始的挂载点。
1.initrd (init:initialized, rd:ramdisk)
在早期的linux系统中,一般只有硬盘或者软盘被用来作为linux根文件系统的存储设备,因此也就很容易把这些设备的驱动程序集成到内核中。但是现在的嵌入式系统中可能将根文件系统保存到各种存储设备上,包括scsi、sata,u-disk等等。因此把这些设备的驱动代码全部编译到内核中显然就不是很方便。
为了解决这一矛盾,于是出现了基于ramdisk的initrd( bootloader initialized RAM disk )。Initrd是一个被压缩过的小型根目录,这个目录中包含了启动阶段中必须的驱动模块,可执行文件和启动脚本。当系统启动的时候,bootloader会把initrd文件读到内存中,然后把initrd文件在内存中的起始地址和大小传递给内核
内核在启动初始化过程中会解压缩initrd文件,然后将解压后的initrd挂载为根目录,
然后执行根目录中的/linuxrc脚本&#x