Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启动新编译的linux内核_Linux_Linux Kernel - Fatal编程技术网

启动新编译的linux内核

启动新编译的linux内核,linux,linux-kernel,Linux,Linux Kernel,我已经开始阅读《基本Linux设备驱动程序》一书。我遵循编译和引导到新内核的过程。但是,我无法启动到新编译的内核-我在grub中选择新内核,然后..什么都没有…屏幕保持不变 以下是我正在采取的步骤,如本书所述(我使用的是内核2.6.24,因为这是本书的基础)- cd/usr/src/linux-2.6.24(我下载的内核的基本目录) 澄清 cp arch/x86/configs/i386_defconfig.config 制作bzImage cp arch/x86/boot/bzImage/b

我已经开始阅读《基本Linux设备驱动程序》一书。我遵循编译和引导到新内核的过程。但是,我无法启动到新编译的内核-我在grub中选择新内核,然后..什么都没有…屏幕保持不变

以下是我正在采取的步骤,如本书所述(我使用的是内核2.6.24,因为这是本书的基础)-

  • cd/usr/src/linux-2.6.24(我下载的内核的基本目录)
  • 澄清
  • cp arch/x86/configs/i386_defconfig.config
  • 制作bzImage cp arch/x86/boot/bzImage/boot/vmlinuz
书中说,“你可能需要提醒你的引导加载程序新的引导映像的到来。如果您使用的是GRUB引导加载程序,它会自动解决这个问题

在我的例子中,它并没有自动计算出来,因为在GRUB中没有选择这个内核的选项。因此,我通过在终端中键入updategrub手动完成了这项工作。这也没用。但是,一旦我将文件名从vmlinuz更改为vmlinuz-2.6.24,并键入updategrub,它就会将其选中。所以在这本书的第11页,似乎已经有很多东西被遗漏了

书上说,然后重启机器


无论如何,我现在可以在GRUB中选择这个内核,但正如我上面所说的,它不能正常启动,屏幕只是变为空白,永远不会改变。我是不是错过了什么?我完全按照书中的说明进行了操作。

默认配置可能需要一个驱动程序(例如,因为文件系统和根设备需要模块驱动程序,这是initrd提供的)

您可以为您的特定硬件适当地配置内核(在内核中而不是在模块中仔细地启用基本驱动程序),或者使用一个过程来使用initrd构建内核包

您应该找到一个适合您的linux发行版和习惯的过程,例如,类似或。我在Debian上使用:

time fakeroot make-kpkg -j2 --initrd --revision=3.4.2 --append-to-version=-amd64 binary

默认配置可能需要一个(例如,因为文件系统和根设备需要模块驱动程序,这是initrd提供的)

您可以为您的特定硬件适当地配置内核(在内核中而不是在模块中仔细地启用基本驱动程序),或者使用一个过程来使用initrd构建内核包

您应该找到一个适合您的linux发行版和习惯的过程,例如,类似或。我在Debian上使用:

time fakeroot make-kpkg -j2 --initrd --revision=3.4.2 --append-to-version=-amd64 binary

大多数自动grub设置都包含内核选项,用于隐藏内核尝试引导时生成的消息。例如:

/boot/vmlinuz-x.x.x.x-generic root=UUID=something ro quiet splash
在您希望引导的内核的grub菜单行上,按“e”临时编辑它,并删除诸如quiet和splash之类的选项(但保留ro)


然后引导临时修改的行,并查看进度消息,以便了解引导失败的位置。

大多数grub自动设置都包含内核选项,用于隐藏内核尝试引导时生成的消息。例如:

/boot/vmlinuz-x.x.x.x-generic root=UUID=something ro quiet splash
在您希望引导的内核的grub菜单行上,按“e”临时编辑它,并删除诸如quiet和splash之类的选项(但保留ro)


然后启动临时修改的行,并查看进度消息,以便了解启动失败的位置。

尝试使用“verbose”参数运行新内核。也许它会告诉你更多正在发生的事情。这与编程无关,应该在我觉得这个问题与编程有关,所以在这里有它的位置。(它与配置和构建相关,海报想要编写一个驱动程序……)。尝试使用“verbose”参数运行新内核。也许它会告诉你更多正在发生的事情。这与编程无关,应该在我觉得这个问题与编程有关,所以在这里有它的位置。(它与配置和构建相关,海报想要为驱动程序编码……)你知道作者为什么没有在书中包含这样的信息吗?我不明白为什么他会遗漏必要的指令来启动内核…问问这本书的作者,我不知道。也许这本书很旧了。2.6.24内核于2008年发布。我建议研究和改进一个更新的内核(3.4.4是最新的)。刚刚尝试了本页上的教程——我也遇到了同样的问题。这与我使用virtualbox运行linux这一事实有什么关系吗?我正在尝试构建他在书-2.6.24中使用的内核,所以这本书已经有几年的历史了,这不会有什么区别。试着在你的硬件机器(笔记本电脑或台式机)上安装linux发行版你知道作者为什么没有在书中包括这样的信息吗?我不明白为什么他会遗漏必要的指令来启动内核…问问这本书的作者,我不知道。也许这本书很旧了。2.6.24内核于2008年发布。我建议研究和改进一个更新的内核(3.4.4是最新的)。刚刚尝试了本页上的教程——我也遇到了同样的问题。这与我使用virtualbox运行linux这一事实有什么关系吗?我正在尝试构建他在书-2.6.24中使用的内核,所以这本书已经有几年的历史了,这不会有什么区别。试着在你的硬件机器(笔记本电脑或台式机)上安装linux发行版。