Ubuntu 更新导致系统在启动时出现紫屏冻结。恢复模式失败并启动 BusyBox

Ubuntu 更新导致系统在启动时出现紫屏冻结。恢复模式失败并启动 BusyBox

我已经搜索过现有问题,但没有一个能解决我的问题。

几天前,我运行 Ubuntu 14.04 的系统经历了一次部分更新。从那时起,我的系统就无法启动。它会冻结在紫色屏幕上。(普利茅斯?)当我尝试启动恢复时,我收到“放弃等待 root”错误以及大量 libkmod 错误。

我从 liveCD 启动并尝试进行一些故障排除。我可以从那里挂载根分区并 chroot 过去。我检查了 /var/log/boot 并发现了 2 个小故障 - samba 和 ksplice - 没有什么可以阻止启动的。在将启动分区挂载到 /boot 后,我​​尝试使用以下命令重新安装 grub:

sudo grub-install --efi-directory=/boot /dev/sdc

不幸的是,这会产生与我尝试恢复时出现的相同的 libkmod 错误。(我确实有一个 efi,而不是 BIOS)

恢复过程如下:

Gave up waiting for root device. Common problems: 
- Boot args (cat /proc/cmdline) 
- Check rootdelay= (did the system wait long enough?) 
- Check root= (did the system wait for the right device?) 
- Missing modules (cat /proc/modules; Is /dev) 
ALERT! /dev/mapper/ubuntu--vg-root does not exist. Dropping to a shell! 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'

我安装了 ZFS,但启动驱动器不是 ZFS。我不明白为什么注释掉的行会被解释为不好。

这是我的 fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sdb2 during installation
UUID=10d83bf1-14a9-40bf-8ada-7ffbf6220bf9 /boot           ext2    defaults
  0       2
# /boot/efi was on /dev/sdb1 during installation
UUID=BD9B-EA73  /boot/efi       vfat    defaults        0       1
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

我的启动驱动器的分区信息如下:

Model: ATA Corsair CSSD-V32 (scsi)
Disk /dev/sdc: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot
 2      538MB   794MB   256MB   ext2
 3      794MB   32.0GB  31.2GB                     lvm

我没有安装其他操作系统。我尝试从 liveCD 重新安装,但它无法识别我现有的安装 - 即使在我手动安装根分区之后也是如此。我宁愿避免从头开始重新安装,并且真的很想了解导致这种情况的原因,以便我自己提高 Linux 知识。任何帮助都将不胜感激。

答案1

当您 chroot 进入您的系统时,重新生成您的初始 RAM 磁盘。

很可能是缺少模块导致该问题的发生。

update-initramfs -k all -c

在 chroot 之前、 mount/dev以及chroot 内部/proc/sys

mount -t proc /proc /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys

我假设你已将磁盘安装到/mnt。根据我的经验,此类错误 90% 与 ramdisk 中缺少模块有关。

另外我建议使用 chroot 继续失败的升级

dpkg --configure -a
apt-get -f install
apt-get upgrade

答案2

我在上次更新时遇到了这个错误,所以我从未重新启动过。为了解决这个问题,我删除了该文件,/etc/modprobe.d/zfs.conf因为我是添加它的人,而且我并不真正需要它。然后我运行:

update-initramfs -k all -c

现在它似乎已准备好重新启动。

相关内容