Linux kernel在“make install”時的問題分析總結

來源:互聯網
上載者:User

在編譯核心後,make install 時可能遇到“ERROR: modinfo: could not find module XXX”的問題;命令列中操作看到的內容如下:

 代碼如下 複製代碼
[root@smilejay linux-3.12]# make modules_install
  ..........
  INSTALL sound/soundcore.ko
  INSTALL sound/synth/emux/snd-emux-synth.ko
  INSTALL sound/synth/snd-util-mem.ko
  INSTALL sound/usb/snd-usb-audio.ko
  INSTALL sound/usb/snd-usbmidi-lib.ko
  INSTALL sound/usb/usx2y/snd-usb-usx2y.ko
  DEPMOD  3.12.0
[root@smilejay linux-3.12]# make install
sh /root/linux-3.12/arch/x86/boot/install.sh 3.12.0 arch/x86/boot/bzImage
        System.map "/boot"
ERROR: modinfo: could not find module power_meter
ERROR: modinfo: could not find module nf_conntrack_ipv4
ERROR: modinfo: could not find module nf_defrag_ipv4
ERROR: modinfo: could not find module nf_conntrack_ipv6
ERROR: modinfo: could not find module nf_defrag_ipv6
ERROR: modinfo: could not find module xt_state
ERROR: modinfo: could not find module nf_conntrack
ERROR: modinfo: could not find module i2c_piix4
ERROR: modinfo: could not find module sg
ERROR: modinfo: could not find module ext4
ERROR: modinfo: could not find module mbcache
ERROR: modinfo: could not find module jbd2
ERROR: modinfo: could not find module sr_mod
ERROR: modinfo: could not find module cdrom
ERROR: modinfo: could not find module pata_acpi
ERROR: modinfo: could not find module ata_generic
ERROR: modinfo: could not find module ata_piix



原因分析:在make install時,為了讓新核心中不缺少所需module,會先檢查當前系統已經載入了的module(lsmod命令可查看),然後對比新安裝的核心模組,如果新的核心模組中缺少一些module(和當前lsmod命令的輸出做對比),就會報“ERROR: modinfo: could not find module power_meter”這樣的錯誤資訊。

具體來說,缺少相應module而報錯,大致可分為3種情況:

 

1. 確實是缺少了某個module,其解決方案是:如果報的module對於你來說是有用,檢查編譯kernel時的.config檔案,加上對應的配置(配為=m),重新編譯和安裝modules即可;如果你覺得這個module沒啥用,大可不必管它了。

2. 新編譯的kernel已經將該選項編譯進kernel了(.config中選擇為=Y),從而不需要產生這個module的.ko檔案,系統找不到對應的.ko檔案,但是已經在新核心中了,不必理會這個報錯。例如,上面的“ERROR: modinfo: could not find module ext4”是因為我將EXT4檔案系統模組編譯為built-in了,如下:

 代碼如下 複製代碼
[root@smilejay linux-3.12]# grep EXT4 .config
CONFIG_EXT4_FS=y
# CONFIG_EXT4_FS_POSIX_ACL is not set
# CONFIG_EXT4_FS_SECURITY is not set
# CONFIG_EXT4_DEBUG is not set



3.
模組的名稱變了,用當前系統lsmod命令尋找的模組名稱,在新編譯的核心中找不到module了。只需要檢查確認即可,如這裡的“ERROR: modinfo: could not find module power_meter”就是這種類型,檢查方式如下:

 代碼如下 複製代碼
# 當前系統已經載入了power_meter模組
[root@smilejay ~]# lsmod | grep meter
power_meter             9169  1
 
# 但是kernel 3.12 中該module名稱為 acpi_power_meter,和'lsmod'查到的power_meterb不一致。
[root@smilejay ~]# find  /lib/ -name "*power_meter.ko"
/lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/acpi/power_meter.ko
/lib/modules/3.12.0/kernel/drivers/hwmon/acpi_power_meter.ko


最後,如果那些錯誤判的核心模組,你認為不重要或者都經過上面的分析解決後,你就可以忽略這些錯誤提示了;儘管有這些“ERROR: modinfo: ”錯誤提示,但是kernel還是被正確安裝了的,往下繼續操作使用即可。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.