标签: initramfs

逻辑卷在启动时处于非活动状态

我调整了逻辑卷和文件系统的大小,一切都很顺利。我安装了新内核,重启后我既不能启动当前内核,也不能启动以前的内核。选择 grub(2) 选项后出现未找到卷组错误。从繁忙的盒子中检查显示卷未注册到设备映射器并且它们处于非活动状态。激活后我无法挂载它们,我收到文件未找到错误(挂载 /dev/mapper/all-root /mnt)。

任何想法如何在启动时继续或使它们处于活动状态?或者为什么卷在启动时突然不活动?

问候,

马立克

编辑:进一步调查显示,这与调整逻辑卷的大小无关。启动失败后必须在 ash shell 中手动激活逻辑卷这一事实以及此问题的可能解决方案在我下面的回复中有所介绍。

linux lvm initramfs

10
推荐指数
2
解决办法
6万
查看次数

配置 initramfs-tools 以将 curl 添加到 initramfs,并在 Ubuntu 10.04 Server 的 intitrd 中启动时在脚本中运行 curl

我正在尝试了解 initramfs 如何工作以及如何配置它。我希望将 curl 添加到 initramfs 中可用的包中,并运行一个在启动期间使用 curl 的脚本(这意味着必须在启动之前设置网络)。

我该怎么做?(我也需要它在升级内核时工作。)

linux ubuntu initramfs

7
推荐指数
2
解决办法
8184
查看次数

什么告诉 initramfs 或 Ubuntu Server 启动过程如何组装 RAID 阵列?

一个简单的问题:initramfs 如何知道如何在启动时组装 mdadm RAID 阵列?

我的问题:我启动我的服务器并得到:

Gave up waiting for root device.
ALERT! /dev/disk/by-uuid/[UUID] does not exist. Dropping to a shell!
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为 /dev/md0(即 /boot,RAID 1)和 /dev/md1(即 /,RAID 5)未正确组装。我得到的是 /dev/md0 根本没有组装。/dev/md1 已组装,但不是使用 /dev/sda2、/dev/sdb2、/dev/sdc2 和 /dev/sdd2,而是使用 /dev/sda、/dev/sdb、/dev/sdc、/开发/ SD。

要解决此问题并启动我的服务器,我会执行以下操作:

$(initramfs) mdadm --stop /dev/md1
$(initramfs) mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
$(initramfs) mdadm --assemble /dev/md1 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2
$(initramfs) exit
Run Code Online (Sandbox Code Playgroud)

它可以正常启动并且一切正常。现在我只需要 RAID 阵列在启动时正确组装,所以我不必手动组装它们。我检查了 /etc/mdadm/mdadm.conf 并且该文件中列出的两个数组的 UUID 与$ mdadm --detail /dev/md[0,1].

其他详细信息:Ubuntu 10.10、GRUB2、mdadm 2.6.7.1

更新:我觉得这与超级块有关。$ mdadm --examine /dev/sda输出相同的东西 …

ubuntu mdadm initramfs

6
推荐指数
2
解决办法
2万
查看次数

initramfs systemd 服务的内省 - 如何?

背景

  • 我正在运行 ArchLinux,使用 systemd 二进制文件启动必要的服务作为 initramfs 的一部分(root fs 解密、挂载等)。
  • 我想检查一下作为这个阶段的一部分启动了哪些 systemd 单元,以及何时启动。
  • systemd-analyze plot 只显示切换根发生后所有单元的时间图。
  • 交换机根单元(定义为 initrd 引导序列中的最后一个单元)状态:

    [Service]
    # ...
    ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot
    # ...
    
    Run Code Online (Sandbox Code Playgroud)
  • switch-root 系统命令上的 systemctl 手册页有这样的说法:

    switch-root ROOT [初始化]

    切换到不同的根目录并在其下执行一个新的系统管理器进程。这旨在用于初始 RAM 磁盘(“initrd”),并将从 initrd 的系统管理器进程(又名“init”进程)过渡到从实际主机卷加载的主系统管理器进程。此调用需要两个参数:将成为新根目录的目录,以及在其下作为 PID 1 执行的新系统管理器二进制文件的路径。如果省略后者或空字符串,将自动搜索 systemd 二进制文件用于并用作初始化。如果省略系统管理器路径,等于空字符串或与 systemd 二进制文件的路径相同,则 initrd 的系统管理器进程的状态将传递给主系统管理器,这允许稍后对所涉及服务的状态进行自省在 initrd 启动阶段。

    然后在 initrds 问题上保持沉默......

启动后,我如何内省 initrd 启动阶段所涉及的服务状态,如上面推断的那样,或者发现什至运行了哪些单元(因为有些是动态生成的)?

linux boot arch-linux initramfs systemd

6
推荐指数
1
解决办法
1109
查看次数

如何使用 dropbear-initramfs 解锁多个 luks 设备

