我的台式机突然无缘无故无法启动。自上次关机以来,我还没有进行任何重大更改/更新。以下是发生的情况:
正常启动顺序会让我进入 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 可得到:
通过 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
terminal
按Ctrl+ 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/fstab: https://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:~$
我刚刚删除了文件系统的无效条目,该条目在机器上根本不存在,保存并关闭了文件。重启机器后一切正常。