您好,登錄后才能下訂單哦!
今天給大家介紹一下Linux內核移植的步驟是什么。文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。
方式一:kernel提供的源碼包,進行編譯替換
主要有兩個準備工作,一是在linux kernel官網上下載源碼包,二是安裝好任意版本的linux Ubuntu 系統并下載相應的編譯工具。
在linux kernel上下載源碼包,網址為:https://www.kernel.org/pub/linux/kernel/,選擇對應的源碼包下載,注意源碼包的大小一般是幾十兆左右,命名后綴為.tar.bz2,如下圖所示:以linux_3.2.1為例子:
下載完成后,進行第二個準備工作,安裝任意版本的Ubuntu,安裝鏡像網址:http://www.ubuntu.org.cn/download ,像裝其他任意操作系統一樣,安裝完成Ubuntu操作系統,然后配置好聯網,進行apk_get的下載。以下過程在root權限下進行,安裝有關編譯程序。安裝make ,gcc, make-kpkg,運行menuconfig等等和編譯內核相關的工具。
有關命令:
$sudo apt-get install build-essential kernel-package libncurses5-dev
注意: (1)libncurses5-dev是為之后配置內核能運行 make menuconfig程序做準備 Build-essential為編譯工具,kernel-package是編譯內核工具
(2)如果系統顯示無法查找到這三個文件,輸入#apt-get update更新數據源。 把剛剛下載的源碼包進行拷貝在ubuntu系統中,并解壓到/usr/src 目錄下,解壓可以直接右鍵解壓,或者采用以下命令進行解壓:
$sudo tar Jvfx linux-3.4.88.tar.xz
首先,清理以前編譯時留下的臨時文件。如果是剛剛解開的包,不需要執行這步。如果是第二次或者是第n次編譯,那么一定要執行。 相關命令如下:
#$ sudo make mrproper
然后將自己原本內核的配置文件拷貝過來成為新內核的配置文件,命令:
#cp /boot/config-`uname -r` ./.config
這里需要說明的是,拷貝過來是很方便的,相當于直接給新的內核編譯提供對應的配置文件,告訴內核哪些文件要編譯,哪些不需要編譯,但是經過幾次的編譯修改,這一部分是可以自定義的,利用我們之前下載的工具menuconfig。
進入內核的源碼目錄
#cd /usr/src/linux_3.2.1
執行以下命令:
#make menuconfig
注意:這個命令需要在超級用戶權限下執行,否則可能會報出一些莫名奇妙的錯誤。執行這個命令之后了,就可一看到下面的圖片了: 這個圖里面就可以對配置文件進行一個修改了,如果當初直接拷貝原內核的配置文件,那么此時直接選擇倒數第二行load an Alternate Configuration File,然后sava即可。
如果自己配置則選擇上面的任意目錄,進行選擇哪些文件要編譯,哪些不編譯,一般需要選擇的是設備驅動,選項是Device Drivers,選擇完畢后同樣保存save即可。
注意這兩種方式都可以,看用戶自己的選擇。具體的每個選項的內容解析見一下博客: http://forum.ubuntu.org.cn/viewtopic.php?t=134404
編譯命令:
#make all -j4
執行以上命令之后就可以編譯內核了, make all就是將內核以及模塊一起編譯。后面的參數-j4表示,cpu要開啟四個線程來編譯內核。一般來說,每個cpu可以開啟兩個線程來編譯內核,我的電腦是有兩個cpu,所以開啟了4個線程。這樣編譯真心很快的,以前沒有發現這樣編譯,只有一個線程編譯真心夠等好長時間的。
我們將源代碼目錄下的arch/x86_64/boot/bzImage復制到/boot/下面,因為我下載的源代碼版本為linux-3.2.1,但是需要根據自己的cpu類型,如是x86架構還是amd,或者是32位或64位,在相應的目錄下尋找bzImage。 所以復制的命令為:
#cp arch/x86_64/boot/bzImage /boot/vmlinuz-3.2.1
這里需要說明,bzImage必須得有,是編譯成功完成的一個生成文件,如果沒有此文件,對不起,編譯失敗,請重新回去編譯。vmlinuz-3.2.1 是自己主動命令的,可以自己改,但一般都是這種命令方式。
命令:
#cp /usr/src/linux-3.2.1/System.map System.map-3.2.1
命令:
#cp .config /boot/config-3.2.1
命令:
#make modules_install
#cd /lib/modules/3.2.1 #update-initramfs –c –k 3.2.1
#update-grub
#cd /ect/default #sudo nano ./grub
將hidden兩行代碼注釋掉,這樣開機啟動的grub就會出現,可以由你選擇改啟動哪個內核版本。
#GRUB_HIDDEN_TIMEOUT=0 #GRUB_HIDDEN_TIMEOUT_QUIET=tru
更改完成之后,在重新生成grub.cfg文件,命令和上面一樣:
#update-grub
以文本形式查看,是否更新有新內核的啟動項,如果有即可不用修改,如果沒有,進行手動修改。
#cd /boot/grub #sudo nano ./grub.cfg
手動修改,按照原來內核的格式進行修改,只用修改新內核的名字而已。
輸入內核版本檢測命令:
命令:#uname -r
就會出現新內核的名稱!!!恭喜,替換內核成功!
首先必須說明的是,這種方式我嘗試了兩臺電腦,兩個不同的內核升級,均為成功,原因不詳: 具體步驟簡單如下:
在 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 上下載所需升級包。此處下載的是64位的3.5.4版本的3個deb包:
linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
首先安裝架構無關的即帶all的headers包
sudo dpkg -i linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb sudo dpkg -i linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb sudo dpkg -i linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
安裝后,/boot目錄下會生成新的內核的相關文件,/lib/modules目下也生成了相應模塊。
按照上述的步驟9開始,與上面一樣。更新完了grub.cfg,然后重新啟動,進行新的內核即可。
以上就是Linux內核移植的步驟是什么的全部內容了,更多與Linux內核移植的步驟是什么相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。