所以我认为我面临的是超级块损坏(我认为这是因为故意硬重启/不干净重启而发生的)。但是,按照链接问题的第一个被接受的答案中的指南,通过恢复备用超级块,系统仍然启动到(initramfs)。[注意:按照fsck
该答案中的建议操作后,我可以成功挂载文件系统并从中复制内容,并在其中创建一个具有 sudo 权限的文件夹。]
一开始,我在 (initramfs) 提示符之前没有收到任何文本,除了:
BusyBox v.1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash)
Enter 'help' for a list of build-in commands.
但现在我有时也会遇到这种情况:
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; ls /dev)
ALTER! /dev/mapper/ubuntu--vg-root does not exist. Dropping to a shell!
那么,既然恢复超级块不起作用,我有什么选择来修复我的启动?我想我可以尝试从 LiveCD/LiveUSB 重新安装 Ubuntu,但我必须添加一个增加额外复杂性的方面:我的主硬盘分区已加密(使用默认的 Ubuntu 方式,我猜这叫做 LUKS)。
有没有办法修复启动问题而无需重新安装?或者重新安装而不清除所有内容?我应该通过查看启动日志来调试我的问题吗?(如果是,它们在哪里?)
从 LIVE ubuntu USB ISO 启动,我可以发出命令fdisk -l /dev/sda
,结果是:
Disk /dev/sda: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x60229a0a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 999423 997376 487M 83 Linux
/dev/sda2 1001470 937701375 936699906 446.7G 5 Extended
/dev/sda5 1001472 937701375 936699904 446.7G 83 Linux
结果如下sudo blkid -c /dev/null
:
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="7ec61194-f216-4f1b-b684-5b2e2d643c25" TYPE="ext2" PARTUUID="60229a0a-01"
/dev/sda5: UUID="11613ca4-65f2-4079-a750-6f71b6318903" TYPE="crypto_LUKS" PARTUUID="60229a0a-05"
/dev/sdb: UUID="674B-9411" TYPE="vfat"
值得一提的是,如果我通过 nautilus 安装加密驱动器,我可以在编辑器中打开 /etc/fstab,内容如下:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=7ec61194-f216-4f1b-b684-5b2e2d643c25 /boot ext2 defaults 0 2
/dev/mapper/ubuntu--vg-swap_1 none swap sw 0 0
更新:如果我shift
在 grub 启动时按下,那么在启动到(initramfs)之前我可以看到一些选项:
- Ubuntu
- Ubuntu 的高级选项
- 内存测试(memtest86+)
- 内存测试(memtest86+,串行控制台 115200)
如果我选择第一个,那么我就会得到 (initramfs) 启动。如果我选择第二个,则会显示更多选项:
- Ubuntu,使用 Linux 4.4.0-28-generic
- Ubuntu,带有 Linux 4.4.0-28-generic(upstart)
- Ubuntu,带有 Linux 4.4.0-28-generic(恢复模式)
- Ubuntu,使用 Linux 4.4.0-24-generic
- Ubuntu,带有 Linux 4.4.0-24-generic(upstart)
- Ubuntu,带有 Linux 4.4.0-24-generic(恢复模式)
如果我在这里选择 1,结果也是 (initramfs) 提示。
但是如果我选择选项 (4),计算机会要求我输入加密密码并正常启动!!那么,我猜内核 4.4.0-28 有问题,如何摆脱它并将其标记-24
为默认值?