Questions tagged «initramfs»

“初始RAM文件系统”是initrd的后继。它是一个根文件系统,已嵌入内核并在引导过程的早期加载。

2
Linux内核如何访问其分配的initramfs / initrd?
从您按下电源按钮开始,我试图了解整个计算机的启动过程。从引导加载程序到initramfs阶段,有一件我不太了解的东西。 给定此条目的Grub配置,取自最近的Ubuntu默认安装: insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set=root 96fb7310-5adb-4f66-bf59-04acd08d76a3 echo 'Loading Linux x.y.z ...' linux /vmlinuz-x.y.z root=/dev/mapper/some-device-name ro nomodeset echo 'Loading initial ramdisk ...' initrd /initrd.img-x.y.z 就系统状态和内存而言,这实际上是做什么的?我知道Grub的任务是“加载并运行内核”,并且它有自己的模块集来访问设备(或网络)上的文件以获取它们。在这里insmod的示例中- set root和search-但这只是从Grub的角度出发,并且不与内核共享,对吗? 我还猜测到Grub正在将内核加载(副本?)到内存(linuxcommand)并踢它以开始执行。(显然有两个不同的步骤-那么,怎么做?)可以在内核中读取并解释给定的参数(这是一个大字符串映射到内存中的某个地方吗?),并提供了安排所请求内容的选项。 我也看到了这个initrd选项。这指向我的gzip压缩的initramfs,它是启动所指定的实际根设备所需的root=。但是如何将这个initramfs提供给内核?它没有传递任何内存地址到可以加载它的位置,也不能访问它本身,因为它在内核启动之前就已经加载了。一些内核文档说,可以通过访问该initramfs文件系统“设备” /dev/ram0,但是我不知道它如何成为可访问的设备文件。我想,在水下看不见的东西正在发生。 我也看不到这与其他引导加载程序(包括嵌入式平台)之间的关系,例如使用U-boot / Coreboot。这是否与Grub(相同的标准内存地址)做相同的事情,并且在加载内核/初始化时,这些与Grub相比有多大? 只是为了澄清我的问题,我认为我确实理解了为什么存在不同的引导阶段以及发生了哪些过渡,但是我看不到它们是如何发生的以及每个阶段的确切职责是什么。我觉得我错过了一些“标准”,所有这些都归结为这些标准。 我希望对此有所解释。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.