Linux驅動開發環境-Kernel源碼安裝

  開如學習LDD3這本書。學習

  我是在Fedora18上學習的,但我安裝的這個版本,/usr/src/下面沒有相應的源代碼。測試

本身從KERNEL網站下載相應版本源碼(安裝驅動有問題)網站

  因而從kernel的網上下載了一個3.6.10的kernel源碼,個人fedora18是這個版本(uname -r查看)。ui

  下載解壓放在/usr/src/kernel/目錄下,開始學習.net

  這裏須要修改Kernel源碼中Makefile中定義的版本,通常LINUX發行商都會本身定義一個EXTRAVERSION的標識,下載的源碼須要與使用的LINUX保存一致,否則,驅動在加載時提示加載不了,如我以前的提示(/var/log/messages的顯示):blog

  version magic '3.6.10 SMP mod_unload 686 ' should be ' 3.6.10-4.fc18.8686 SMP mod_unload 686';ci

  因此我在kernel中的Makefile修改爲以下:get

  VERSION = 3源碼

  PATCHLEVEL = 6io

  SUBLEVEL = 10

  EXTRAVERSION = -4.fc18.i686

  改完後,你須要在kernel源目錄下,make一下(生成後,中途Ctrl+C就能夠了,否則會等好久),以生成相應的文件。

 

  按照上面的步驟,我編譯完相應的驅動,也能正確的加載了,但我調用printk時,/var/log/messages中並無打印相應的信息,找了好久,都找不到緣由,問題出來在哪裏。

  最後我想是否是下載的內核源碼與如今系統使用的一致的問題,因而從fedora下載舊的18版本的源碼,安裝上,測試,就能夠了,雖然仍舊不知問題出來哪裏。

  

下面是安裝發行商下載的rpm源碼包的過程:

  

1:下載源代碼RPM文件
  能夠在相應的發行商的網站上下載,或使用yumdownloader source kernerl....(完整的包名,注意版本號)

2: 安裝rpm包
  rpm -ivh kernel...(rpm文件),在安裝以前能夠執行yum-builddep kernerl...(rpm文件),檢查相關的依賴性(這一步也能夠後面作)
  在安裝的過程當中,若是出現以下錯誤:
  warning: user mockbuild does not exist – using root
  warning: group mockbuild does not exist – using root
  新建一個組和一個賬號就行了。
  #groupadd mockbuild
  #useradd mockbuild -g mockbuild
  而後再從新安裝

3:將源碼轉成可用狀態:
  進入SPECS目錄
  cd ~/rpmbuild/SPECS
  執行如下命令(若是沒有安裝rpmbuild,執行yum install rpm-build安裝)
  rpmbuild -bp –target=$(uname -m) kernel.spec (target選項前是兩個-)
  若是出現error: Failed build dependencies。。。的錯誤,執行
  yum-builddep kernel.spec (kernel.spec是~/rpmbuild/SPECS目錄下的文件)
  or
  yum-builddep kernel...(rpm文件),以前一步說明的檢查相關的依賴性

  成功能源代碼會在~/rpmbuild/BUILD目錄裏

  以上內容及問題參考瞭如下文章:
  http://blog.csdn.net/derryzhang/article/details/6003122
  http://stackoverflow.com/questions/13227162/automatically-install-build-dependencies-prior-to-building-an-rpm-package


4:下載安裝的源代碼裏的Makefile裏的版本和本身使用的主次版本一致,但發行商通常會加一個EXTRAVERSION來標識,

  因此須要在源碼的Makefile裏定義EXTRAVERSION與本身用的發行  的一致的(uname -r).

相關文章
相關標籤/搜索