我正在按照此处的说明设置我的服务器。它声明我必须应用我已经下载到机器上的补丁。我的问题是,文章说要使用以下命令:
/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 内核版本/目录。我已经使用以下命令进行了尝试:
/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
. 我需要知道如何在此处找到需要修补的特定文件...
您需要下载源代码。您可以通过 apt-src 执行此操作,但我会(个人)从kernel.org获取最新的,提取它,修补它(只需使用桌面等本地路径,它不需要隐藏在 /usr/src完全没有!)并按照“老式方式”的说明进行编译。
请注意,某些补丁仅适用于某些版本的内核(包括单点版本),因此请确保您的补丁适用于源版本,然后再浪费 20-30 分钟编译它。
但是您的具体问题是您需要位于要应用补丁的目录中。在你的情况下:
显然更改补丁的路径(或将其粘贴在同一目录中)。如果源文件由 root 拥有,
sudo
请在 patch 命令前添加前缀或sudo su
在执行此操作时运行成为 root。为避免沮丧,您通常应该以 Ubuntu 的方式执行此类操作。使用官方包的完整说明可以在这里找到:
https://help.ubuntu.com/community/Kernel/Compile
它提供了依赖项列表和用于启动和运行自定义内核的分步命令。
通过遵循该过程,您最终将获得一个包含自定义内核的可卸载软件包,这意味着您将来可以在需要时切换回官方内核。
您遵循的说明向您显示命令行提示符
/usr/src/linux #
,这不是您在命令中键入的内容。键入将应用补丁的命令从那里开始patch
并从那里继续。