2015年2月18日 星期三

解決「成功編譯的『驅動模組 (driver module)』卻掛載失敗」的問題

最近一個多月來 Linux 的核心的版本更新頻繁,從 3.17.x ~ 3.18.x 每個的更新都要編譯一次『驅動模組』。根據前文所述的步驟:
製作『驅動程式模組』時,偶而會出現掛載失敗的情況。『驅動模組』掛載失敗時,錯誤訊息不一定會看得到或容易被忽略,較明顯、可察覺的現像就是:原先可以使用的週邊設備(上例中為:無線網路及 RAID 硬碟組)變成不可用。
  原因是『驅動模組』編譯時,編譯程式 (GCC) 在編譯時為加快編譯速度,先忽略已編譯妥的模組,當「Linux 核心版本」編號變化較小時,被誤判為不需再編譯。有時這個誤判造成編譯後的『驅動模組』不能在新的「Linux 核心」掛載。
  解決辦法也很簡單,在前文的步驟中加個命令即可:
  • 在『make …』這個編譯命令前,暫停一下。
  • 先下清除編譯中間暫存檔的命令『make clean』,
  • 再下原有的『make …』編譯命令及之後的命令。

已測試版本:

  • Fedora: 20, 21

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)