Linux两种内存启动模式的区别

1。linux下两种内存引导模式的差异



Linux操作系统是一个很常用的Linux2.6内核的initrd文件格式机制由原来的文件系统映像文件到cpio格式的变化不仅体现在文件格式,操作系统Linux内核的两格式有很大的不同。



initrd的英文意思是引导加载程序的初始化内存盘,这是内存磁盘的引导装载程序初始化。在Linux内核启动时,引导程序将加载initrd文件在内存中存储。当内核启动时,它会在访问真正的根文件系统访问内存中的initrd文件系统。在initrd案例引导装载程序配置、内核引导分为两个阶段,对initrd文件系统的第一个实施的第一阶段文件 Linux2.6内核文件这里所说的是不同于以前的版本的内核,所以这里是一个临时的文件称为一个文件开始的第一阶段是对第二阶段开始清除所有的障碍。最重要的是加载根文件系统存储介质的驱动模块,我们知道根文件系统可以存储在各种介质中,包括IDE、SCSI和USB。如果将所有这些设备驱动程序驱动到内核中,就可以想象内核将是多么庞大和庞大。



2的处理流程。Linux2.4内核initrd



为了使读者清楚地了解Linux2.6内核initrd机制的变化,在引入Linux2.6内核initrd,首先介绍了Linux2.4内核initrd简介在Linux2.4内核initrd文件系统镜像文件的格式是。在本文中,它被称为p_w_picpath-initrd initrd,这从Linux2.6内核的介绍后,cpio格式的区别。



在Linux2.4内核到initrd处理流程如下:



1。启动加载器加载的内核和initrd为/ dev /记忆的内容,和 / dev / initrd是设备的引导装载程序初始化,存储映像。



2。内核初始化过程中,内核分解内容的/ dev / initrd装置并复制到 / dev / ram0装置。



3。内核挂载/ dev / ram0装置作为一个原始根文件系统的读写方式。



4。如果 / dev / ram0指定为真正的根文件系统,内核跳转到最后一步,启动正常。



5、在initrd执行/ linuxrc文件。Linuxrc通常是一个脚本文件,它负责加载内核访问根文件系统的驱动和加载根文件系统。



后6。 / linuxrc执行,真正的根文件系统安装。



7。如果真正的根文件系统有一个 /初始化目录,然后 / dev / ram0将从 /移动/ initrd.otherwise /初始化,如果目录不存在, / dev / ram0将卸下。



8。正常开机过程是真正的根文件系统,和 / sbin / init执行。Linux2.4内核initrd实现作为引导的一个中间阶段,也就是说initrd / linuxrc执行后,内核将继续执行初始化代码,我们会看到这是一个显着差异的Linux2.4内核与2.6内核initrd过程之间。



3操作系统的处理流程,Linux2.6



Linux2.6内核支持两种格式的initrd,第三部分在前一个文件系统的图像p_w_picpath-initrd介绍了Linux2.4内核的initrd的传统格式,其制作方法与Linux2.4内核为核心的文件 / linuxrc.the的initrd的另一种形式是cpio格式。这种格式的initrd介绍了linux2.5,并用cpio工具生成。其核心文件不再是 / / init linuxrc,但。这被称为cpio-initrd.although Linux2.6支持cpio initrd initrd和p_w_picpath-initrd两种格式,在处理流的显著差异。接下来,我们介绍这两initrd处理流程分别在Linux2.6。



cpio initrd的处理流程



1。引导装载器装载内核和initrd文件到内存的具体位置。



2。内核决定了initrd文件格式,如果是在cpio格式。



三.发布内容到rootfs initrd。



4。在initrd执行/初始化文件,并执行这一点,内核的工作已全部结束,这是完全交给/ init文件处理。



对p_w_picpath-initrd处理流程



1。引导装载器装载内核和initrd文件到内存的具体位置。



2。内核决定的initrd文件格式,如果不是cpio格式,它被视为一个p_w_picpath-initrd。



3。内核节省下的 / initrd.p_w_picpath rootfs文件initrd的内容。



4。内核读取 / / initrd.p_w_picpath为开发/ ram0设备的内容,这是读到内存盘。



5。然后内核挂载/ dev / ram0装置作为一个原始根文件系统的读写方式。



6 ..如果 / dev / ram0指定为真正的根文件系统,内核跳转到最后一步,启动正常。



7、在initrd执行/ linuxrc文件。Linuxrc通常是一个脚本文件,它负责加载内核访问根文件系统的驱动和加载根文件系统。



8。 / linuxrc完成后,常规根文件系统的安装



9。如果常规根文件系统 /初始化目录,然后 / dev / ram0将从 /移动/ initrd.otherwise /初始化,如果目录不存在, / dev / ram0将卸下。



10。正常的启动过程是在常规的根文件系统,和 / sbin / init执行。



通过上述过程表明,Linux2.6内核的过程p_w_picpath-initrd与Linux2.4内核和initrd处理流程中从没有显着的变化相比,p_w_picpath-initrd相比却存在很大的差异,过程很简单,在源代码的分析,读者可以实现简单的处理。



4.cpio-initrd和p_w_picpath-initrd之间的区别和优势



没有关于cpio initrd和p_w_picpath-initrd正式文书的发现。根据作者的经验和核心代码分析,总结出以下三点。这些差异也从initrd的优点。



使cpio initrd的方法更简单



cpio initrd的生产是非常简单的,而且整个生产过程可以用两个命令完成



这个initrd文件系统#假设在准备当前目录的根目录



bash #找到cpio - C - O > .. / initrd.img |。



bash # gzip .. / initrd.img



使传统的initrd的过程比较复杂,和下面的六个步骤是必要的



这个initrd文件系统#假设在准备当前目录的根目录



bash # DD如果= / dev /零= .. / initrd.img BS = 512k数= 5



bash # mkfs.ext2 - M0 / initrd.img ..



bash #山- T ext2 O环.. / / mnt initrd.img



bash # CP R * / mnt



bash # umount /mnt



bash # gzip - 9。/ initrd.img



本文不详细阐述上述命令的含义,因为这篇文章主要介绍了Linux内核的initrd的处理,可以参考的读者不理解上述命令的相关文件。



注意:内核映像文件并bootsplash并存的方式:



引用:



好吧,看来这是完全错误的。我们需要的是复制文件到你的飞溅p_w_picpath initramfs的rootfs。你不需要把p_w_picpath到压缩initramfs所有。所以正确的过程实际上是正确的:



编译BusyBox安装到一个目录。我们叫它/ mnt / / mythbox busybox。



1。使用像这样的命令创建一个飞溅数据文件



2、复制splashfile到BusyBox顶级目录:CP,它也被称为谭



3,现在建立你的压缩的cpio p_w_picpath将你的2.6个initramfs。initramfs,它也被称为对与错。



现在它工作了。这是有道理的,如果,你在init读取bootsplash补丁(功能)试图打开文件 / bootsplash 我看到人们怎样。还以为你还需要追加文件,因为那是你用2.4做的。但我不知道为什么把文件的rootfs根信息不在别的地方。



不管怎样,这似乎现在起作用了。我已经用几个构建验证了它