如何在kernel启动后,加载initramfs

这篇具有很好参考价值的文章主要介绍了如何在kernel启动后,加载initramfs。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Linux系统中,Initramfs是一个根文件系统的临时文件系统,它在内核启动时加载到内存中,以便提供足够的基本功能来进行系统初始化和准备真实的根文件系统。如果你想在内核启动后使用initramfs,可以按照以下步骤:

  1. 创建initramfs

首先,你需要创建一个包含必要文件和工具的initramfs。通常,initramfs由busybox、init脚本和其他一些工具和库组成。你可以使用如下命令创建:

 

复制代码

$ cd /path/to/initramfs $ mkdir -p {bin,dev,etc,proc,sbin,sys,usr/{bin,sbin}} $ cp /path/to/busybox bin/ $ ln -s bin/busybox init

上述命令将创建一个基本的initramfs结构,并将busybox复制到bin目录下,并将init符号链接到busybox二进制文件。

  1. 将initramfs打包

创建完initramfs之后,你需要将其打包为一个CPIO存档文件,例如:

 

复制代码

$ find . -print0 | cpio --null -ov --format=newc > /path/to/initramfs.cpio

上述命令使用find命令查找initramfs目录下的所有文件,并使用cpio命令将它们打包为一个CPIO存档文件。

  1. 配置内核

接下来,你需要在内核配置文件中启用initramfs支持。在内核配置文件中,打开以下配置选项:

 

复制代码

CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="/path/to/initramfs.cpio"

上述配置选项指定了内核启动时应该加载initramfs,并将其解压到内存中。

  1. 编译内核

完成内核配置后,编译内核并安装它。在编译内核时,确保你已经选择了包含刚刚所述配置选项的内核配置文件。

  1. 启动内核

最后,在内核启动时,它将加载initramfs并将其解压缩到内存中。一旦完成解压缩,内核将运行init脚本,该脚本负责初始化系统并加载真正的根文件系统。

综上所述,这就是如何在Linux内核启动后加载initramfs。文章来源地址https://www.toymoban.com/news/detail-417912.html

到了这里,关于如何在kernel启动后,加载initramfs的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RISC-V Linux系统kernel制作

    Linux 官网地址:https://www.kernel.org 安装依赖 配置完成后相应的配置项会保存在 .config 文件中。下一次执行 make menuconfig 时可以 load 这份配置文件,在此基础上进行修改。 编译完成后,在arch/riscv/boot下生成Image,该文件用于 qemu -kernel 参数。

    2024年02月11日
    浏览(27)
  • Kali Linux如何启动SSH并在Windows系统远程连接

    简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! 默认新安装的kali系统会关闭ssh 连接服务,我们通过命令打开: 启动后我们查看ssh 状态,active 表示ssh 正常运行 通常ssh 是使用账号或者密码进行登录连接,所

    2024年02月04日
    浏览(37)
  • Linux Kernel源码阅读: x86-64 系统调用实现细节(超详细)

    本文采用Linux 内核 v3.10 版本 本文不涉及调试、跟踪及异常处理的细节 一、系统调用简介 系统调用是用户空间程序与内核交互的主要机制。系统调用与普通函数调用不同,因为它调用的是内核里的代码。使用系统调用时,需要特殊指令以使处理器权限转换到内核态。另外,被

    2024年02月06日
    浏览(31)
  • 小白如何在MAC上安装Kali Linux

      1.打开Kali的官网下载系统镜像文件 2.选择自己电脑所对应的版本进行下载,直接可能下载比较慢下载BT在到迅雷进行下载会快一些 这里我使用的是PD虚拟机,也可以使用其他的虚拟机(PD虚拟机可以自动安装Kali)在这里我们讲一下如何手动安装 1.打开PD虚拟机点击继续 2.选择其

    2024年02月08日
    浏览(46)
  • 系统启动流程 - 理解modules加载流程

    ​编辑 Hacker_Albert  ·  202 linux 启动流程 module加载 1.启动过程分为三个部分 BIOS 上电自检(POST) 引导装载程序 (GRUB2) 内核初始化 启动 systemd,其是所有进程之父。 1.1.BIOS 上电自检(POST)   BIOS stands for Basic Input/Output System. In simple terms, the BIOS loads and executes the Master Bo

    2024年02月03日
    浏览(21)
  • 说说如何在SpringBoot中启动加载全局变量

    需要加载全局变量的情况很常见,如取通用的系统初始化配置等 Spring Boot 可以通过实现 CommandLineRunner 或 ApplicationRunner 接口,让某些代码在 Spring Boot 应用启动之后执行。因此,在启动时从数据库加载全局变量,可以在这些接口的 run() 方法中实现 在这个类中,全局变量被定义

    2024年02月16日
    浏览(23)
  • linux/ubuntu系统管理(8)ubuntu启动模式介绍以及如何进入单用户模式和恢复模式

    Ubuntu操作系统提供了多种启动模式,每种模式都有不同的用途和功能。下面将深入介绍Ubuntu的几种启动模式: 正常启动模式(Normal boot) :这是默认的启动模式,也是大多数用户使用的模式。在正常启动模式下,系统会按照正常的流程启动,加载所有必要的服务和驱动程序,

    2024年01月25日
    浏览(36)
  • Linux: 进程地址空间究竟是什么?进程地址空间存在意义何在?

     在C/C++中,我们常将内存分为: 代码区、常量区、全局区(静态区)、堆、栈 等等。相关内存区域划分如下:(X86, 32位平台) 如何验证C/C++中各区域的相对位置呢?  我们可以在每个区域中选择一个地址来验证C/C++中各区域的相对位置!!具体如下: 【源代码】: 【运行

    2024年04月08日
    浏览(64)
  • 完全理解ARM启动流程:Uboot-Kernel

    内容共计5W+字数,但是我还是很多地方说的不够尽兴。那么下次聊! bootloader是系统上电后最初加载运行的代码。它提供了处理器上电复位后最开始需要执行的初始化代码。 PC机上引导程序一般由BIOS开始执行,然后读取硬盘中位于MBR(Main Boot Record,主引导记录)中的Bootloader(例

    2024年04月15日
    浏览(37)
  • 基于aarch64分析kernel源码 三:启动代码分析

    这段代码是主要的入口点函数 primary_entry ,在 启动过程 中执行 一系列操作 后 将控制权切换到内核 。 以下是对每行代码的解释: 这行代码表示这是一个 本地符号 ,标识 primary_entry 函数的 开始位置 。 这三行代码调用了三个不同的函数。首先调用 record_mmu_state 函数来 记录

    2024年02月15日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包