启动时无法检测到根分区

启动时无法检测到根分区

系统:

  • Ryzen 5,无集成显卡
  • B450 Tomahawk Max 主板
  • ADATA SX8100 512 GB SSD
  • Nvidia GeForce 1660 主 GPU
  • 双启动 Ubuntu 20.04 和 Windows 10
  • UEFI 固件
  • 无需超频或其他调整

我过去偶尔遇到过这样的问题:系统在启动时会进入内核恐慌,首先抱怨 initramfs 解码失败,然后无法挂载 root。同一内核版本的恢复模式选项也会出现恐慌,尽管显示的消息更多。

我通常会选择一个较旧的内核来解决这个问题,它可以正常启动,然后运行 ​​Boot-Repair。然后我可以进行随机次数的启动,直到一切重新开始。

我一直没能找到原因,只能处理偶尔出现的不便,但现在我的内核都无法启动。我只能从实时 USB 启动。我从 chroot 内部更新了 GRUB 配置,所以现在我的 Windows 菜单选项也消失了。

恢复模式消息要求我使用root=启动选项指定我的根分区,然后显示here are the available partitions内核崩溃消息。似乎它根本没有检测到任何分区。这似乎得到了无法mount root fs on unknown-block(0,0)识别要使用的块设备的消息的证实。

我已检查启动消息中显示的根 UUID 是否与我的实际启动分区的 UUID 匹配。我最近没有进行任何分区表修改。

我尝试移除并重新安装 SSD。

我该如何解决这个问题?如何让内核检测我的 SSD?

正常启动错误信息:

在此处输入图片描述

恢复模式启动消息

在此处输入图片描述

根据评论,我发现了 SSD 的 SMART 状态。

结果sudo smartctl

kubuntu@kubuntu:~$ sudo smartctl -a /dev/nvme0n1
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-42-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Model Number:                       ADATA SX8100NP
Serial Number:                      2J4620042048
Firmware Version:                   VB411D43
PCI Vendor/Subsystem ID:            0x10ec
IEEE OUI Identifier:                0x00e04c
Controller ID:                      1
Number of Namespaces:               1
Namespace 1 Size/Capacity:          512,110,190,592 [512 GB]
Namespace 1 Formatted LBA Size:     512
Local Time is:                      Thu Dec  3 00:57:15 2020 UTC
Firmware Updates (0x0e):            7 Slots
Optional Admin Commands (0x0007):   Security Format Frmw_DL
Optional NVM Commands (0x0014):     DS_Mngmt Sav/Sel_Feat
Maximum Data Transfer Size:         64 Pages
Warning  Comp. Temp. Threshold:     118 Celsius
Critical Comp. Temp. Threshold:     150 Celsius
 
Supported Power States
St Op     Max   Active     Idle   RL RT WL WT  Ent_Lat  Ex_Lat
 0 +     8.00W       -        -    0  0  0  0        0       0
 1 +     4.00W       -        -    1  1  1  1        0       0
 2 +     3.00W       -        -    2  2  2  2        0       0
 3 -   0.0128W       -        -    3  3  3  3     4000    8000
 4 -   0.0080W       -        -    4  4  4  4     8000   30000
 
Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0
 
=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
 
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        31 Celsius
Available Spare:                    100%
Available Spare Threshold:          32%
Percentage Used:                    0%
Data Units Read:                    11,670,921 [5.97 TB]
Data Units Written:                 7,734,266 [3.95 TB]
Host Read Commands:                 0
Host Write Commands:                0
Controller Busy Time:               0
Power Cycles:                       451
Power On Hours:                     3,897
Unsafe Shutdowns:                   319
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Warning  Comp. Temperature Time:    0
Critical Comp. Temperature Time:    0
 
Error Information (NVMe Log 0x01, max 8 entries)
Num   ErrCount  SQId   CmdId  Status  PELoc          LBA  NSID    VS
  0 5490475142593210059 45613  0xa607  0x2024 0x35f8 5071432998301508804 1351944024  0xc5
  1 10305710759900180890  9804  0x6c00  0xa1d6 0xcb61 27252774468141376 380130432  0xc3
  2 11549487431983370324 16455  0x58c9  0xd23e 0x8147 6957061290267430970 3258320200  0xf5
  3 7018321358667646096 37313  0x0e1f  0x8670 0x6242 459368911713436868 1166902044  0x10
  4 11390238159922049047 38421  0xd002  0x1890 0x7d29 17438238972143084540 884054193  0x01
  5 156936697365045345 26140  0x5041  0xac10 0x4265 11916595043416224210 405107254  0xd4
  6 6790662844906997140 16528  0x5fc1  0x2ed1  0x77c 5801270468783952621 39946248  0xb0
  7 3460708732253516421  2072  0xa101  0x610c 0xc852 13889879911473169861 2147786536  0x68

回复:主板 BIOS 版本。我在组装 PC 后不久就将 BIOS 更新为版本 7C02v36(日期为 2020 年 4 月 24 日),在提出此问题之前,我将 BIOS 更新为版本 7C02v39(日期为 2020 年 11 月 30 日)。这没有效果。下一个列出的是最新的 BIOS日期为 2020 年 12 月 10 日,但它是一个测试版本,所以我不确定尝试它是否是个好主意。

值得一提的是,我的 Ubuntu 启动分区是 30GB,还有 3GB 可用空间。

在此处输入图片描述

GRUB 可以看到我的启动分区,如这张屏幕截图所示。拍完这张照片后,我立即输入“normal”返回 GRUB 菜单。我启动时启用了调试消息,但它抱怨无法挂载该分区。

在此处输入图片描述

答案1

从装有实时系统的 USB 启动;Ubuntu 的版本或风格并不重要。然后尝试调查,甚至可以从实时系统的 shell 手动安装该文件系统。内部磁盘/dev/sdc现在可能已经安装完毕。

您可以使用以下任何一种方式调查分区

sudo parted --list

sudo fdisk -l

sudo blkid

一旦确定了根文件系统是哪个分区,您就可以尝试fsck -f在其上运行文件系统检查。

尝试挂载它;我将从只读挂载开始:

sudo mount -r /dev/sdc42 /mnt

/dev/sdc42即您刚刚标识为根文件系统的设备)

然后检查/mnt/boot可用的内核,如果有匹配的初始化文件*(包含内核模块的初始 RAM 磁盘)。


在阅读了上面的一些评论后,我发现保护性MBR可能会有问题。基本上,它会尝试镜像 GPT 分区表,让较旧的工具相信它们看到的是旧式 PC(“MS-DOS”)分区表。只要这些较旧的工具从不尝试修改任何分区,那就没问题;但是,如果它们这样做,保护性 MBR(它们将更改的内容)和 GPT(包含真实信息)可能会开始不匹配。

结果可能是某些操作系统(我确信不是 Linux)会向当前分区和文件系统之外的磁盘块写入数据。如果您在玩完 Windows 游戏后遇到问题,则可能暗示了这一大方向。

相关内容