Linux kernel Linux内核补丁问题

Linux kernel Linux内核补丁问题,linux-kernel,compiler-errors,Linux Kernel,Compiler Errors,我很难用我的Ubuntu Linux内核正确编译这个特定的内核补丁 该补丁来自一款名为SCST it的软件,它是Linux的iSCSI目标。当我运行patch-p1

我很难用我的Ubuntu Linux内核正确编译这个特定的内核补丁

该补丁来自一款名为SCST it的软件,它是Linux的iSCSI目标。当我运行
patch-p1
时,补丁可以正常加载。但是当我开始编译时,大约需要一个小时,然后make失败并返回这些错误

/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:63: error: redefinition of '__kcrctab_net_get_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:14: note: previous definition of '__kcrctab_net_get_page_callback' was here
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:63: error: redefinition of '__kstrtab_net_get_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:14: note: previous definition of '__kstrtab_net_get_page_callback' was here
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:63: error: redefinition of '__ksymtab_net_get_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:14: note: previous definition of '__ksymtab_net_get_page_callback' was here
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:66: error: redefinition of '__kcrctab_net_put_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:17: note: previous definition of '__kcrctab_net_put_page_callback' was here
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:66: error: redefinition of '__kstrtab_net_put_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:17: note: previous definition of '__kstrtab_net_put_page_callback' was here
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:66: error: redefinition of '__ksymtab_net_put_page_callback'
/root/d1/development/kernel/lucid/source/net/ipv4/tcp_zero_copy.c:17: note: previous definition of '__ksymtab_net_put_page_callback' was here
我完全不知道发生了什么。无论如何,我不是内核开发人员,我只是想得到这个补丁和另一个运行良好的补丁
scst\u exec\u req\u fifo-2.6.32.patch
。因此,我可以使此iSCSI目标全速运行

知道我能做什么吗

**更新**

我正在听他的指示。更具体地说,该页面上的链接指向

我已经使用这些指令进行了一些编译,我的问题要么是忘记应用补丁,要么是补丁没有使用,但直到现在,它们总是完成的。这个新补丁把事情搞砸了


至于iSCSI目标为何会干扰网络部件,显然与网络性能有关。当我编译没有补丁的目标软件时,它抱怨性能不好。目标网站是

在从kernel.org获得合适的内核版本后,您应该遵循标准的内核编译方法

以下是按顺序排列的步骤

  • 将内核提取到文件夹中
  • 应用补丁
  • sudo make menuconfig,保存default.config文件
  • sudo-make
  • sudomakemodules\u安装
  • sudo制作安装
  • cd/引导
  • sudo mkinitramfs-o initrd.img-(此处为您的版本)(再次为您的版本)
  • sudo更新grub

  • 您现在应该在引导选项中看到新内核,它应该(希望)引导。

    看起来可能有一个坏的#define-guard,它重新定义了一些符号。你能告诉我们你是如何建造的吗?iSCSI目标不应该干扰任何ipv4的事情,这就是我好奇的原因。还有,您是在哪个linux发行版上构建的?(我遇到过一些问题,人们告诉我我的内核没有正确地构建在11.04 ubuntu上,仍然不知道为什么,因为预编译版本启动得很好)我会在这个问题上写更多,但基本内容是:Ubuntu2.6.32-34.74,来自UbuntuGit repo,它基于Lucid Lynx。为了好玩,我尝试将补丁应用于2.6.33,这让情况变得更糟。我的想法是,另一个版本可能更接近我的内核,它的次要版本要比生成2.6.32的SCST补丁的版本高得多。但就像我说的,它不起作用。所以我用我的虚拟机快照往回看。我不熟悉Ubuntu/Debian内核的具体内容,但我会试试这个。下载纯linux内核(从kernel.org),解压缩它。执行sudo make menuconfig并转到save.config文件。应用补丁。运行sudo make,sudo make模块\u安装,sudo make安装。cd/引导。sudo mkinitramfs-o initrd.img-2.6.32-34 2.6.23-34。最后是sudo更新grub。看看它是否以这种方式编译。通常情况下,这会很好,但我编译这个内核是为了替换我的Ubuntu“SAN”服务器上的内核。我遵循的这个方法最终为我创建了DEB包。看起来我说得太快了,它根本无法启动,当我尝试重新生成内核时,我在遵循上述步骤时出错。之前,当我编译它时,它使用了一种叫做kpkg make的东西。我迷路了,我不知道是什么让这件事失败了。看起来所有的补丁都被截获了。你能从上面的步骤中启动一个没有补丁的标准内核吗?看看是补丁不起作用,还是内核的编译过程或安装产生了一个无法启动的内核。我所说的“不启动”是指内核只是显示一个黑屏,而不是下降到一个“应”或什么。当我尝试它之前,我得到了一个没有外壳的黑屏。虽然我确实发现了我正在使用的补丁的问题,但是它有一个bug。所以现在我能够正确编译,这是一个开始。现在一切似乎都很好,我解决了补丁问题。谢谢你的帮助。