制作initramfs镜像_原版镜像和引导镜像

制作initramfs镜像_原版镜像和引导镜像Linuxkernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程。在grub中提供了一个选项“root=”用来指定第一个文件系统,但随着硬件的发展,很多情况下这个文件系统也许是存放在USB设备,SCSI设备等等多种多样的设备之上,如果需要正确引导,US

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

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
  Linux kernel在自身初始化完成之后,需要能够找到并运行第一个用户程序(这个程序通常叫做“init”程序)。用户程序存在于文件系统之中,因此,内核必须找到并挂载一个文件系统才可以成功完成系统的引导过程。


在grub中提供了一个选项“root=”用来指定第一个文件系统,但随着硬件的发展,很多情况下这个文件系统也许是存放在USB设备,SCSI设备等等多种多样的设备之上,如果需要正确引导,USB或者SCSI驱动模块首先需要运行起来,可是不巧的是,这些驱动程序也是存放在文件系统里,因此会形成一个悖论。


为解决此问题,Linux kernel提出了一个RAM disk的解决方案,把一些启动所必须的用户程序和驱动模块放在RAM disk中,这个RAM disk看上去和普通的disk一样,有文件系统,有cache,内核启动时,首先把RAM disk挂载起来,等到init程序和一些必要模块运行起来之后,再切到真正的文件系统之中。


上面提到的RAM disk的方案实际上就是initrd。如果仔细考虑一下,initrd虽然解决了问题但并不完美。比如,disk有cache机制,对于RAM disk来说,这个cache机制就显得很多余且浪费空间;disk需要文件系统,那文件系统(如ext2等)必须被编译进kernel而不能作为模块来使用。


Linux 2.6 kernel提出了一种新的实现机制,即initramfs。顾名思义,initramfs只是一种RAM filesystem而不是disk。initramfs实际是一个cpio归档,启动所需的用户程序和驱动模块被归档成一个文件。因此,不需要cache,也不需要文件系统。


更加详细的initramfs的资料可以参考如下:


(1) 黃敬群先生的blog:深入理解 Linux 2.6 的 initramfs 機制


http://blog.linux.org.tw/~jserv/archives/001954.html


(2) initramfs, a new model for initial RAM


http://www.linuxdevices.com/articles/AT4017834659.html


下面是一些使用initramfs的简单帮助


1. 查看initramfs的内容


# mkdir temp ; cd temp


# cp /boot/initrd.img-2.6.24-16 initrd.img-2.6.24-16.gz


# gunzip initrd.img-2.6.24-16.gz


# cpio -i –make-directories 





2. 创建initramfs


命令:mkinitramfs, update-initramfs


1) mkinitramfs


# mkinitramfs -o /boot/initrd.img 2.6.24-16


Note: 2.6.24-16是需要创建initramfs的kernel版本号,如果是给当前kernel制作initramfs,可以用uname -r查看当前的版本号。提供kernel版本号的主要目的是为了在initramfs中添加指定kernel的驱动模块。mkinitramfs会把/lib/modules/${kernel_version}/ 目录下的一些启动会用到的模块添加到initramfs中。


2)update-initramfs


更新当前kernel的initramfs


# update-initramfs -u


在添加模块时,initramfs tools只会添加一些必要模块,用户可以通过在/etc/initramfs-tools/modules文件中加入模块名称来指定必须添加的模块。


         


本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u3/93706/showart_1905395.html

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

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

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


相关推荐

  • idea2021.8.2激活码【中文破解版】

    (idea2021.8.2激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlTR0LFTT656-eyJsaWNlbnNlSWQi…

    2022年3月22日
    64
  • for while循环语句举例python_for循环语句python

    for while循环语句举例python_for循环语句python程序在一般情况下是按顺序执行的。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式1.循环控制语句在了解循环语句的使用方法之前,我们先来了解几个循环控制语句:1)…

    2022年8月12日
    6
  • Oracle如何创建数据库[通俗易懂]

    Oracle如何创建数据库[通俗易懂]C:\Users\爸爸>sqlplus–执行OracleSQL*Plus:Release11.2.0.1.0Productionon星期四3月1014:14:052022Copyright(c)1982,2010,Oracle.Allrightsreserved.请输入用户名:system–用户名输入口令:–密码连接到:OracleDatabase11gEnterpriseEditionRelease11.2.0.1….

    2022年9月22日
    4
  • C# 经典排序算法大全

    C# 经典排序算法大全

    2022年1月4日
    45
  • easyOCR_功能测试包括

    easyOCR_功能测试包括EasyOCR是一个用python编写的OCR三方库。git地址为:https://github.com/JaidedAI/EasyOCR。由于笔者从事的是java开发,对python并不熟悉,所以实际上是从python开发环境安装开始的。类似于jdk,python开发也依赖于python环境,而因为python各版本之间差异很大,很多时候不同组件依赖的是不同的python版本,甚至小版本之间也存在兼容性问题,所以网上推荐使用的是Anaconda环境管理软件。Anaconda可以隔离出多个pytho

    2025年5月23日
    4
  • 防止网站被挂马_网站被挂马的原因

    防止网站被挂马_网站被挂马的原因今天遇到一个很奇怪的挂马问题,查关键词,查数据库等常规方法都没有找到原因,debug断点都放在了程序执行代码最前面还是输出挂马内容,用php探针发现也有代码,所以确认了是iis全局的问题,所以查加载查组件,最终经过比对是iis被黑添加了模块,被添加的名称很具有迷惑性,通常伪装的很像系统模块,遇到查不到是什么地方挂马,可以放一个探针来判断下是不是iis问题。»转载请保留出处:豫章小站…

    2022年9月29日
    2

发表回复

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

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