zoukankan      html  css  js  c++  java
  • initrd和initramfs的区别是什么?【转】

    转自:https://www.zhihu.com/question/22045825

    不要被文件名迷惑,kernel 2.6 以来都是 initramfs 了,只是很多还沿袭传统使用 initrd 的名字

    initramfs 的工作方式更加简单直接一些,启动的时候加载内核和 initramfs 到内存执行,内核初始化之后,切换到用户态执行 initramfs 的程序/脚本,加载需要的驱动模块、必要配置等,然后加载 rootfs 切换到真正的 rootfs 上去执行后续的 init 过程。

    initrd 是2.4 及更早的用法(现在你能见到的 initrd 文件实际差不多都是 initramfs 了),运行过程大概是内核启动,执行一些 initrd 的内容,加载模块啥的,然后交回控制权给内核,最后再切到用户态去运行用户态的启动流程。

    从格式看,老的 initrd 是一个压缩的内存文件系统,具体是啥忘了,年月太久了。现在的 initramfs 是一个 gzip 压缩的 cpio 文件系统打包,如果遇到什么紧急情况需要处理的时候,你可以建立一个临时目录,把 initramfs 解压之后,直接 cpio -idv 解压出来,改之后再用 cpio 和 gzip 封上即可。虽然大家都喜欢用 tar 打包,但掌握点 cpio 在关键时刻还是可以救命的,呵呵
     
    继续浏览内容
    知乎
    发现更大的世界
    打开
    Chrome
    继续
     

    initrd是init ram disk,initramfs是init ram file system,前者把内存模拟成磁盘,后者直接把内存模拟成文件系统

    欢迎纠正
     
    继续浏览内容
    知乎
    发现更大的世界
    打开
    Chrome
    继续
     

    首先要介绍kernel启动init的两种方案。

    第一种是,ramdisk,就是把一块内存(ram)当做磁盘(disk)去挂载,然后找到ram里的init进行执行。

    第二种是,ramfs,直接在ram上挂载文件系统,执行文件系统中的init。

    initrd(init ramdisk)就是ramdisk的实现,initramfs就是ramfs的实现。

    Note:

    tmpfs,是ramfs的增强版方案。

    rootfs,是ramfs/tmpfs的一个特殊实例。

    所以initramfs也可以是tmpfs/rootfs的实现。

     
    继续浏览内容
    知乎
    发现更大的世界
    打开
    Chrome
    继续
     
    区别如下:
    1.制作方式
    initrd制作时需要关联loop back device,把它格式化为一个文件系统例如ext2,然后mount到你的host系统,再把需要的文件复制进去,而initramfs直接就是file system,一个cpio搞定。
    2.空间占用
    initrd在内核启动引导完就释放空间的,而initramfs的空间在内核解压完毕是一直占用的。
    3.灵活性
    initrd是基于某个文件系统固定大小,扩充空间需要重新走1的流程;而initramfs就是简单打包,简单灵活。
    【作者】张昺华
    【大饼教你学系列】https://edu.csdn.net/course/detail/10393
    【新浪微博】 张昺华--sky
    【twitter】 @sky2030_
    【微信公众号】 张昺华
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    .net 网站登录
    .net controller 跳转到 controller
    c# 访问Mysql
    C#去除字符串的最后一个字符
    try catch
    MySqlDataReader
    转:十六进制颜色与RGB颜色对照表
    js:Razor视图下服务器代码给Javascript变量赋值
    .netMVC:Web页面向后台提交数据的方式和选择
    jquery方法
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/13737336.html
Copyright © 2011-2022 走看看