新编译的内核无法启动(普通内核 3.12.14)

新编译的内核无法启动(普通内核 3.12.14)

我下载、配置并安装了从 kernel.org 下载的内核。第一次启动这个新内核时,此错误屏幕显示可能指向丢失或错误提及的根设备。但我没有明确提及,安装脚本做到了。因此,如果这是错误,有人可以告诉我如何修复吗?

或者如果原因可能是其他原因,请告诉它可能是什么?

注意:我使用 VirtualBox 来完成所有这个过程。不希望我的笔记本电脑在这个实验中变得无法启动。在此输入图像描述

笔记:

  1. Grub 条目很好,因为它对于在此系统上运行的另一个内核是相同的,并且其他内核工作正常。
  2. DEVTMPS 只是创建一个警告,我认为程序员只关心错误,而不是警告,所以希望这也不是主要原因。
  3. TSC 给出了一个错误,我调查了一下,它可能是一个时钟模式,与根设备没有什么关系。
  4. 同样,UUID 不是问题,因为其他工作内核 grub 条目正在使用相同的 ID 并正确启动。

答案1

您缺少访问根文件系统所需的驱动程序之一。 initramfs 中的代码正在寻找要挂载的块设备,但失败了,因此问题出在访问该设备上。您不会收到更明确的消息,因为 initramfs 中的代码只能看到它有权访问的内容,而问题是它无权访问所需的根设备。

您可以make localmodconfig在内核源目录中运行来配置内核,包括当前正在使用的所有驱动程序。更好的是,使用您的发行版的内核(不这样做的唯一常见原因是您的硬件太新而无法支持),或者至少使用您的发行版的内核配置。由于您使用的是 Ubuntu,请注意您可以找到更新的预编译内核如果你需要它们。

如果您确实想配置自己的内核,这里有一个清单,列出了您需要包含哪些内容才能启动。请注意,我只列出了常见要求,这并不是详尽的列表。

  • SCSI, BLK_DEV_SD(→ scsi_mod, sd_mod) 对于大多数硬盘和类似设备(具有 SCSI 或类似 SCSI 的命令集,包括 ATA);
  • 硬盘控制器的右侧ATA_xxxPATA_xxxSATA_xxxSCSI_xxx其他(例如ata_genericlibata和对于 Intel PC 芯片组上的 AHCI 控制器);ahci
  • MDBLK_DEV_MD以及正确的 RAID 模式(→md_mod和例如raid1)(如果适用);
  • MD, BLK_DEV_DM(→ md_mod, dm_mod) 对于 LVM;
  • MDBLK_DEV_DMDM_CRYPT以及 dm-crypt 所需的加密算法(→ md_moddm_moddm_crypt例如aes_genericsha256_generic以及cbc更多);
  • EXT4_FS(→ ext4) 或其他文件系统。

这些可以内置到内核中或编译为模块。如果您编译为模块,请不要忘记将模块包含在 initramfs 中。如果你使用Ubuntu 的内核构建基础设施,当您安装内核包时,一切都会自动完成。

答案2

找到了!!!这是我的硬盘控制器的驱动程序,编译前配置内核时没有添加SATA AHCI。现在我添加、重新编译和中提琴!新安装的内核启动。 :)

相关内容