首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用initrd引导Linux内核,或者用gem5引导initramfs?

如何用initrd引导Linux内核,或者用gem5引导initramfs?
EN

Stack Overflow用户
提问于 2018-03-14 00:58:42
回答 1查看 578关注 0票数 0

对于QEMU,我可以对initrd使用-initrd '${images_dir}/rootfs.cpio,也可以将initramfs映像直接传递给QEMU。

但是,如果我使用gem5 fs.py --kernel Image尝试initramfs镜像,它将失败,并显示以下信息:

代码语言:javascript
复制
fatal: Could not load kernel file

使用与QEMU能够使用的完全相同的initramfs内核映像。

而且我看不到类似于-initrd的东西。

我使用的唯一方法是用原始的vmlinux--disk-image传递一个ext2磁盘镜像。

https://www.mail-archive.com/gem5-users@gem5.org/msg15198.html

EN

回答 1

Stack Overflow用户

发布于 2019-01-21 23:51:57

gem5至少在arm和x86上看起来没有实现,因为initrd必须知道如何加载它并通知内核它的位置,而grepping initrd只在下面显示一些ARM命中:

代码语言:javascript
复制
src/arch/arm/linux/atag.hh

但它们被注释掉了。

现在,通过DTB chosen节点linux,initrd-startlinux,initrd-end属性将initrd传递给内核似乎很简单,因此实现起来可能非常简单:https://www.kernel.org/doc/Documentation/devicetree/bindings/chosen.txt (以及Gem5现有的DTB自动生成)+重用基础设施将任意字节加载到内存位置:How to preload memory with given raw bytes in gem5 from the command line in addition to the main ELF executable?

Initramfs无法工作,因为gem5只能从原始ELF文件vmlinux引导,并且initramfs镜像只能通过内核构建附加到更最终的镜像类型,如镜像或bzImage,QEMU可以使用它们来引导,另请参阅:https://unix.stackexchange.com/questions/5518/what-is-the-difference-between-the-following-kernel-makefile-terms-vmlinux-vml/482978#482978

编辑:在How to attach multiple disk images in a simulation with gem5 fs.py?中提到的补丁之后,不再需要以下内容。为了进行此测试,我还必须传递gem5 7fa4c946386e7207ad5859e8ade0bbfc14000d91的虚拟磁盘镜像。由于脚本不能很好地处理丢失的--disk-image,您可以只转储一些随机的512字节并使用它们:

代码语言:javascript
复制
dd if=/dev/zero of=dummy.iso bs=512 count=1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49261801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档