內核ko編譯
首先uname -r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。
最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
打字不易,如滿意,望採納。
㈡ 內核編譯,重新生成ko文件,需要make clean之後再make嗎
你可以使用自己的內核而不是發行版的內核, 另外也介紹了如何給內核打補丁, 從而方便增加新的功能.下面的工作我都在Ubuntu 6.10 Server ("Edgy Eft")和Ubuntu 6.06 Desktop ("Dapper Drake")上經過了測試.
我想首先要說的是文章中構建自定義內核的方式不是唯一的, 還有許多其它的方式, 這不過是我習慣的方式. 我不能保證使用後不會出現任何問題.
參考地址:http://linux.chinaunix.net/techdoc/system/2007/08/26/966343.shtml
㈢ linux內核編譯hello.ko: couldn't find the kernel version the mole was compiled for
命令 輸錯了吧
不是insmod ./hello.ko
而是insmod hello.ko
㈣ Ubuntu下,編譯內核驅動,您的那個程序。ko安裝成功了么
看編譯到哪裡了,要是直接編譯進內核,在啟動內核時候機會自動insmod。如果,編譯生成ko模塊,需要在板子啟動時候手動insmod一下。
㈤ 迅為4412內核有源碼該怎麼編譯成.ko文件
我在內核里找到CAN驅動如圖:
我把內核的驅動程序放到其他地方進性編譯但是在編譯的時候會出現NO TARGET .STOP 的錯誤 我想問下是怎麼回事?該怎麼辦
?小白一個 謝謝大家
㈥ 編譯時內核怎麼生成的ko文件
從網上找一個編譯模塊的makefile,放到你的模塊的文件夾裡面,然後修改裡面的路徑指定編譯的內核,以及目標名稱。make就可以了。
㈦ 編譯時內核怎麼生成的ko文件
不玩這個,這里提供一個思路
gcc命令其實是分成幾步執行的,預處理,編譯,鏈接。".o"才到編譯這一步,如果按照生成ko文件的方式鏈接一下說不定能成。
另生成你所說的.o文件的源代碼一定是要按".ko"的規范寫的,也就是什麼模塊注冊,模塊卸載等函數是必需要有的.
想想編譯ko里的makefile,裡面好像是引入了一個moles目錄吧!
呵呵,3樓的方法是普通的鏈接過程。「.ko」的鏈接應該不會這么簡單!
望樓主細心探索
㈧ linux內核編譯,怎麼樣 從o文件直接生成ko文
gcc -Wall adc.c -o adc.o
或者在makefile中寫下:
adc.o:
gcc -Wall adc.c -o adc.o
然後make,注意adc.o:下面的空格必須用Tab鍵