linux 核心模組與執行核心之間存在著版本依賴。如果編譯核心模組使用的**樹與執行核心的版本不完全匹配,則在用insmod安裝模組時,很可能會產生invalid module format. 錯誤。
為了解決這個問題,要麼使用與當前執行核心完全匹配的**樹來編譯核心模組,要麼用手頭的核心**重新構建並安裝核心。
在本文的以下內容中,將介紹如何在ubuntu系統上構建並安裝新的linux核心。
首先,更新下安裝包資料庫
apt-get update
接著,再來安裝所需的工具
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
cd /usr/src
wget
另外,也可以用 apt-get 來安裝。需要注意的是,如果使用這種方法,**包只是被放在了/usr/src目錄下,並沒有被解壓,開發者需要自行手動解壓。
tar xjf linux-2.6.18.1.tar.bz2
ln -s linux-2.6.18.1 linux
cd /usr/src/linux
好了,現在**已經準備完畢,可以開始配置核心了。
為了使得要編譯的核心有正確的配置,我們最好使用當前執行系統的配置檔案。
cp /boot/config-`uname -r` ./.config
上述命令將當前的配置檔案複製到了/usr/src/linux/.config,在下面,我們將使用這個檔案作為預設配置
輸入命令
make menuconfig
在彈出的配置介面中,選擇load an alternate configuration file選單項,需載入的檔名為.config,選擇ok。
選擇退出,並儲存當前配置。
輸入下列命令來構建配置好的核心
這個過程可能要花費好幾個小時,慢慢等吧,不著急.....
終於編譯完成了,讓我們輸入下面命令
cd /usr/src
ls -l
進入上層目錄檢視檔案,
你應該能看到有如下兩個檔案
linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.custom_i386.deb 核心安裝包
linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.custom_i386.deb 構建附加核心模組需要的安裝包
ok,讓我們來安裝核心
dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.custom_i386.deb
安裝完成後,重啟系統
shutdown -r now
當系統重新啟動後,輸入命令來檢視當前核心的資訊。
uname -r
如果運氣不算太壞,這個命令應該輸出剛才安裝的核心版本資訊。
現在,正在執行的就是自己構建的linux 核心。
再重新編譯我們的helloworld核心模組,並用insmod 安裝。沒有錯誤資訊輸出,接著再lsmod檢視一下,輸出的列表中有helloworld模組,說明確實安裝成功。
通過重新構建並安裝核心,解決了核心開發中的版本依賴問題,成功地搭建了基於ubuntu的核心開發環境。
1. 2. linux裝置驅動程式
基於ubuntu搭建 Discuz 論壇
系統要求 ubuntu 16.04.1 lts 64 位作業系統 ubuntu 需要安裝 apache2 使用apt get安裝 apache2 安裝好後,您可以通過訪問實驗室ip位址 檢視到 apache 介面,說明 apache2 安裝成功 sudo apt get install apache...
基於ubuntu搭建 WordPress 個人部落格
系統要求 ubuntu 16.04.1 lts 64 位作業系統 準備 lamp 環境 lamp 是 linux apache mysql 和 php 的縮寫,是 wordpress 系統依賴的基礎執行環境。我們先來準備 lamp 環境 sudo apt get install apache2 y ...
Ubuntu開發環境搭建
在虛擬中試玩ubuntu1604版本,有關安裝後一些配置記錄如下,以備後用。apt get dpkg sudo vim etc network inte ces auto ens33 iface ens33 inet dhcp iface ens33 inet static address 192....