内核与ramdisk到底是什么关系?

2024-08-30 17:32
文章标签 关系 到底 内核 ramdisk

本文主要是介绍内核与ramdisk到底是什么关系?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

假如把所有驱动/模块都编译进内核(注:即编一个通用的、万能的内核),那自然没问题,但是这样就违背了“内核”的精神或本质,所以一般来说驱动/模块都驻留在根文件系统本身上/lib/modules/xxx,那么“鸡蛋”问题就来了,现在要mount根文件系统需要根文件系统上的模块文件,怎么办?于是,想出ramdisk内核总是能安装ramdisk的(注:这是因为ramdisk临时文件系统和内核一样,也是由bootloader通过低级读写命令(如uboot用nand read,而不用通过文件系统层提供的高级读写接口)加载进内存,因此内核可以挂载内存里ramdisk文件系统),然后把所有可能需要的驱动/模块都放在ramdisk上首先,让内核将ramdisk当作根文件系统来安装,然后再用这个根文件系统上的驱动来安装真正的根文件系统,就将这个矛盾问题解决了  

ramdisk还举出一个作用,现在的发行版在boot时一般都是图形界面的,那么,ramdisk就可以放framebuffer驱动和一些图片来做这种简单的动画。
前一段时间刚好也在研究ramdisk, 下面是我找到的关于ramdisk的资料,希望对楼主有用
在 Linux kernel 2.4 中,initrd 大致的处理流程如下:(方括号表示主要的执行单元)[boot loader] Boot loader 依据预先设定的条件,将 kernel 与 initrd 这两个 image 载入到 RAM [boot loader -> kernel] 完成必要的动作后,准备将执行权交给 Linux kernel [kernel] 进行一系列初始化动作initrd 所在的记忆体被 kernel 对应为 /dev/initrd 装置设备,        透过 kernel 内部的 decompressor (gzip 解压缩) 解开该内容并複製到 /dev/ram0 装置设备上 [kernel] Linux 以 R/W (可读写) 模式将 /dev/ram0 挂载为暂时性的 rootfs [kernel-space -> user-space] kernel 准备执行 /dev/ram0 上的 /linuxrc 程式,并切换执行流程 [user space] /linuxrc 与相关的程式处理特定的操作,比方说准备挂载 rootfs 等 [user-space -> kernel-space] /linuxrc 执行即将完毕,执行权转交给 kernel [kernel] Linux 挂载真正的 rootfs 并执行 /sbin/init 程式 [user space] 依据 Linux distribution 规范的流程,执行各式系统与应用程式 

值得一提的是,以上「两阶段开机」是 initrd 提出的弹性开机流程,在真实的应用中,也可能从未需要挂载真正的 rootfs,换言之,只是把系统当作都在 RAM disk 上运作,或者永远都在 initrd 所引导执行的 /linuxrc 程序中执行 (注意:kernel 永远保留 PID=1 作为 init process 识别,而 /linuxrc 执行的 PID 必非为 1),在许多装置如智慧型手机,都是行之有年的,不过这不影响我们后续的探[/quote]
里边所说的 initrd 大体上就是指 包含根文件系统的ramdisk

这篇关于内核与ramdisk到底是什么关系?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121476

相关文章

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

MYSQL关联关系查询方式

《MYSQL关联关系查询方式》文章详细介绍了MySQL中如何使用内连接和左外连接进行表的关联查询,并展示了如何选择列和使用别名,文章还提供了一些关于查询优化的建议,并鼓励读者参考和支持脚本之家... 目录mysql关联关系查询关联关系查询这个查询做了以下几件事MySQL自关联查询总结MYSQL关联关系查询

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har