2016-01-21 58 views
0

我遇到了補丁(版本2.6)的問題,並想知道是否有其他人遇到此問題:
系統A:虛擬機(VBOX)與FC21。 DIFF == 3.3,補丁== 2.7.5
產生ixgbe驅動程序在Linux內核補丁(更新驅動程序,以支持新的硬件)
原稿目錄:LINUX /司機/ NET /以太網/英特爾/的ixgbe
更新目錄: /home/patches/ixgbe-4.0.3
通過diff -Naur <orig> <update> > file.patch產生的補丁文件
文件看起來沒問題。有更改的文件以及正在添加到Orig的「新」文件。
使用BuildRoot(2015.08.01)及其修補程序設置,該修補程序可以執行,並且工作得很好,驅動程序將生成並啓動映像。
系統B:擁有RHEL6的公司服務器。 diff == 2.8.1,patch == 2.6
將整個Buildroot安裝程序複製到本機。修改目錄路徑,並且生成運行正常,直到修補程序。輸出顯示已更改的文件已更新成功,但任何「新」文件都會在「更新目錄」路徑中結束,該路徑在此環境中不存在。已驗證/ home/xx/yy/zz目錄是否存在,該補丁是由補丁文件中的文件名創建的。爲什麼????
系統A工作得很好,它將「新」文件放在正確的內核目錄中。Linux補丁問題:目錄路徑未強制執行

以前有人看過這種奇怪的行爲嗎?我怎樣才能:

  1. tell diff使用orig目錄?
  2. 告訴修補程序使用orig目錄? (構建根處理通過腳本修補)

任何援助將不勝感激。 。 。 Stephen

回答

0

TL; DR:要生成補丁,請確保原始目錄和修改目錄是並排的。

修補程序將與-p1一起應用,即路徑的第一個組件將被剝離。所以在原來的一面,你會有drivers/net/ethernet/intel/ixgbe/<filename>,但在修補方面,你將有home/patches/igbe/<filename>。現在看起來補丁2.6將在補丁方面採用路徑,這顯然不存在。我真的很驚訝,它可以用於後續的補丁版本。

生成補丁的規範方法是複製完整的原始源目錄,即整個linux目錄,並將修補後的目錄放在一起。然後你從上面的目錄中做diff -Naur linux-orig linux-patched。或者,更好的辦法是,從git控制的linux目錄開始,進行修改,提交修改,並執行git format-patch -1 -o <path-to-buildroot-patches>