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