问题标签 [initramfs]

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 投票
1 回答
3642 浏览

linux - 使用 buildroot 和 uboot 配置 initramfs

我正在尝试使用 buildroot 和 uboot 让 initramfs 在嵌入式 linux 设备上工作。我一直按照指南在 buildroot 和内核配置中设置了 initramfs。但是据我所知,它没有内置到内核中,尽管输出中包含了 CPIO 或根 FS。

我的问题是双重的。首先,从高层次的角度来看,我对引导过程的理解是否正确?

  1. 第 1 阶段引导加载程序(Atmel/ARM 特定)启动并关闭
  2. 第 2 阶段引导加载程序(uboot)初始化一些东西,将内核加载到内存中并运行它
  3. 内核将 CPIO 存档放入内存,使其成为 root 并在该环境中运行 init

这意味着我闪存到芯片上的映像是一个带有引导和系统分区的 IMG,系统分区是 ext4,其中包含 CPIO 存档。我不确定如何从这里真正实现第 3 项。

二、在实际配置方面,Buildroot menuconfig有很多filesystems的选项

  • ext2/3/4 根文件系统(默认开启)
  • cpio 根文件系统(用作初始 RAM 文件系统)
  • 链接到 linux 内核的初始 RAM 文件系统

然后在内核配置中

  • 常规 -> 初始 RAM 文件系统和 RAM 磁盘 (initramfs/initrd) 支持
  • General -> Initramfs 源文件(设置为生成的cpio文件)

buildroot 在这里生成什么?从我的角度来看,我似乎得到了重复的图像(CPIO 和 ext4)并且 CPIO 被忽略了。

0 投票
2 回答
3333 浏览

centos - 如何在 CentOS 上禁用 Nouveau 内核驱动程序

我正在我的 GPU 机器上安装 CUDA。在此期间,我需要禁用 Nouveau Kernel Driver。

我确实在这里找到了解决方案:https ://askubuntu.com/questions/841876/how-to-disable-nouveau-kernel-driver

但是在 CentOS 上找不到 update-initramfs。

我在 CentOS 中寻找相当于 sudo update-initramfs -u

0 投票
2 回答
1695 浏览

debian - 使用其他配置文件生成自定义 initramfs 映像

我想为 Debian Stretch 创建一个 initramfs 映像,其中包括其他配置文件(比如/etc/a.conf)。

mkinitramfs -o initrd.img为了使图像包含此类文件,我必须在运行之前做什么?

0 投票
1 回答
708 浏览

squashfs - OverlayFS 作为根 FS:我应该将 --move upper/lower/workdir 挂载到新根吗?

我在一个嵌入式系统上工作,该系统从位于 UBIFS 格式的 SPI 闪存上的 SquashFS 映像启动。我添加了 OverlayFS over / (root) 支持,以便我们可以更改所有文件,但在重新启动后重置它们。所有 OverlayFS 魔法都在 initramfs 中执行。在设置所有挂载点时,我mount --move /run和 UBIFS 闪存分区。我想知道我是否应该mount --move将 OverlayFS 的上/下/workdir 也放到新的根目录之前switch_root。没有它似乎确实可以工作,但有时我会自发重启,手动重启时会出现总线错误。

0 投票
1 回答
521 浏览

ubuntu - Unable to install lubuntu 18.10 on a UEFI system : BusyBox initramfs error

I am trying to install the latest version of Lubuntu . I copied the ISO to a USB stick using the normal 'dd' command. dd if=/pathto-iso of=/dev/usbstickmount

While trying to install through this usb stick , i get the below error :

0 投票
1 回答
272 浏览

linux-kernel - 自定义构建的内核在 Centos 7 上生成不可引导的 initramfs

我一直在构建自己的内核(4.19.37)并且在构建(make)或安装(make install_modules+ make install)期间没有任何问题。在我执行之前,一切似乎都很好grub2-mkconfig -o /boot/grub2/grub.cfg。执行此命令时,grub 会在其中找到我现有的和新的vmlinuz-*内核/boot/以及它们对应的initramfs-*.img. 但是,此时系统无限期挂起(> 几个小时)。 Ctrl+C似乎没有停止它,我必须重新启动。我已经研究了这个问题,我发现可能是一个问题是探测可引导操作系统的删除磁盘,我已经通过删除它们和添加GRUB_DISABLE_OS_PROBER=true/etc/default/grubper this SE post来消除它们。两者都没有帮助。

重新启动后,我最终进入grub>命令行,大概是因为grub2-mkconfig从未完成并损坏了 grub 配置文件。在这里,我可以毫无问题地加载新旧内核以及 initramfs,但是当我执行引导时,我得到内核恐慌:

结束内核恐慌 - 不同步:VFS:无法在未知块(1,0)上挂载根 fs

自然地,我的假设是initramfs-4.19.37.img我的构建过程产生了一些问题。作为一个实验,我测试了我是否可以加载新内核,但使用旧的 initramfs (4.19.10),它确实可以启动到emergency mode. 然而,我不能用新的 initramfs 做相反的旧内核。所以我的新 initramfs 图像有些可疑。

变得更聪明了,我的最后一个实验是使用mount. 它们都成功安装且没有错误,并且似乎具有相同的文件结构。我还比较了内核版本的新旧.config文件,差异很小。

