![为什么我的自定义内核在 mknod 步骤中启动失败?](https://linux22.com/image/22246/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%86%85%E6%A0%B8%E5%9C%A8%20mknod%20%E6%AD%A5%E9%AA%A4%E4%B8%AD%E5%90%AF%E5%8A%A8%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
我想在 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
您应该有一个devtmpfs
或tmpfs
安装在/dev
并由其管理udev
;因此,无论 . 的状态如何,该目录都是可写的/
。在 Ubuntu 上,这通常由 initramfs 设置;你用你的内核构建并加载了一个吗?