将补丁应用到内核的正确方法?
我按照此处的说明设置我的服务器。 它声明我必须将我下载的补丁应用到机器上。 我的问题是,文章说要使用以下命令:
/usr/src/linux # patch -p1 < file.diff //note I replace file.diff w/ routes-2.6.36.16.diff
返回:
-bash: /usr/src/linux: No such file or directory
我继续假设/linux #
应该替换为实际的linux内核版本/ dir。 我使用以下命令尝试了这个:
/usr/src/linux-headers-2.6.35.22 patch -p1 < file.diff
这返回相同。 当我查看/ usr / src的内容时,我只有两个目录linux-headers-2.6.35.22
和linux-headers-2.6.35.22-generic-pae
我需要指导将补丁应用到内核的正确方法。
编辑
如果我执行/usr/src/linux-headers-2.6.35.22/ patch -p1 file.diff
我得到-bash: /usr/src/linux-headers-2.6.35.22: is a directory
。 我需要知道如何找到需要修补的特定文件…
为了避免挫折,你通常应该以Ubuntu的方式做这些事情。 使用官方软件包的完整说明可在此处找到:
https://help.ubuntu.com/community/Kernel/Compile
它提供了依赖关系列表和逐步命令,用于启动和运行自定义内核。
通过遵循该过程,您将得到一个包含自定义内核的可卸载软件包,这意味着如果需要,您将来可以切换回官方内核。
您需要下载源代码。 你可以通过apt-src做到这一点,但我(个人)只是从kernel.org获取最新信息,解压缩,修补它(只需使用像桌面这样的本地路径,它不需要隐藏在/ usr / src中在所有!)并按照“老式的方式”说明进行编译。
请注意,某些修补程序仅适用于某些内核版本(包括点版本),因此请确保您的修补程序适用于源版本,然后再浪费20-30分钟进行编译。
但是您的具体问题是您需要位于要应用修补程序的目录中。 在你的情况下:
cd /usr/src/linux-headers-2.6.35.22/ patch -p1 < /path/to/file.diff
显然改变补丁的路径(或将其粘贴在同一目录中)。 如果源文件由root拥有,则将sudo
前缀添加到patch命令或运行sudo su
以成为root用户。
您所遵循的说明向您显示命令行提示/usr/src/linux #
,这不是您在命令中键入的内容。 将应用补丁的键入命令从补丁开始,然后从那里继续。