其他一些注释/观察:

  • 在上图中,您可以看到List of all partions:没有产生任何内容,所以我想知道文件系统类型是否存在问题?我的硬盘是xfs用什么文件系统的initramfs?CPIO?
  • grub>命令行中,ls /生成我期望在/boot. 它包含所有我的vmlinuz-*initramfs-*.img文件
  • 我的文件系统是xfs
  • 我尝试了各种其他内核版本,结果相同
  • 我有两次成功的构建和安装,一次是现有的内核(4.19.10),这是一次升级,第二次是使用具有low-latency抢占模式的相同内核。我一生都无法弄清楚我当时做了什么不同的事情。

所以最后的问题是——initramfs这些构建的形式有什么问题?我还能做些什么来验证它的完整性?在为文件系统.config构建内核时,我应该做些什么改变?xfs


免责声明:所以这实际上是 [this question][3] 的延续,但我稍微简化了问题。那里的一些背景信息可能是相关的。

0 投票
1 回答
1702 浏览

linux - 忙箱初始化脚本。未找到挂载

我遇到了一个看起来有点奇怪的东西。

基础机器是 Ubuntu 18.04。我正在尝试创建一个自定义 initramfs + init 脚本,以用于与 qemu 实例一起使用的自定义编译内核。

从我用作 initramfs 基础的目录中:

只是现在需要的基础知识。busybox 二进制文件来自busybox-static 包,我已经确认它是静态编译的:

在初始化脚本中,我有:

从那里,创建一个 initramfs.gz:

当我将其设置为 qemu 的目标 initrd 时,内核按预期启动,然后:

mount 是busybox 的一部分。所以这很奇怪。

如果我修改 init 脚本并将/bin/busybox sh其作为要执行的第一个命令输入,那么我会如您所愿地进入一个 busybox 外壳。

然后帮助显示:

所以我去寻找坐骑,发现也没有找到。哦,但如果我在它前面加上 /bin/busybox 直接调用它,它就可以工作......:

如果我将 /bin/busybox 添加到它们,我可以成功执行命令:

似乎真的随机​​,什么可以从busybox工作,什么不能工作,什么可以找到,什么不可以找到,例如find很好:

我可以通过在 init 文件中的每个命令前面加上 来解决这个问题/bin/busybox,但如果我不必这样做,我真的宁愿不这样做!

0 投票
1 回答
550 浏览

embedded-linux - QEMU 网络和 getty 问题

我正在尝试使用 qemu 为基于 ARM 的虚拟机创建一个极简设置。我正在按照以下指南进行操作。

我正在使用以下命令运行 QEMU

我是,由于某种原因无法看到登录提示。这些是引导消息

在 buildroot 中,我尝试了 getty 波特率的各种配置,但无济于事。请给我一些关于到底出了什么问题的指示。目前我已经尝试使用 vt100、内核选择的波特率以及 vt100、115200,但都失败了

更新:到目前为止,在对命令行参数稍作修改后,我已经能够看到登录提示,如下所示:

此外,我无法使用 ssh 从我的 debian 主机登录 VM(从以下日志消息中可以看到,已在 buildroot 中选择了 ssh(在我的最新修改后出现)

我通过修改 VM 上的 sshd_config 文件启用了 root 登录。我也试过ssh root@localhost:2222了,ssh root@192.168.160.9但它就消失了(没有说连接是否被拒绝或任何东西)。我有点迷失在这里。

0 投票
1 回答
384 浏览

linux - Yocto Initramfs Transaction Error 添加 cryptsetup 包

我在 Ubuntu 18.04 LTS 和 meta-tegra 层 ( https://github.com/madisongh/meta-tegra ) 上使用 Yocto Warrior 为我的 NVIDIA Jetson Nano 构建根文件系统。

我想加密我的 SD 卡上的某个分区,所以我需要 openembedded 层中可用的 cryptsetup 包。我已经将它添加到我的图像中,并且生成的根文件系统已安装它。

问题是我需要将它添加到我的 initramfs 以便在启动时自动解密我的加密卷。

我得到的错误显示为:

我将 cryptsetup 添加到我的 bbappend 文件中,用于 initramfs 配方,如下所示(显示的是整个 bbappend 文件):

如果我注释掉 cryptsetup 行,initramfs 任务就可以正常完成。

这是来自 meta-tegra 的 initramfs 的未附加原始配方文件:

如何成功地将 cryptsetup 添加到 initramfs 配方?谢谢。

0 投票
1 回答
571 浏览

encryption - dropbear-initramfs 找不到 modprobe 和 blkid

我正在尝试在使用 lvm crypto luks 加密的 debian 系统上进行 dropbear 远程 ssh 启动。

我可以让它在我的树莓派上运行,但不能在我的常规系统上运行

步骤: 1 使用加密的 LVM 安装 debian

然后在前面创建一个带有以下行的 rsa ssh 密钥并将其保存到/etc/dropbear-initramfs/authorized_keyscommand="/scripts/local-top/cryptroot && kill -9 `ps | grep -m 1 'cryptroot' | cut -d ' ' -f 3`" ssh...

然后:

我可以输入密码并用键盘解密,但是当我使用 ssh 登录时,我得到:

请帮忙?

额外信息:
我的 blkid

我的 /etc/fstab

我的 /etc/crypttab