我的系统设置如下:

  1. 一个带有 LUKS 和 LVM 的 SSD(当然还有未加密的boot分区)。debian系统安装在那里。
  2. 两个 HDD 组装为 RAID0,带有 LUKS 和 LVM,用于一些自定义数据

为了在启动时从远程解锁 LUKS 设备,我尝试使用 dropbear-initramfs。

效果很好,解锁第一个 LUKS设备(在 SSD 上,安装了 debian 系统):

  1. 我使用 ssh 登录到 dropbear/busybox
  2. 我使用cryptroot-unlock,插入钥匙,然后解锁

但要解锁第二个 LUKS设备(在 RAID0 上),我仍然需要一些控制台。

有没有办法使用 dropbear-initramfs / busybox 一起(或相继)解锁两个 LUKS 设备?蒂亚!

debian initramfs dropbear luks dmcrypt

6
推荐指数
1
解决办法
1852
查看次数

如何升级位于 initramfs 内的模块?

我们最近在我们的 CentOS 6.0 机器之一上升级了我们的 e1000e(英特尔以太网)模块。

即使模块编译和安装正常,旧版本仍在使用。

我们已经追踪到这一事实,即该e1000e.ko模块位于启动内核的 initamfs 文件中,因此,即使位于/lib/modules/.... 中的模块正在更新,旧的模块仍在从 initramfs 文件中加载.

经过一些研究,我们发现在 CentOS 中创建一个新的 initamfs 文件应该像这样简单:

/sbin/dracut <initramfs> <kernel-version>
Run Code Online (Sandbox Code Playgroud)

有人可以确认这是一种基本上重新创建 initamfs 文件的安全方法吗?

这是一个非本地托管(1000 公里远……)的盒子,如果重新启动不成功,获得支持来解决这个问题将导致相当多的停机时间。

centos initramfs rhel6

5
推荐指数
1
解决办法
1万
查看次数

使用绑定、桥接和 iSCSI 引导无盘 Debian 系统

我正在尝试构建我的个人圣杯:从 iSCSI 目标无盘启动我的 Debian Wheezy KVM 服务器,无盘服务器上唯一需要的配置是 NIC ROM 中的 iSCSI 参数。其余的配置应该都在 iSCSI LUN 的“内部”。

系统有两个 NIC,它们连接到支持 LACP 的交换机。所以,我想通过绑定接口启动机器,这也在桥内vmbr0。虽然这种组合并不完全有效。

因为我读到 iSCSI 连接不应在启动后中断(例如通过重新配置接口),所以我尝试在启动前设置所有 IP 配置(在内核参数/cmdline 中)。

iSCSI 引导部分由我的 Broadcom 双端口 NIC 的 ROM 处理。这似乎工作得很好:grub 启动后继续引导。在我的 grub 配置中,我有这个:

linux /vmlinuz-2.6.32-26-pve root=UUID={iscsi-disk-uuid} ro  quiet bond=bond0:eth0,eth1:mode=802.3ad,lacp_rate=1,miimon=100,xmit_hash_policy=layer2+3 bridge=vmbr0:bond0 ip=192.168.15.4::192.168.15.1:255.255.0.0::vmbr0:off
Run Code Online (Sandbox Code Playgroud)

当 grub 启动内核时,我收到以下错误:

ipconfig: vmbr0: SIOCGIFINDEX: No such device
ipconfig: no devices to configure
... repeated 10 times...
/scripts/local-top/iscsi: .: line 426: can't open '/run/net-vmbr0.conf'
Run Code Online (Sandbox Code Playgroud)

我被放到了 initramfs shell 中,我发现它bond0根本没有配置(但是bonding模块已加载),vmbr0 …

iscsi bridge bonding initramfs debian-wheezy

5
推荐指数
1
解决办法
1663
查看次数

Linux 无盘启动 - 在 ramdisk 启动期间未挂载 NFS 共享

(这是我的第一篇文章,所以希望我的格式正确)。我已经添加了尽可能多的信息,但又不至于太长:太长了。

我的基本问题是,在尝试对 NFS 服务器(CentOS 6.7 或 CentOS 7)进行 PXE 无盘启动时遇到了困难。我尝试过各种方法,但似乎无法复制我最初使用 CentOS7 服务器和客户端所取得的成功。现在每次我按照我的笔记去做,我都一事无成。

我遇到的最常见错误(取决于我使用的 initrd.img 文件或 initramfs*.img)是

A ticker of *** that shows a text-based progress bar and the message

A start job is running for dev-nfs.device (xx s / 1min 30s)
Run Code Online (Sandbox Code Playgroud)

然后它超时并说

Timed out waiting for device dev-nfs.device
Dependency failed for File System Check on /dev/nfs
Dependency failed for /sysroot
Dependency failed for Initrd Root File System
Dependency failed for Reload Configuration from the Real Root
Run Code Online (Sandbox Code Playgroud)

