
我正在按照位於的說明進行操作這裡設定我的伺服器。它指出我必須應用已下載到電腦上的補丁。我的問題是,文章說使用以下指令:
/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
.我需要知道如何找到需要在這裡修補的特定文件...
答案1
您需要下載原始碼。你可以透過 apt-src 來做到這一點,但我(個人)會從以下位置獲取最新的內核.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 使用者。
答案2
為了避免挫折感,您通常應該以 Ubuntu 方式執行此類操作。使用官方包的完整說明可以在這裡找到:
https://help.ubuntu.com/community/Kernel/Compile
它提供了用於啟動和運行自訂核心的依賴項清單和逐步命令。
透過遵循該過程,您最終將獲得一個包含自訂核心的可卸載軟體包,這意味著您將來可以根據需要切換回官方核心。
答案3
您所遵循的說明將向您顯示命令列提示符/usr/src/linux #
,這不是您作為命令的一部分鍵入的內容。鍵入將套用補丁的命令從此處開始patch
並從此處繼續。