内核在启动期间找不到 /dev/sda 文件

内核在启动期间找不到 /dev/sda 文件

我配置了一个gentoo内核(kernel-2.6.36-gentoo-r5),但是当我启动时它无法安装/dev/sda1

ALERT! /dev/sda1 does not exist . Dropping to a shell .

我用shell进入该/dev目录,发现没有sda*hd*文件。但是,当我启动到 Debian 内核 (vmlinuz-2.6.32-5-686) 时,它可以找到并挂载该/dev/sda1分区。

有什么问题?我该如何修复它?我没有向/etc/modules.autoload.d/kernel-2.6文件添加任何模块名称以让它们在启动期间自动加载 - 这是问题的原因吗?

答案1

您没有准确提及如何重建内核。这是一个相当复杂的过程,您应该遵循您的发行版的建议。事实上,您应该使用您的发行版的内核,除非您需要某些无法预编译的功能(例如一组更新的驱动程序来支持您的硬件)。

有两个常见的陷阱,其中任何一个都可能导致您观察到的症状。

  • 也许您忘记编译必要的驱动程序。内核配置是一个艰巨的过程,而且很容易忘记一个关键的设置。特别是,请确保您已包含到达根文件系统所需的驱动程序:磁盘控制器、分区方案、文件系统以及相关的卷管理。这些驱动程序必须内置到内核中(即不是模块),或者您必须有一个 initrd(在这种情况下,initrd 驱动程序和相关文件系统必须是内置的)。.config建议从您的发行版开始,仅更改您必须更改的内容。
  • 如果您使用 initrd,也许您忘记重新生成它,或者安装它,或者告诉您的引导加载程序。

答案2

您不需要访问根设备所需的某些驱动程序。也许是 SATA,或者它所使用的 SCSI 模块之一。要么您没有构建驱动程序,要么您没有将其放入 initrd 中。

答案3

您需要确保在配置内核时选择正确的 SATA 驱动程序。我不知道您的硬件是什么,因此您需要自己找出哪些驱动程序适合您。

我总是将 SATA 驱动程序构建到内核中而不是作为模块,这样更容易处理。

答案4

运行时make && make modules_install && make install不仅应该构建内核,还应该安装内核映像 (bzImage) 并将其复制到 /boot/、创建 initrd 并为两者创建 grub 条目。

如果这不是您使用的命令和/或语法,我建议尝试此过程。如果这是您遵循的过程,我建议您重建 initrdmkinitrd并验​​证 grub 配置中的根设备是否准确代表系统配置。

相关内容