当我将(任何)initramfs-3.10.*.img 从 /boot/ 复制到 …

initramfs pxe-boot

5
推荐指数
1
解决办法
4781
查看次数

CentOS7 Dracut lvm 命令未找到

由于 Meltdown 问题,我将 CentOS7 内核从 3.10.0-693.11.1 更新到 3.10.0-693.11.6,但更新后,我无法启动,因为 centos drop 到 dracut 时出现错误

warning /dev/mapper/centos-root does not exist

dracut:/# ls /dev/mapper/
control
dracut:/# 
Run Code Online (Sandbox Code Playgroud)

看来我的 initrd 配置错误,我仍然可以启动 3.10.0-693.11.1,没有任何问题。我正在尝试调试这个(网上有很多资源),但看起来我在这里基本上缺少一些东西,因为我无法执行 lvm 命令

dracut:/# lvm scan
sh: lvm: command not found
dracut:/# ls /etc/lvm/lvm.conf
ls: cannot access /etc/lvm/lvm.conf: No file or dictionary
dracut:/# ls /etc/lvm
ls: cannot access /etc/lvm: No file or dictionary
Run Code Online (Sandbox Code Playgroud)

我发现工具的问题通常是由 /sbin 中缺少二进制文件引起的,所以我安装了稳定内核并检查:

root@localhost ~# ls /sbin/lvm
/sbin/lvm
root@localhost ~# which lvm
/sbin/lvm
Run Code Online (Sandbox Code Playgroud)

因此二进制文件位于正确的位置,但由于某种原因 dracut 在 /sbin 中看不到它。

我的 3.10.0-693.11.1 和 …

lvm initramfs dracut centos7

5
推荐指数
1
解决办法
2万
查看次数

Hetzner Cloud 上的 Ubuntu 全盘加密在 initramfs 中添加添加静态路由

我尝试在 Hetzner Cloud 上使用全盘加密设置 Ubuntu。除了 initramfs 中的网络连接外,我一切正常。感谢 UI 控制台,它可以解锁,但我需要在初始化中使用 SSH(dropbear)。我成功地在他们的根服务器上使用了相同的配置,没有任何问题。

如果我设置 dropbear 通过 dhcp 获取 IP 总是导致NETWORK IS UNREACHABLE. 但它从 dhcp 服务器获取正确的参数。我问了 Hetzner 支持。他们告诉我,他们认为 dhcp 客户端不支持 RFC 3442 无类静态路由选项,并建议添加带有ip r a 172.31.1.1 dev ens3. 就像在这个问题上一样,我添加了路线,但总是出现相同的错误:NETWORK IS UNREACHABLE。我测试在不同的脚本中设置路由,但没有任何改变。我测试了 Ubuntu 16.04 和 18.04。

我很高兴有任何关于此的建议。谢谢!

ubuntu static-routes initramfs dropbear hetzner

5
推荐指数
2
解决办法
2219
查看次数

从 debian initramfs 获取调试输出

我正在尝试通过串行控制台和托管公司的恢复控制台(基本上是 ubuntu liveCD)在软件 raid0 和 LVM 根文件系统上为 debian lenny 配置服务器。

在配置raid0、建立LVM、运行debootstrap、安装grub等之后,我重新启动,服务器在到达init之前挂在引导中。根据内核日志消息,raid 阵列已上线,可能还有 LVM(抱歉,现在没有确切的日志消息,但明天会有)。

initramfs 脚本本身绝对没有错误输出 - 只有内核日志消息。我怎样才能让 initramfs 产生一些有用的调试输出,这样我至少可以确定它在哪里死亡?

raid debian debugging lvm initramfs

4
推荐指数
1
解决办法
4496
查看次数

cpio 在 Ubuntu Xenial 中错误地解压 initrd

我正在尝试解压 initrd 图像:

# file /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic: ASCII cpio archive (SVR4 with no CRC)
# mkdir /tmp/initrd; cd /tmp/initrd
# cpio -i -d -H newc --no-absolute-filenames -F /boot/initrd.img-4.11.0-14-generic
194 blocks
# ls -R
.:
kernel

./kernel:
x86

./kernel/x86:
microcode

./kernel/x86/microcode:
GenuineIntel.bin
Run Code Online (Sandbox Code Playgroud)

所以cpio 只提取./kernel存档的子目录。但在其中lsinitramfs显示更多文件:

# lsinitramfs /boot/initrd.img-4.11.0-14-generic
/boot/initrd.img-4.11.0-14-generic
kernel
kernel/x86
kernel/x86/microcode
kernel/x86/microcode/GenuineIntel.bin
.
lib
lib/libnss_files.so.2
lib/cryptsetup

...

bin/egrep
init
run
Run Code Online (Sandbox Code Playgroud)

如何获取所有存档内容?

initramfs cpio

3
推荐指数
1
解决办法
3147
查看次数