问题标签 [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.
linux - 使用 buildroot 和 uboot 配置 initramfs
我正在尝试使用 buildroot 和 uboot 让 initramfs 在嵌入式 linux 设备上工作。我一直按照指南在 buildroot 和内核配置中设置了 initramfs。但是据我所知,它没有内置到内核中,尽管输出中包含了 CPIO 或根 FS。
我的问题是双重的。首先,从高层次的角度来看,我对引导过程的理解是否正确?
- 第 1 阶段引导加载程序(Atmel/ARM 特定)启动并关闭
- 第 2 阶段引导加载程序(uboot)初始化一些东西,将内核加载到内存中并运行它
- 内核将 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 被忽略了。
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
debian - 使用其他配置文件生成自定义 initramfs 映像
我想为 Debian Stretch 创建一个 initramfs 映像,其中包括其他配置文件(比如/etc/a.conf
)。
mkinitramfs -o initrd.img
为了使图像包含此类文件,我必须在运行之前做什么?
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
。没有它似乎确实可以工作,但有时我会自发重启,手动重启时会出现总线错误。
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 :
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/grub
per this SE post来消除它们。两者都没有帮助。
重新启动后,我最终进入grub>
命令行,大概是因为grub2-mkconfig
从未完成并损坏了 grub 配置文件。在这里,我可以毫无问题地加载新旧内核以及 initramfs,但是当我执行引导时,我得到内核恐慌:
自然地,我的假设是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] 的延续,但我稍微简化了问题。那里的一些背景信息可能是相关的。
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
,但如果我不必这样做,我真的宁愿不这样做!
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
但它就消失了(没有说连接是否被拒绝或任何东西)。我有点迷失在这里。
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 配方?谢谢。
encryption - dropbear-initramfs 找不到 modprobe 和 blkid
我正在尝试在使用 lvm crypto luks 加密的 debian 系统上进行 dropbear 远程 ssh 启动。
我可以让它在我的树莓派上运行,但不能在我的常规系统上运行
步骤: 1 使用加密的 LVM 安装 debian
然后在前面创建一个带有以下行的 rsa ssh 密钥并将其保存到/etc/dropbear-initramfs/authorized_keys
:
command="/scripts/local-top/cryptroot && kill -9 `ps | grep -m 1 'cryptroot' | cut -d ' ' -f 3`" ssh...
然后:
我可以输入密码并用键盘解密,但是当我使用 ssh 登录时,我得到:
请帮忙?
额外信息:
我的 blkid
我的 /etc/fstab
我的 /etc/crypttab