问题标签 [initrd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
osdev - 查找 GRUB2/Multiboot 'module' (aka initrd) 的位置
我正在开发一个操作系统,需要加载一个 INITRD(grub 命令“模块”)并且找不到关于模块加载到哪里(在 RAM 中)的信息
grub 是否有办法告诉我,或者它是固定地址还是以上都没有?任何帮助,将不胜感激
arm - aurel32 qemu 图像 arm vs mips
我目前正在学习如何使用 Qemu 模拟 mips(el) 和 arm 架构。我用于两种架构的图像是来自本网站的 aurel32,https: //people.debian.org/%7Eaurel32/qemu/
我注意到 mips 图像没有 initrd,而 arm 图像有 initrd。我不确定为什么 arm 在运行 Qemu 时需要 initrd 而 mips 不需要。
有谁知道为什么会这样?
谢谢您的帮助!
linux - 理解嵌入式系统明显重复的 initrd
我正在尝试分析和理解运行 linux 的嵌入式系统。
我对 linux 引导过程、嵌入式 linux 等还很陌生,所以我必须学习很多东西,但更喜欢边做边学。所以分析一个系统是我试图理解这一切的方式。通过查看 bootmsg、检查一些脚本和提供的文件(固件)并尝试通过在这里和网络中的其他地方搜索答案来尝试了解发生了什么,我已经获得了一些见解并学到了很多东西。这也可能是我可能会使用一些错误表达的原因,我希望你能理解。Atm 我无法直接询问这个系统的创建者,所以我希望你能在这里帮助我一些答案。
所以系统得到了一个 SOC(Marvell Armada-370 88F6707-A1)和一些闪存(128 MiB - Hynix NAND(HY27U1G8F2BTR))和 DRAM(512 MB),并且似乎从 SPI 闪存(1MB)加载引导加载 U-Boot。
如上所述,因为U-Boot用作引导加载程序,然后加载一些Linux version 3.2.34.
我想我在这里已经了解了相当多的一般引导过程,但是根据提供的bootargs
.
以下是printenv
命令的摘录(U-Boot 环境)
我看到他们将内核和压缩的 ramdisk 内容加载到 ramload0=nand read.e 0x02000000 0 360000
和loadr0=nand read.e 0x04000000 800000 300000
. 内核在启动时查看0x04000000
ramdisk_image 并解压缩以使用初始 rootfs 的内容。然后通常的过程以linuxrc
/init
开始……最后,按照内核命令行 ( ) 中的说明加载来自 nand 的正常文件系统(这里是 ubi 设备 0 的 rootfs 分区root=ubi0:rootfs ubi.mtd=3,2048 rootfstype=ubifs
)。这就是我所理解的这里正在发生的事情,并且可能非常简单。
我现在想知道的是以下bootargs
部分initrd=0x12000000
。当我们已经让内核知道压缩 ramdisk 的真实性(作为 的第二个参数)时,我不太明白为什么它们在这里提供不同的地址bootm
。我使用和不使用此参数启动系统,似乎没有区别。
正如我对阅读该initrd=
参数的理解一样,它似乎与已经传递给的第二个参数做同样的事情bootm
,它告诉内核在哪里可以找到initrd
加载初始的rootfs
.
谁能解释为什么我们在这里将两个不同的位置传递给内核的initrd?这只是一些被忘记删除的过时东西还是有原因的?
在此先感谢您的帮助。我希望我没有错过任何东西,而且问题还没有在这里得到回答,但我找不到任何东西。
编辑2:
感谢评论中的@sawdust,我更好地理解了这里实际发生的事情,并看到了向问题添加更多信息的重要性,以便更清楚地理解答案。
这里是一个简短的摘录bootmsg
我也总是错过这部分的一些信息,这bootm
可能已经暗示了这里发生的事情。并且可能与相同地址的存在相关应该导致答案的路径。
edit-1:添加了有关硬件的更多信息
edit-2:添加bootmsg
了更多信息
linux-kernel - 内核恐慌 - 不同步:请求的 init /init 失败(错误 -2)
附加更多的引导日志。
我正在为实验性 FPGA 平台构建嵌入式 linux 操作系统。我使用了上游 U-boot(boot-loader)、linux(kernel) 和 buildroot(仅用于文件系统)。
我遵循了一些示例,并在我的 linux 配置中启用了所需的 initrd/initramfs 支持。
我在 u-boot 中使用 bootm 命令加载了一个 FIT 映像,该映像由 linux 内核、dtb 和 rootfs.cpio(从 buildroot 编译)组成。相关信息:FIT测试
这些是传递给内核的引导参数:
笔记:
我尝试了其他几件事,但导致了同样的错误。
- 分别传递内核、dtb 和 fs 映像。
- 尝试通过 init=/bin/sh , /sbin/init , /etc/init , /bin/init
- 尝试了一个基本的 initramfs,只有一个 init 脚本、简单的目录结构和一个单独编译的busybox,放在 /bin/busybox 中,带有符号链接。
- 我没有传递外部 FS,而是传递了 initramfs 源的路径,并使用CONFIG_INITRAMFS_SOURCE将其编译到内核中。
我将不胜感激任何关于我可能遗漏的反馈/指针,现在一直停留在这个问题上。
android - Android 的 initrd.img 上的 init 中包含什么?
我用它解压了 initrd.img,cat initrd.img | gunzip | cpio -vid
然后有一个名为的可执行文件init
,我认为这是内核运行的第一件事。然而,它有什么作用?是否有一个我可以在 google AOSP 源上查看的示例,以便我有一个想法?这个很可能是小米修改的