linux内核打印前有buildroot,buildroot-linux内核
Buildroot可以從Linux Kernel的官網(wǎng)(kernel.org)下載并編譯內(nèi)核,也可以使用用戶自己的定制化內(nèi)核。
使用官方內(nèi)核
使用官方的內(nèi)核構(gòu)建系統(tǒng)非常簡單,事實上,mini2440_defconfig就是采用官方的內(nèi)核進行構(gòu)建的。
make menuconfig --> Kernel --> KernelVersion中,你可以選擇Latest Version也就是最新版本的內(nèi)核進行構(gòu)建(目前是4.5.4),也可以選擇Customer Version也就是以前的穩(wěn)定版進行構(gòu)建。
一般會選擇一個Customer Version的穩(wěn)定版本。mini2440選擇的是3.0.4這個比較舊的版本。
注意圖2中的Defconfig name選項,這里填寫了mini2440,這是因為mini2440實際上是在Linux官方的源代碼樹中被維護的,Linuxkernel官方的源代碼里就有mini2440的配置文件,所以這里選上mini2440,內(nèi)核編譯時,會直接使用mini2440在Linux Kernel源碼樹中的配置文件進行編譯。
Figure1??配置Linux Kernel的來源
Figure2 mini2440的官方內(nèi)核版本配置參數(shù)
配置完成后,保存退出。直接make linux ,buildroot就能從Linux kernel官網(wǎng)下載編譯你所需的內(nèi)核就好。
構(gòu)建定制化的內(nèi)核
很多時候,我們需要持續(xù)維護和開發(fā)自己的Linux內(nèi)核定制版本,而不是直接到官網(wǎng)下一個內(nèi)核來用。像友善Tiny4412開發(fā)板提供的定制版Linux-3.5內(nèi)核,經(jīng)過了大量的補丁和修改,兼容Linux和Android兩套系統(tǒng),部分源代碼也不公開,接下來就以tiny4412定制化的Linux-3.5內(nèi)核為例,介紹如何在Buildroot中構(gòu)建定制化的內(nèi)核。
我使用的是linux-3.5-20151029.tgz這個官方提供的Linux 內(nèi)核壓縮包。構(gòu)建步驟如下:
1.??????在make menuconfig --> Kernel中,Kernel Version選擇Custom Gitrepository,即采用git倉庫來維護管理定制化的Linux Kernel源代碼。當然,這個方法默認你懂得如何使用git工具。如果不想用git的方法來維護,你也可以選擇Local Directory等方法,這樣應該是用file的方法把Linux Kernl源代碼cp到Buildroot中,具體可以自己嘗試。
采用git倉庫的方法,url of custome repository即git倉庫的鏈接地址自然要選上,圖中是我本地git倉庫的地址,這個讀者根據(jù)需要進行修改。
Version由你要構(gòu)建的定制化Linux內(nèi)核的git??tag號決定,我這里填master,則表示buildroot會去本地LinuxKernel的git倉庫master分支取最新版本的源代碼進行編譯。
Configuration file path即Buildroot中保存的一份LinuxKernel配置文件的存放位置,因為Buidroot在上層可以在編譯時把這份配置文件傳遞給Linux Kernel,Linux Kernel目錄下的.config文件進行配置。一般這份配置文件我們都放在Buildroot的board/文件夾里面,tiny4412是arm架構(gòu)的,因而需要在board/arm/文件夾下面創(chuàng)建tiny4412文件夾,然后將友善官方在Linux內(nèi)核目錄中保存的tiny4412_linux_defconfig這份配置文件存放在board/arm/tiny4412/文件夾下。編譯的時候,Buildroot會去這里取配置文件,我們也可以在這里作為上層修改維護內(nèi)核的配置。
Figure3 定制化Linux Kernel 的menuconfig --> Kernel配置
2.??????盡然采用的是git倉庫的方法管理定制化Linux Kernel的源代碼,則需要在本地創(chuàng)建git倉庫保存和管理真正的源代碼。
a)???????git ?init--bare /mnt/sdb/git_repo/linux-3.5-tiny4412創(chuàng)建本地的git 倉庫
b). 然后在一個空文件夾中,gitclone /mnt/sdb/git_repo/linux-3.5-tiny4412
c). 再把官方給的linux-3.5-20151029.tgz中的源代碼,解壓到空文件夾中
d). 然后git add –A ,gitcommit ?-m ”add code”, git push origin master.
這樣就可以把Linux Kernel源代碼備份到本地的git 倉庫中來維護,buildroot也可以在這里拿到Linux源代碼
3.??????修改配置文件和構(gòu)建腳本。實際上Linux內(nèi)核Config變量選項已經(jīng)默認選上了,不需要修改了,如果你還要定制化一些配置選項,可以慢慢學習修改linux/linux.mk的構(gòu)建腳本。
經(jīng)過以上修改,make linux就能 編譯構(gòu)建你的定制化Linux內(nèi)核了。
---------------------
作者:zhou_chenz
來源:CSDN
原文:https://blog.csdn.net/zhou_chenz/article/details/52348217
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的linux内核打印前有buildroot,buildroot-linux内核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对上国产宝马X5压力巨大 奥迪Q7官宣降
- 下一篇: Linux环境中Qt程序的手工发布