启动失败:无法启动重新挂载根和内核文件系统

启动失败:无法启动重新挂载根和内核文件系统

我的台式机突然无缘无故无法启动。自上次关机以来,我还没有进行任何重大更改/更新。以下是发生的情况:

正常启动顺序会让我进入 tty1。成功登录后:

/usr/lib/ubuntu-release-upgrader/release-upgrader-motd: 31: /usr/lib/ubuntu-release-upgrader/release-upgrader-motd: cannot create /usr/lib/ubuntu-release-upgrader/release-upgrader-available: Read-only file system
/usr/lib/update-notifier/update-motd-fsck-at-reboot: 33: cannot create /usr/lib/update-notifier/update-motd-fsck-at-reboot: Read-only file system

Welcome to Ubuntu 16.04.1 LTS! (<kernel_version>)

0 packages can be updated

0 updates are security updates

*** /dev/sda2 should be checked for errors ***


user@user:^$ _

注意:切换到 tty7 不起作用。屏幕会稍微空白一下,然后就没事了

进入恢复模式并运行 fsck 可得到:

恢复模式_fsck

通过 root shell 发出显示的命令 (systemctl ...) 将会得到:

命令已发出

任何帮助表示感谢

答案1

对我来说,这个问题是在我安装了带有错误/旧 fstab UUID 的备份后出现的。搜索正确的 UUIDsudo blkid并相应地更新/etc/fstab文件。

答案2

让我们首先检查您的文件系统是否有错误。

对于 Ubuntu 17.10 或更早版本...

  • 启动到 GRUB 菜单
  • 选择Advanced Options
  • 选择Recovery mode
  • 选择Root access
  • #提示符下,输入sudo fsck -f /
  • fsck如果有错误则重复命令
  • 类型reboot

对于 Ubuntu 18.04 或更新版本...(或者如果上述步骤不适合您)...

  • 以“试用 Ubuntu”模式启动 Ubuntu Live DVD/USB
  • terminalCtrl+ Alt+打开窗口T
  • 类型sudo fdisk -l
  • 识别“Linux 文件系统”的 /dev/sdXX 设备名称
  • 输入sudo fsck -f /dev/sda2,替换sdXX为您之前找到的数字
  • fsck如果有错误则重复命令
  • 类型reboot

答案3

我遇到了类似的问题,原因是我在 beaglebone 黑板上练习一些东西,由于某种原因,内核由于 rootfs 而崩溃。

所以我考虑对 SDCard 上的 /etc/fstab 文件做一些更改(用于嵌入式目标板上的启动)。

但我无意中更改了主机的 /etc/fstab 文件中的条目。以下是更改后的文件。

/etc/fstabhttps://i.stack.imgur.com/aCAbB.png

# /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>
# / was on /dev/nvme0n1p5 during installation
/dev/mmcblk0p2 /               ext4    errors=remount-ro 0       1
UUID=3da12936-818f-48e9-b50c-3d6f2892d332 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=48DC-BBA7  /boot/efi       vfat    umask=0077      0       1
# swap was on /dev/nvme0n1p6 during installation
UUID=2a861f0b-d5d1-4624-88b6-fea51e93427f none            swap    sw              0       0

我在谷歌上阅读了多种方法,但都没有解决,所以我开始理解

  • rootfs 是如何挂载的
  • 从它正在获取它的配置
  • 如果 rootfs 出现错误,启动时会怎样?哪些配置设置会改变它的挂载方式(只读或读写)

在此之前,我至少需要一个终端才能工作,我可以使用“ALT + F3”键盘快捷键来获取终端。

然后我尝试对 /etc/fstab 文件进行一些编辑,但我无法做到。因为现在 rootfs 是以只读权限挂载的。我需要将其更改为对此处的一些修改进行读写访问。

然后我使用命令检查了所有挂载点

猫/ proc /安装

对我来说,它显示"ro"分区"/"

以下命令将权限更改为读写

mount -o remount/rw <rootpartion Identifier> <rootpartition>

要得到根分区标识符,使用 lsblk

nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   100M  0 part /boot/efi
├─nvme0n1p2 259:2    0    16M  0 part 
├─nvme0n1p3 259:3    0 375.8G  0 part 
├─nvme0n1p4 259:4    0     1G  0 part 
├─nvme0n1p5 259:5    0  95.4G  0 part /var/snap/firefox/common/host-hunspell
│                                     /
└─nvme0n1p6 259:6    0   4.6G  0 part [SWAP]
waageesh@waageesh-Aspire-A715-75G:~$

对我来说是 nvme0n1p5,因此上述命令将更改为 sudo mount -o remount,rw /dev/nvme0n1p5 /

现在我尝试编辑 /etc/fstab 文件,但我仍然不知道流程以及 /etc/fstab 文件中的选项是什么意思。

经过一番研究,我得到了一些观点

  • 在系统启动时,GRUB 将使用/etc/default/grub文件来生成/boot/grub/grub.cfg文件
  • GRUB 将在 中看到配置设置/boot/grub/grub.cfg。我可以看到访问ro权限为 的条目linux /boot/vmlinuz-6.2.0-36-generic root=UUID=3da12936-818f-48e9-b50c-3d6f2892d332 ro quiet splash $vt_handoff。因此它从 /etc/fstab 文件中获取设置。
  • /dev/mmcblk0p2 / ext4 errors=remount-ro 0 1在我的案例中,行是罪魁祸首,针对该文件系统条目给出的选项是错误=重新安装-ro
  • GRUB 将尝试按照定义的顺序根据条目(/etc/fstab 中的每一行都是每个文件系统一个条目)挂载所有文件系统。
  • 如果安装过程中出现任何错误,它将检查选项。我的情况是,选项是错误=重新安装-ro,这意味着如果发生错误,请尝试使用“ro”访问权限重新挂载
  • 我收到错误,因为该分区(/dev/mmcblk0p2)无效,并且它在 SDCard 上,但不在实际的主机上。

在某些机器上,给出的不是文件系统/分区名称,而是 UUID,我已经有一行以根分区 (/) 的 UUID 作为第二行。我使用以下方法确认了这一点sudo blkid

waageesh@waageesh-Aspire-A715-75G:~$ cat /etc/fstab | grep "3da12936-818f-48e9-b50c-3d6f2892d332"
UUID=3da12936-818f-48e9-b50c-3d6f2892d332 /               ext4    errors=remount-ro 0       1
waageesh@waageesh-Aspire-A715-75G:~$ cat /etc/fstab | grep /dev/nvme0n1p5
# / was on /dev/nvme0n1p5 during installation
waageesh@waageesh-Aspire-A715-75G:~$

我刚刚删除了文件系统的无效条目,该条目在机器上根本不存在,保存并关闭了文件。重启机器后一切正常。

相关内容