系统:
- 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 游戏后遇到问题,则可能暗示了这一大方向。