jon*_*aze 5 server patch kernel
我正在按照此处的说明设置我的服务器。它指出我必须应用我下载到机器上的补丁。我的问题是,文章说使用以下命令:
/usr/src/linux # patch -p1 < file.diff //note I replace file.diff w/ routes-2.6.36.16.diff
Run Code Online (Sandbox Code Playgroud)
这将返回:
-bash: /usr/src/linux: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我继续假设/linux #应该用实际的 linux 内核版本/目录替换。我已经使用以下命令尝试过这个:
/usr/src/linux-headers-2.6.35.22 patch -p1 < file.diff
Run Code Online (Sandbox Code Playgroud)
这返回相同。当我查看 /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 分钟编译它。
但是您的具体问题是您需要位于要应用补丁的目录中。在你的情况下:
cd /usr/src/linux-headers-2.6.35.22/
patch -p1 < /path/to/file.diff
Run Code Online (Sandbox Code Playgroud)
显然更改补丁的路径(或将其粘贴在同一目录中)。如果源文件归 root 所有,请sudo在 patch 命令上添加前缀或sudo su在执行此操作时运行以成为 root。
为了避免挫败感,您通常应该以 Ubuntu 方式执行此类操作。使用官方包的完整说明可以在这里找到:
https://help.ubuntu.com/community/Kernel/Compile
它提供了用于启动和运行自定义内核的依赖项列表和分步命令。
通过遵循该过程,您最终将获得一个包含自定义内核的可卸载软件包,这意味着您将来可以根据需要切换回官方内核。
| 归档时间: |
|
| 查看次数: |
24983 次 |
| 最近记录: |