linux initramfs加载系统指令_正在生成initramfs

linux initramfs加载系统指令_正在生成initramfs下面来介绍一下initramfsinitramfs是编到内核中的一种根文件系统,使用的是cpio格式,处理流程和我们之前介绍的initrd机制的cpio格式的流程几乎一样,只不过这个是编译到内核里的,需要用到时内核会自行解压使用。我们在编内核的时候,可以通过Initramfssourcefile(s)来设置需要编入内核的文件系统的路径。Generalsetup—>(就是CO…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

下面来介绍一下initramfs

initramfs是编到内核中的一种根文件系统,使用的是cpio格式,处理流程和我们之前介绍的initrd机制的cpio格式的流程几乎一样,

只不过这个是编译到内核里的,需要用到时内核会自行解压使用。我们在编内核的时候,可以通过

Initramfs source file(s) 来设置需要编入内核的文件系统的路径。

General setup —>  (就是CONFIG_BLK_DEV_INITRD)

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

()  Initramfs source file(s)

如果编内核的时候选上了 Initial RAM filesystem and RAM disk (initramfs/initrd) support 这一项,而没有指定

initramfs的路径,内核在编译的时候会自动生成一个最小的cpio包附在内核中,这个自带的cpio包的内容与default_rootfs生成的一样。

如果不支持,会按照默认的过程来挂载,也会执行default_rootfs。

注:default_rootfs函数会创建/dev/console,我们自己制作的最基本的文件系统里也必须有/dev/console,

因为执行时期需要 tty (terminal)

下面还是先来澄清一下initrd和initramfs的关系(个人理解):

1. initrd是启动时加载的,initramfs是编译到内核中的

2. initramfs只支持cpio格式,initrd支持cpio格式和传统的image-initrd格式

3. initramfs被解析处理后原始的cpio包(压缩或非压缩)所占的空间 (&__initramfs_start – &__initramfs_end)

是作为系统的一部分直接保留在系统中,不会被释放掉, 而对于initrd镜像文件,如果没有在命令行中设置”keepinitd”

命令,那么initrd镜像文件被处理后其原始文件所占的空间 (initrd_end – initrd_start)将被释放掉。

4. cpio-initrd的处理和initramfs极其相似,cpio-initrd就是相当于把initramfs处理机制用initrd机制加载

5. 现在普遍用initramfs(嵌入式linux内核)或cpio-initrd(发行版linux的grub),具体有点参见工作流程

下面我们解包一个发行版linux的initrd加载的文件系统来了解一下(CentOS 6.4)

[root@192 boot]# cp initramfs-2.6.32-358.el6.i686.img /home/llz/initramfs/initramfs-2.6.32-358.el6.i686.img.gz

[root@192 initramfs]# gunzip initramfs-2.6.32-358.el6.i686.img.gz

[root@192 initramfs]# cpio -i –make-directories < initramfs-2.6.32-358.el6.i686.img

[root@192 initramfs]# ls

bin                 emergency  initqueue-finished                 lib          pre-udev  sysroot

cmdline             etc        initqueue-settled                  mount        proc      tmp

dev                 init       initqueue-timeout                  pre-pivot    sbin      usr

dracut-004-303.el6  initqueue  initramfs-2.6.32-358.el6.i686.img  pre-trigger  sys       var

是不是很像我们的文件系统,在挂载我们实际的文件系统之前,它就相当于文件系统

注:对于通用或复杂的内核你会看到CONFIG_BLK_DEV_INITRD被配置上了(如发行版linux,CentOS 6.4,你会在/boot/config-2.6.32-358.el6.i686

里看到 CONFIG_BLK_DEV_INITRD = y),因为发行版linux是比较通用的,要通过制作的initramfs镜像执行一些操作。

但对于嵌入式的linux内核,硬件比较固定,可以把需要的模块编译进内核(比如开发板常用的nand Flash),这时不需要一个

单独的initramfs镜像来干什么,这时只需要按照默认的来就行了,CONFIG_BLK_DEV_INITRD = n,这时会使用默认的initramfs

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169695.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASP.NET DropDownList1_SelectedIndexChanged使用

    ASP.NET DropDownList1_SelectedIndexChanged使用DropDownList1.AutoPostBack属性今天写代码给DropDownList1添加DropDownList1_SelectedIndexChanged事件,在运行测试时发现DropDownList1的index发生改变后DropDownList1_SelectedIndexChanged没有执行,查了一下DropDownList1的属性才知道AutoPostBack要设置…

    2022年7月18日
    13
  • batchnorm解读

    batchnorm解读转自:https://blog.csdn.net/qq_25737169/article/details/79048516目录第一节:Batchnorm主要解决的问题1.1InternalCovariateShift1.2covariateshift第二节:Batchnorm原理解读第三节:Batchnorm源码解读第四节:Batchnorm的优…

    2022年6月3日
    44
  • TCP拥塞控制的实现

    TCP拥塞控制的实现本文只是对TCP协议做个简要的介绍。TCP协议,即传输控制协议,与UDP协议同处于传输层,同样使用相同的网络层,但TCP提供了一种可靠的、面向连接的数据传输服务,它会在两个使用TCP的应用之间建立一个TCP连接,在该连接上进行数据的传输。TCP通过以下方式提供可靠性:1、应用程序被分割成TCP认为最合适发送的数据块。这点与UDP完全不同,应用程序产生的UDP数据报长度将保持不变,加上IP首部后,才会

    2022年6月24日
    26
  • java键值对_Java 读写键值对

    Properties类(读入写出键值对)是Map子类Map方法都能用publicstaticvoidmain(String[]args)throwsIOException{//读出Propertiespro=newProperties();FileInputStreamfis=newFileInputStream(“F:\\Demo.properties”);//Fi…

    2022年4月8日
    189
  • 初识VMM_vmem是什么意思

    初识VMM_vmem是什么意思三篇文章就VMM、虚拟机和容器的性能比较作了详细介绍对以下问题予以解决:如何虚拟化操作系统下的机器大多数现代CPU架构的设计都不是可虚拟化的如何在无法虚拟化的cpu上实现VMM。虚拟化让一台机器上可以运行多种操作系统类型和版本,文章通过讨论Disco的基本技术,了解虚拟化工作机制。要在虚拟机监视器上运行虚拟机所使用的基本技术是有限的直接执行,也就是操作系统如何虚拟化CPU…

    2022年9月22日
    2
  • Elastic:开发者上手指南

    Elastic:开发者上手指南您们好,我是Elastic的刘晓国。如果大家想开始学习Elastic的话,那么这里将是你理想的学习园地。在我的博客几乎涵盖了你想学习的许多方面。在这里,我来讲述一下作为一个菜鸟该如何阅读我的这些博客文章。我们可以按照如下的步骤来学习:1)Elasticsearch简介:对Elasticsearch做了一个简单的介绍2)Elasticsearch中的一些重要概念:cluster,n…

    2022年6月13日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号