初始化内存镜像名称与我在上一步中使用的相同;可能与您所使用的名称不同。
除了交叉编译,其他概念(也适用于initrd的构建)对于嵌入式平台都是相同的。
编辑initrd映像,以便首先载入根文件系统适配器驱动程序,然后再载入所有其他存储适配器驱动程序。
与传统的Linux引导过程类似,这个文件也是在将initrd映像解压到RAM磁盘中时被调用的。
initrd与内核绑定在一起,并作为内核引导过程的一部分进行加载。
cpio文件格式(现在可以用作FedoraCore的一种initrd映像格式)具有很长的历史,可以在很多UNIX系统上使用。
传输完成之后,就可以引导Linux内核并挂载initrd了,这与本地映像引导的过程类似。
现在,我们在一个适合挂载的块设备中就有了这个initrd映像。
这个initrd会作为RAM中的临时根文件系统使用,并允许内核在没有挂载任何物理磁盘的情况下完整地实现引导。
initrd函数让我们可以创建一个小型的Linux内核,其中包括作为可加载模块编译的驱动程序。
initrd映像中包含了支持Linux系统两阶段引导过程所需要的必要可执行程序和系统文件。
initrd对于在嵌入式系统中加载到RAM磁盘里的非持久性根文件系统来说也非常有用。
在构建嵌入式系统时,我们可能希望将initrd映像文件做得尽可能小,这其中有一些技巧需要考虑。
initrd映像实际上是一个RAM磁盘,其中包含带有基本配置文件、二进制文件、库和驱动程序的小型文件系统。
在桌面或服务器Linux系统中,initrd是一个临时的文件系统。
在ARM上的Debiankernel影像套件必须利用initrd才能让系统开机。
这段代码将把initrd映像提取到initrd文件中;然后将使用ext2文件系统类型加载这个文件,以加载temp。
在这个挂载点上,我们现在就有了一个目录,它以ext2文件系统的形式呈现出来,我们可以对自己的initrd文件进行拼装了。
Minimax是一个完全封装在initrd映像文件中的Linux发行版!
由于在很多基于Linux的嵌入式系统上没有硬盘,因此initrd也会作为这种系统上的永久根文件系统使用。
内核软件包依赖module-init-tools(与原有的modutils冲突);initrd-tools依赖cramfsprogs。
您现在应当可以在temp目录的initrd映像中找到所有文件。
在没有存储设备的嵌入式系统中,initrd是永久的根文件系统。
当调用内核时,它会自解压到高端内存中,并拷贝initrd以供稍后安装和使用。
在内核和initrd映像被解压并拷贝到内存中之后,内核就会被调用了。
在第二阶段的引导加载程序加载到RAM中之后,Linux内核映像和初始RAM磁盘映像(initrd)也会被加载到RAM中。
有关创建或定制自己的initrd映像的详细信息,可以查看参考资料部分。
在这些最新的Linux发行版中,initrd映像也是用cpio压缩的。