问题标签 [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.

0 投票
0 回答
62 浏览

linux - Initramdisk 初始化脚本 - 捕获无效的内核驱动程序加载

最近我为我的initrd镜像添加了新的驱动程序,以便能够在 VMware 和 Hyper-v 平台下运行。

我的问题是,如何在驱动程序加载过程中发现故障?如果插入insmod失败,hv_vmbus我想跳过加载 5 个额外的驱动程序(以摆脱“未知符号 xyz”)。

截屏

0 投票
3 回答
1192 浏览

linux - 内核不会在 initrd 上调用 /init 脚本

每个人。我正在开发我的第一个嵌入式 Linux,我希望有一个不错的引导程序。我决定尽早使用 initrd 来启动它,但看起来内核没有调用 /init 脚本。它安装我的 ram 磁盘并按照通常的引导顺序进行。

我尝试了各种我知道的调试来测试脚本是否被调用,但都没有成功。我完全没有错误。登录后,我可以看到安装在 /initrd 的 ram 磁盘,就像它应该的那样。

我正在使用带有社区提供的驱动程序和内核(3.4)的 Cubieboard 2。我知道这是一个旧版本,但它是迄今为止对 sunxi SoC 支持最好的版本。我还使用Linaro提供的两个文件系统(rootfs 和 initramfs)作为基础。

有人可以帮我吗?

谢谢你。

0 投票
0 回答
2666 浏览

linux - 如何在 initramfs 中加载内核模块

我有一个块设备模块,必须在文件系统之前加载。有人告诉我,我已将模块包含到initramfs并从中启动。

然后我创建了自己的initramfs宽度 dracut,将我的.ko文件放入/user/lib,我还生成了新的grub.cfg.

但是,重启后,lsmod显示.ko文件没有加载。

所以我想知道我应该怎么做才能使模块在我重新启动时自动加载?

谢谢你。

PS我正在使用Centos 7。

0 投票
1 回答
1202 浏览

android - 使用 abootimg 解压/打包 AOSP 恢复映像无法启动

我使用 AOSP 源代码为我的 Nexus 7 设备构建了一个 recovery.img(使用 flo 午餐设置)。我可以像这样使用它:

但是,当我使用 abootimg 实用程序解压缩并重新打包 recovery.img 文件(不对 ramdisk 进行任何修改)并使用 recovery.img 重新尝试启动时,我的 Nexus 7 只是进入了 Google 闪屏循环。进入闪屏后设备不断重启。

有关详细信息,这是我的步骤:

导致更新的 recovery.img 无法按预期工作,即使它只是原始 recovery.img 文件的未修改副本。

0 投票
2 回答
765 浏览

linux - 如何查找系统上的所有 initrd.img* 文件

一直在为 Ubuntu 开发一些自定义 ISO,所以我有很多不同的挂载等。我想扫描所有内容以找到所有 initrd.img* 文件,但我在 find 命令中得到了“功能”的计时. 定位命令不起作用,因为没有安装这个东西。

如您所见,我可以使用 find 来识别物理文件,但我需要找到所有 initrd.img 链接。

怎么办?

0 投票
0 回答
830 浏览

linux-kernel - init 进程在 linux 内核启动时死亡

我正在尝试在定制的 p2020 板上启动内核。内核崩溃并出现以下异常。

init[1]:4801b9dc nip 4801b9dc lr 48002b08 代码 3000 处的未处理信号 4

initrd它以同样的方式消亡ramfs

我正在使用一个 initrd,它曾经在基于 t104x 的板上工作。上述错误的原因可能是什么?是不是initrd不适合P2020?我们是否需要为特定处理器重新编译 initrd?

0 投票
1 回答
960 浏览

linux - 在没有 root 的情况下更改 cpio 存档中的所有权

我需要将文件添加到 initramfs 文件(我拥有该文件,因为这是用于其他一些设备),但是我在我的开发机器上没有 root 权限。通常的方法是解压缩 initramfs,添加文件,将所有者更改为 root 并再次打包。我不能这样做,因为在这台机器上更改所有者需要 root 权限。如果我不更改所有者,系统可能会表现得很奇怪(而且它不是一个干净的设置)。

我不能在目标系统上执行此操作,因为它是一个嵌入式系统,它只有对 initramfs 文件的只读访问权限。

有没有办法在打包 cpio 存档期间或之后更改权限?

0 投票
1 回答
423 浏览

ubuntu - `scripts/init-top/all_generic_ide`中的`hooker script`实际上是什么?

我正在initUbuntu 的 ramdisk 中学习。在scripts/init-bottom/udev我看到这个代码片段:

它几乎出现在脚本中的每个脚本scripts/**(如scripts/init-top/all_generic_ide,scripts/local-bottom/ntfs_3g,scripts/local-premount/fixrtc等)。虽然它们可能有一些细微的差异,但它们中的大多数只是在正文代码的顶部有相同的片段。

我从 Ubuntu 阅读了 wiki:initramfs-tools

我完全不知道它的目的是什么。我想我可以意识到它的流程,但就是不知道它会做什么?

0 投票
1 回答
1656 浏览

linux-kernel - ARM 有时会卡在“正在启动内核映像 ...”

一开始我想宣布它是部分成功的故事。:-)

背景:为了个人的自我开发,我有一个想法,完成半LFS程序为我的ARM Cubieboard2构建Linux。为什么是半成品?因为我的不耐烦使我产生了从已经构建的 Fedora 23 映像中获取一些组件的想法。

因此,程序或多或少如下:

阶段 0

Crosstool-ng 已用于构建交叉编译工具链。(我们跳过这一步的细节。老实说,当使用 gcc-arm-linux-gnu、gcc-c++-arm-linux-gnu 和 binutils-arm-linux-gnu 包时,结果是一样的。)

阶段1

MMC卡已配置如下

步骤1

第2步

sdb.gpt.prt 内容在哪里

第 3 步

第4步

第 5 步

第 6 步

阶段2

U-Boot 已编译

步骤1

最近的分支已从 git://git.denx.de/u-boot 签出

第2步

Bootloader + SPL 已构建如下

结果 u-boot-sunxi-with-spl.bin 已经生成。

警告: SEMI 下面开始。

第三阶段

Fedora 23 镜像已下载并挂载

步骤1

原始图像文件已下载

第2步

图片已解压

第 3 步

引导和根文件系统已安装

第 4 阶段

Bootloader + SPL 已记录在 MMC 上

第 5 阶段

Fedora 引导分区已被复制和修改

步骤1

第2步

第 6 阶段

Fedora 根分区已被复制和修改

步骤1

第2步

中间结果

现在,使用插槽中的 MMC 卡启动 Cubieboard 后,系统挂起并显示著名的“正在启动内核映像...”消息。

但是,这并不是故事的结局。正如我一开始提到的,一个实验结果证明是成功的。也就是说,我尝试使用 Fedora 23 即提供的救援 initramfs 映像。extlinux.conf 与

带来了成功!

我试图分析有希望的结果的根本原因。我问自己的问题是“这两张图片有什么区别?”

产生以下输出:

此外

产生以下结果:

所以,“只有”一些额外的二进制文件。没有特殊的配置文件。

当然,我知道上面的检查方法是微不足道的。但在深入挖掘之前,我决定寻求一些提示。

我的问题是:

救援initramfs镜像成功的根本原因在哪里?


附录

extlinux.conf 条目

无法启动。这是启动日志:

但是 extlinux.conf 条目

成功启动。这是启动日志:

0 投票
0 回答
205 浏览

linux - getaddrinfo() 在自制的 initrd 中失败。如何调试引导过程?

我正在尝试使用诸如 Anti-Evil-Maid 之类的自写版本来保护我的工作站的引导过程,但我无法让 TPM 守护程序运行。问题似乎是,只要连接客户端触发 .getaddrinfo() 调用,TCSD 就会失败。这意味着,程序启动,但在使用时立即退出。

到目前为止,我已经尝试通过 strace 确定 TCSD 的先决条件,并将相关文件和库复制到 initrd 中,但到目前为止我还没有超出上述范围。不幸的是,我无法将初始化进程中的日志复制到这篇文章中,因为一旦更改了根目录,所有文件都会消失,但我可以告诉你,到目前为止我已经尝试过什么。我假设问题通常与 glibc 或引导过程有关,但我不知道如何进一步调试它。

让我们从我复制到 initramfs 中的文件开始。挂钩脚本如下所示:

接下来,有一个脚本的缩短版本,我想运行:

/etc/initramfs-tools/scripts/local-top/trousers

所以。而已。当 tpm_unsealdata 尝试连接到 TCSD 时,TCSD 进行 getaddrinfo() 调用,失败并退出。trousers/tpm-tools 包中的所有其他工具也是如此。

老实说,我对引导过程的早期阶段了解不多,所以我可能看不到任何东西,同时无法进一步调试。一些帮助将不胜感激。