我已经搜索过现有问题,但没有一个能解决我的问题。
几天前,我运行 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
现在它似乎已准备好重新启动。