https://blog.csdn.net/tankai19880619/article/details/16885615

之前《Linux启动过程分析》内核挂载根文件系统一文,分析的rootfs、其实就是解决了Linux的VFS架构下初始挂载点的创建问题。

下边说的Initramfs/initrd则是填充(仅仅是释放文件到rootfs根目录)/扩充(通过挂载其他文件系统类型到rootfs指定目录)rootfs的关键,以保证Linux系统的后续启动。

另外一个好处是,这样配置可以将一些驱动编译成内核模块、从而减小内核img的开销。

一、简介

1.initrd

在早期的linux系统中,一般只有硬盘或者软盘被用来作为linux根文件系统的存储设备,因此也就很容易把这些设备的驱动程序集成到内核中。但是现在的嵌入式系统中可能将根文件系统保存到各种存储设备上,包括scsi、sata,u-disk等等。因此把这些设备的驱动代码全部编译到内核中显然就不是很方便。

为了解决这一矛盾,于是出现了基于ramdisk的initrd( bootloader initialized RAM disk )。Initrd是一个被压缩过的小型根目录,这个目录中包含了启动阶段中必须的驱动模块,可执行文件和启动脚本。当系统启动的时候,bootloader会把initrd文件读到内存中,然后把initrd文件在内存中的起始地址和大小传递给内核。内核在启动初始化过程中会解压缩initrd文件,然后将解压后的initrd挂载为根目录,然后执行根目录中的/linuxrc脚本(cpio格式的initrd为/init,而image格式的initrd为/initrc),您就可以在这个脚本中加载realfs(真实文件系统)存放设备的驱动程序以及在/dev目录下建立必要的设备节点。这样,就可以mount真正的根目录,并切换到这个根目录中来。

2.Initramfs

在linux2.5中出现了initramfs,它的作用和initrd类似,只是和内核编译成一个文件(该initramfs是经过gzip压缩后的cpio格式的数据文件),该cpio格式的文件被链接进了内核中特殊的数据段.init.ramfs上,其中全局变量__initramfs_start和__initramfs_end分别指向这个数据段的起始地址和结束地址。内核启动时会对.init.ramfs段中的数据进行解压,然后使用它作为临时的根文件系统。

二、区别

1.内核配置

make menuconfig

支持Initramfs的内核配置:

General setup->Initial RAM filesystem and RAM disk(initramfs/initrd) support

General setup->Initramfs source file(s)

填写根文件系统的具体路径,如:../out/target/product/tclm6/root

这时,根文件系统编入内核vmlinux\zImage\uImage。

支持initrd的内核配置(需要内核支持内存盘驱动):

General setup->Initial RAM filesystem and RAM disk(initramfs/initrd) support

RamDisk内存盘驱动

Device Drivers->Block devices->RAM block device support

启动参数

Boot options->Default kernel command string

填写如下:mem=32M console=ttySAC0 root=/dev/ram initrd=0xc1000000,0x00600000 ramdisk_size=8192 rw

————————————————

版权声明:本文为CSDN博主「雷古拉斯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/tankai19880619/java/article/details/16885615

阅读(254) | 评论(0) | 转发(0) |

initramfs下启动linux_《Linux启动过程分析》之区别Initramfs与initrd相关推荐

  1. Linux下社交平台,Linux 启动

    > 1. 如启动失败请 查看[坑点概述](https://doc.fastadmin.net/wanlshop/299.html) ## Linux运行IM即时通讯 #### 1\. 远程连接L ...

  2. 从无盘启动看 Linux 启动原理

    作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了 volumio(https://volu ...

  3. linux启动管理,Linux启动管理 详述

    一 系统运行级别 如果想查看运行级别,用runlevel init 运行级别 就可以改变系统运行级别 系统默认级别,也就是开机进入哪个级别,在/etc/inittab中 二 启动过程 首先是BIOS加 ...

  4. centos7无盘启动_从无盘启动看Linux启动原理

    作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器.一凡研究后我看上了volumio( 我打算让volumio运 ...

  5. linux启动 profile,Linux 启动时profile、bashrc、~/.bash_profile、~/.bashrc、~/.bash_profile执行顺序以及文件说明...

    Linux 启动时profile.bashrc.~/.bash_profile.~/.bashrc.~/.bash_profile执行顺序以及文件说明 一.执行顺序 登录linux时,/etc/pro ...

  6. php 启动php-fpm,linux启动多个php-fpm

    这里只写如何启动管理,要使用命令脚本启动请百度 如何配置自启php-fpm 1.查询到php-fpm配置文件 linux命令:whereis php-fpm 例: '/usr/sbin/php-fpm ...

  7. linux 启动 参数,Linux启动参数

    Linux启动参数 发布时间:2008-09-03 15:46:31来源:红联作者:Sednol linux noapic (跳过硬件检测) linux pci=noapic (跳过PCI卡部分硬件检 ...

  8. linux制作电脑启动盘,Linux启动盘的制作Linux -电脑资料

    Linux的启动软盘有boot盘和boot/root盘之分,所谓的boot盘只能用来启动已经安装在硬盘上的 Linux系统 ,而boot/root盘本身就是一个 迷你Linux系统, Linux的启动 ...

  9. linux内核启动文件系统,Linux启动过程中文件系统的加载

    前言:我觉得我的文章相对来说都是比较浅显的.一些初学者可以看看,这也是我不在嵌入式那个版上发文的原因.对于高手来说,如果你们不吝啬时间的话,希望也能帮我看看,指点一下其中的错误.这也是我到这里来和大家 ...

  10. 计算机启动和linux启动

    计算机是如何启动的 http://www.ruanyifeng.com/blog/2013/02/booting.html Linux 的启动流程 http://www.ruanyifeng.com/ ...

最新文章

  1. TensorFlow版的“Hello World”,运行官网第一个例子
  2. ios多线程开发的常用三种方式
  3. MySql数据库操作遇到的蛋疼二三事
  4. c c mySQL机票设计_期末课程设计之 c++操作mysql完成机票预订系统(vc 6.0配置mysql环境)...
  5. 解决cell循环利用造成的重复勾选
  6. java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
  7. 微服务feignclient_搞微服务用阿里开源的 Nacos 真香啊
  8. python 运行cmd命令失败怎么办_python manage.py runserver命令在cmd命令框中可以正确执行,但是在pycharm的终端中运行就失败了!...
  9. Facebook去年从中国获50亿美元广告收入 占营收10%
  10. TDirectory.GetParent获取指定目录的父目录
  11. 一看数分就想写个程序玩玩。。。
  12. AJAX 必用的情况(待选........)
  13. mysql增加行_MySQL添加新行
  14. Web前端知识点总结(持续更新中...)
  15. RTL8188 Linux驱动移植
  16. 1053 住房空置率 (20分)
  17. FileReader的编码问题
  18. 2022-04-26 linux文件系统解读
  19. 51单片机(二)8051内核及STC89C52介绍
  20. miniUI实现指定行可编辑,其他行仍然只读

热门文章

  1. 使用DMO遍历xml文件(将xml文件中要获取的内容存到ArrayList集合中再取出来)(DMO解析)
  2. 直播软件开发:直播APP源码的重要程度
  3. 爱奇艺短视频软色情识别技术解析
  4. Python括号配对变形题目
  5. 事件(DOM事件绑定)
  6. LeetCode题解 —— 三倍快乐 很难不爱
  7. 前端js实现微信心形相册拖拽
  8. 项目3-食物图片分类
  9. 【机器学习】Lasso模型
  10. 钽电容和陶瓷电容区别分析