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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 键盘失灵重启电脑就没事了_笔记本电脑重启后黑屏

    键盘失灵重启电脑就没事了_笔记本电脑重启后黑屏问题描述:下午,卸载了360软件(安全卫士、软件管家、360安全浏览器)后,重启电脑,然后电脑开始硬盘扫描、检测,结果告知不能成功修复。随后,我选择“继续使用Win10“选项,就发现电脑键盘已经失灵,无法输入开机密码,一度让我抓狂。在随后的的近3个小时的过程中,经历了以下调试过程:1.硬重启电脑(即,按住开机键不动,直到重启),发现没用2.重启后按F8、F10键试图进入安…

    2022年8月12日
    6
  • Vim编辑完如何保存退出

    Vim编辑完如何保存退出编辑完按Esc退出编辑模式此时输入::wq保存后退出:wq!强制保存后退出:w保存但不退出:w!若文件属性为只读时,强制写入该文档:q不保存并退出:q!不保存并强制退出…

    2022年8月24日
    5
  • 世界上速度最快的输入法 Fleksy 为了支持中国

    世界上速度最快的输入法 Fleksy 为了支持中国

    2021年9月8日
    89
  • 电脑蓝屏代码0x000000ed的解决方法_蓝屏错误代码0xc000007b

    电脑蓝屏代码0x000000ed的解决方法_蓝屏错误代码0xc000007b一些用户发现自己的XP系统出现蓝屏,屏幕上显示的代码是0x000000ED,遮盖如何解决呢?今天小编就给大家分享一下解决这个问题的方法吧。导致蓝屏原因:一般都是由系统软件、内存、硬盘引起的。解决方法:1电脑不心装上了恶意软件,或上网时产生了恶意程序,建议用360卫士、金山卫士等软件,清理垃圾,查杀恶意软件,就可能解决。实在不行,重装,还原过系统,可以解决软件引起的问题。2如果不能进入系统,可…

    2022年10月8日
    6
  • Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程

    Alex 的 Hadoop 菜鸟教程: 第10课 Hive 安装和使用教程Hive提供了一个让大家可以使用sql去查询数据的途径。让大家可以在hadoop上写sql语句。但是最好不要拿Hive进行实时的查询。因为Hive的实现原理是把sql语句转化为多个MapReduce任务所以Hive非常慢,官方文档说Hive适用于高延时性的场景而且很费资源。

    2022年6月7日
    96
  • C语言中volatile关键字的作用

    C语言中volatile关键字的作用一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变

    2022年6月1日
    34

发表回复

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

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