gpt4 book ai didi

linux - 在没有 rootfs 的情况下使用 Bare initramfs

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:12 25 4
gpt4 key购买 nike

我正在尝试使用 initramfs 作为 linux 内核引导的文件系统。我希望我的文件系统是最小的,所以我只使用没有 rootfs 的 initramfs。现在,一旦内核启动,它就会从 initramfs 执行/init,我尝试在 init 中挂载 proc 和 sysfs,如下所示。

#!/bin/busybox sh
echo "Mounting Proc and Sysfs"
# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys

我还需要添加什么才能使用 initramfs 获得命令提示符。当我执行上面的 init 命令时,出现以下错误。

New FileSystem
Mounting Proc and Sysfs
This script just
[ 4.524724] sh (116) used greatest stack depth: 13832 bytes left mounts and boots the rootfs, nothing else!
[ 4.537448] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
[ 4.537448]
[ 4.537453] CPU: 0 PID: 1 Comm: init Not tainted 4.1.17-ltsi-rt18 #4

最佳答案

您的问题是您的 shell 脚本(又名“init”)退出了。内核不会运行超过 PID 1 退出的点。常规 init 序列通过使用 exceve 抛出 PID 1 来解决这个问题(即 - initramfs 中的 init 调用 exceve 以切换到根文件系统中的 init,等等)。

我建议在 init 的末尾添加对/bin/sh(bash、zsh 等)的调用,然后调用 shutdown(这样如果 shell 退出,系统就会停止)。这将为您提供一个可以使用的 shell。

此外,由于您似乎已经在使用 busybox,因此它有一个非常有用的 init 实现。您可以使用它来启动实际的 init 序列,使用实际的 shell 和实际的 TTY 控制。

关于linux - 在没有 rootfs 的情况下使用 Bare initramfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com