1. 程式人生 > >核心編譯的過程以及出現問題的解決

核心編譯的過程以及出現問題的解決

系統:Ubuntu 16.04 核心版本:2.6.30

1、從網上下載下來的一份核心原始碼 linux-2.6.30.tar.bz2 ,解壓縮 tar jxvf linux-2.6.30.tar.bz2。由於我的檔案放在Download裡面,將解壓後的核心檔案放入到/home目錄下。

2、進入linux-2.6.30目錄 。

3、生成配置檔案:make menuconfig。可以不做任何修改,後面可以根據自己的需要進行新增刪減。

4、生成映象檔案:make bzImage。注意在此過程中,最開始就直接切換為root使用者,避免不必要的麻煩。

接下來會出現一些小問題,如下:


此處需要進入到kernel/timeconst.pl中,將‘if(!defined(@(array))’ 修改為‘if(@val)’即可。

接著會遇到以下問題:


這裡需要下載一個補丁:

在這裡下載:https://linux.linuxidc.com/ 如果需要使用者名稱和密碼都是:www.linuxidc.com。需要的補丁在/2012年資料/2月11日/Linux核心編譯錯誤 ,將該目錄下的檔案下載放在linux-2.6.30目錄下,然後執行 gunzip -dc __gnu_mcount_nc_patch.patch.gz |patch -p1。然後make bzImage 繼續編譯。

5、接著生成modules,make modules。

出現如下錯誤:


vim drivers/scsi/advansys.c中

將8352行的那一個函式,dma_cache_sync(board->dev,scp->sense_buffer,SCSI_SENSE_BUFFRSIZE,DMA_FROM_DEVICE);註釋掉就行,接著make modules執行。


進入到drivers/scsi/osd/osd_initiator,將65、66行都註釋掉,繼續編譯。

接著會出現以下問題

分別開啟以上幾個編譯檔案:

vim sound/pci/ali5451/Makefile 將obj-$(CONFIG_SND_ALI5451) +=snd-ali5451.o這一行註釋掉

其他的同理來解決,最終編譯成功。

6、make modules_install。

出現:depmod:WARNINGS:could not open /lib/modules/2.6.30/modules.bulltin:No such file or directory。這個警告可以暫時不用理會。至此,核心編譯完成。若想要新增核心模組,則依據insmod rmmod 步驟來進行新增、刪除等。