为什么我的自定义内核在 mknod 步骤中启动失败?

为什么我的自定义内核在 mknod 步骤中启动失败?

我想在 Ubuntu 下构建一个自定义内核。我配置并构建了新内核。新内核没有 initrd 并且来自 vanilla 源。我仅使用它所需的驱动程序构建这个新的整体内核。

当我尝试启动新内核时,我陷入了这个mknod步骤。它尝试mknod新设备,例如/dev/sda1 /dev/vca4.它失败是因为根分区以只读方式挂载。

我认为问题是我丢失了一些关于我的硬件的东西。如果我使用默认的 Ubuntu 内核启动,则不会遇到任何问题。谁能帮助我理解为什么会发生这种情况?

答案1

启动时,根文件系统几乎总是以只读方式安装,以便您可以fsck在其上运行。完成后,通常会使用以下命令重新挂载根文件系统以进行读写:

mount / -o remount,rw

不过,由于您使用的是 Ubuntu,编译内核应该比这简单得多。如果您还没有使用它,我建议您使用它kernel-package来编译内核。只需获取软件包和内核源代码,解压,然后说出类似的内容

make-kpkg -j3 --initrd binary

然后,这将构建.deb您可以按照通常方式安装的软件包(dpkg -i SOME-FILE.deb

答案2

您应该有一个devtmpfstmpfs安装在/dev并由其管理udev;因此,无论 . 的状态如何,该目录都是可写的/。在 Ubuntu 上,这通常由 initramfs 设置;你用你的内核构建并加载了一个吗?

相关内容