久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

移植Linux內(nèi)核-映像文件

 danydany_ok 2010-12-03

版權(quán)聲明:轉(zhuǎn)載時請以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://tigerwang202./logs/43927976.html

首先從Blackfin uClinux網(wǎng)站下載最新版uClinux內(nèi)核,。

http://blackfin./gf/project/uclinux-dist/frs/

上述地址除了提供內(nèi)核源代碼外,,還提供一些預(yù)編譯的內(nèi)核文件供特定電路板使用。如果使用ADI官方的驗(yàn)證板,,可從中選擇適合板子的編譯好的內(nèi)核文件,。

那些內(nèi)核文件一般沒有后綴擴(kuò)展名,你在下載之后可以使用UNIX的file命令察看文件類型,,例如:

file linux-2.6.x/linux

linux-2.6.x/linux: ELF 32-bit LSB executable, version 1 (SYSV), statically linked, not stripped

ELF是預(yù)編譯的存儲器映像文件,,它可直接下載至目標(biāo)板。這些文件不需要編譯,,拿來就可直接使用,。

還有一類是tar.bz2為后綴的源代碼壓縮包文件,為了編譯內(nèi)核,,你需要下載它,。撰寫本文時,,筆者下載的是:

uClinux-dist-2008R1.5-RC3.tar.bz2

將其解壓縮至項(xiàng)目根目錄下的kernel文件夾。例如,,筆者的內(nèi)核源碼放置在/home/uclinux/kernel/uClinux-dist-2008R1.5-RC3文件夾,。

tar –vxjf uClinux-dist-2008R1.5-RC3.tar.bz2

在你為目標(biāo)板建立內(nèi)核的過程中,配置屬于最初的階段,。內(nèi)核配置的方法很多,,而且配置設(shè)置時有很多選項(xiàng)可以選擇。不管你使用哪種方法設(shè)定設(shè)置或者選擇哪些配置選項(xiàng),,在你設(shè)定好配置后都將產(chǎn)生.config文件以及建立過程其余步驟將會用到的一些符號連接和頭文件,。

以下的配置過程我們使用一個文本界面的設(shè)置程序,這也是最常用的設(shè)置方法,。

如果使用的是Debian系統(tǒng),,默認(rèn)安裝沒有ncurses庫的,使用make menuconfig會提示出錯,,需要先運(yùn)行下列命令安裝這個庫:

apt-get install libncurses5-dev

切換至內(nèi)核源代碼目錄,,運(yùn)行以下命令配置內(nèi)核。該命令提供一個基于文本界面的友好的內(nèi)核設(shè)置界面,。

make menuconfig

注意:如果你先前從一個平臺設(shè)置切換至另一平臺,,你需要先運(yùn)行 make clean 命令,以避免編譯內(nèi)核時可能出現(xiàn)的錯誤,。一個比較可靠地方式是:無論在什么時候,,在你配置內(nèi)核時,都運(yùn)行make clean 命令,。

一 些用戶可能使用make xconfig命令來配置內(nèi)核,,這個命令提供一個圖形化的配置。較新版本的內(nèi)核可能要求你安裝有QT圖形庫以運(yùn)行make xconfig命令,。如果,,你沒有安裝那些庫make xconfig命令會出錯(例如Debian的默認(rèn)安裝就沒提供QT庫),這時可以使用 make menuconfig命令,,它是除了基于文本界面外,,其它功能都是相同的?;蛘?,你可以使用下列命令安裝QT庫(僅適用于Debian)

apt-get install tk8.4

注:筆者下載的源碼包使用TK的GUI庫,故使用上述命令安裝,。

下面的設(shè)置在menuconfig的文本設(shè)置界面中進(jìn)行,。

在輸入make menuconfig命令后,終端會輸出一些信息,隨后出現(xiàn)文本設(shè)置界面,,如下圖所示,。

image

選擇” Vendor/Product Selection”(生產(chǎn)商/產(chǎn)品選擇)選項(xiàng)。

image

Vendor/Product Selection窗 口中,,請確認(rèn)Analog Device被設(shè)置為Vendor(如上圖所示),。這里,我們選擇一塊BF533-STAMP的驗(yàn)證板作為編譯目標(biāo),。(我們僅僅是為了演示整個編譯過程,, 在下面的文章里將介紹如何添加自己的板子作為編譯目標(biāo))在你選擇一塊驗(yàn)證板作為編譯目標(biāo)時,系統(tǒng)默認(rèn)會根據(jù)該目標(biāo)板的配置文件加載一些默認(rèn)設(shè)置,。

選擇<Exit>返回“Main Menu”界面,。一個對話框會出現(xiàn)提示“是否新的內(nèi)核設(shè)置”,選擇“Yes”,。

選擇“Kernel/Library/Defaults Selection”選項(xiàng),。出現(xiàn)“Kernel/Library/Defaults Selection”窗口。

image

選中“Customize Kernel Setting”和“Customize Vendor/User Settings”選項(xiàng),。選擇的方法是在選擇該條目的情況下按”Y”鍵,。

選擇<Exit>返回主界面。選擇Exit退出并保存設(shè)置,。終端界面在執(zhí)行一長串命令后,顯示“Linux Kernel Configuration”界面,。

image

在 內(nèi)核設(shè)置窗口中你可以進(jìn)行各種內(nèi)核選項(xiàng)和設(shè)備驅(qū)動設(shè)置,。如果這是你第一次編譯內(nèi)核,在你不知道這些選項(xiàng)的確切意義之前,,強(qiáng)烈建議你不要修改任何選項(xiàng)(因?yàn)? 我們練習(xí)的目的是熟練內(nèi)核編譯的流程,,使用默認(rèn)的選項(xiàng)就可以。)在下面的文章中你將學(xué)習(xí)如何設(shè)置內(nèi)核使其適合特定的目標(biāo)板,。

選擇<Exit>退出設(shè)置,。一個對話框會出現(xiàn)提示“是否新的內(nèi)核設(shè)置”,選擇“Yes”,。

image

在 終端執(zhí)行一些命令后,,出現(xiàn)“uClinux v3.2.0 Configuration”窗口。在這個窗口中,,你可以設(shè)置各種應(yīng)用程序(它們可能是ADI預(yù)先demo程序,,用來演示uClinux上的一些特定應(yīng) 用,如音頻,、視頻播放器等),。如果這是你第一次編譯內(nèi)核,還是建議保持缺省設(shè)置,不要做任何修改,。

選擇<Exit>退出并保存設(shè)置,。一個對話框會出現(xiàn)提示“是否新的內(nèi)核設(shè)置”,選擇“Yes”,。

提示:有些程序是實(shí)驗(yàn)性的,,可能通不過編譯或者導(dǎo)致不穩(wěn)定。

設(shè)置工作至此結(jié)束,。運(yùn)行下列命令開始編譯,。編譯過程中將更新內(nèi)核及根文件系統(tǒng)。編譯將耗時5至10min,,所需時間可能根據(jù)你選擇組件的數(shù)量略有增加或縮短,。如果在虛擬機(jī)中運(yùn)行交叉編譯器時間將成倍增長。

image

編譯成功后會在images子目錄下生成一大批可通過U-Boot加載至目標(biāo)板的內(nèi)核文件,。這些內(nèi)核映像文件將在下文中作詳細(xì)討論,。關(guān)于U-Boot的詳細(xì)信息請參考前幾章節(jié)。

在你完成對一些應(yīng)用程序的裁剪后,,通常輸入make命令對系統(tǒng)進(jìn)行編譯,。如果一切順利,在幾分鐘的等待后,,編譯后的文件將存放在一個稱作 images的子目錄中(它位于uClinux源碼根目錄下),。使用cd命令切換至該目錄,并用ls命令列出其中包含的文件,。你會得到如下圖所示的一批文 件,。那些不同的文件有什么明確的用途嗎?

image

總的說來,,這些文件可以分成兩大類:內(nèi)核文件 和 根文件系統(tǒng)

請 注意以下操作適用于所有ADI的驗(yàn)證板,。你的板子的設(shè)置可以與上面的生成的文件不同,你可以按照自己的喜好配置需要生成什么,,不需要生成什么以及生成文件 保存的路徑,。具體的映像(image)生成過程在make文件vendors/<company>/<board> /Makefile中描述。舉例,,我們上文使用BF533-STAMP的驗(yàn)證板作為編譯目標(biāo),,它的編譯設(shè)置在vendors/AnalogDevices/BF533-EZKIT/Makefile中描述。

然 而為了避免重復(fù)設(shè)置,,那個映像(image)目標(biāo)可能指向vendors/AnalogDevices/vendor.mak中定義的目標(biāo),。如果你希望自 己的板子像上面那樣結(jié)構(gòu)生成image文件,你可以在不通過拷貝設(shè)置文件情況下重新使用那些設(shè)置,??梢詤⒖紇endors/Bluetechnix /CM-BF537U/Makefile作為重寫使用Analog Device驗(yàn)證板設(shè)置的例子,。

內(nèi)核映像:

內(nèi)核映像有很多種。它可以是ELF格式,,或者是可引導(dǎo)的U-Boot映像格式,。它可以和一個根文件系統(tǒng)捆綁在一起?;蛘邇H僅是內(nèi)核本身,。

格式:

內(nèi)核如果是可引導(dǎo)的U-Boot格式,它一般地會在文件名中包含Image字符串(諸如uImage或vmImage),,而ELF格式的內(nèi)核通常在文件名中包含linux字符串(諸如linux或vmlinux),。

大 多數(shù)情況下你應(yīng)該使用U-Boot格式的可引導(dǎo)內(nèi)核映像。U-Boot格式包括壓縮過程,,這使得內(nèi)核文件體積更小,,同時U-Boot也很容易引導(dǎo)它。如果 你對啟動速度的要求超過對空間的節(jié)省,,你應(yīng)該使用ELF格式的映像引導(dǎo),。ELF格式的文件是不進(jìn)行壓縮的(這意味著其體積較大),但是加載過程卻往往會變 更快,,因?yàn)檫@只涉及一些存儲器拷貝過程,。ELF格式的影響通常會含有大量的用以描述它自己的“meta”信息,而U-Boot格式卻剝離一切不必要的信 息,。

擴(kuò)展名:

那些包含根文件系統(tǒng)的內(nèi)核會有擴(kuò)展名作為其文件類型(例如.ext2或.initramfs),。那些不帶根文件系統(tǒng)的內(nèi)核沒有擴(kuò)展名。

那 些附帶有根文件系統(tǒng)的內(nèi)核通常在你需要完全在RAM中運(yùn)行根文件系統(tǒng)的系統(tǒng)中使用,。如果你需要在一個外部存儲器(諸如 并行Flash 或 串行Flash等等)上運(yùn)行根文件系統(tǒng),,那么通常需要一個單獨(dú)的內(nèi)核映像(standalone Kernel image)。例如,,當(dāng)根文件系統(tǒng)在RAM中運(yùn)行時,你對其作的任何修改將在系統(tǒng)重啟后消失,。一個非易失的根文件系統(tǒng)只能存儲于外部設(shè)備中,。

舉例:

這里以本文編譯的uClinux映像為例,編譯過程生成了下列常見的映像文件:

 

vmlinux

ELF格式的Linux 內(nèi)核映像 - 不含根文件系統(tǒng)

linux

“缺省”linux.rootfs 文件的符號鏈接

linux.cramfs

ELF格式的Linux內(nèi)核,,包含CRAMFS文件系統(tǒng)

linux.ext2

ELF格式的Linux內(nèi)核,,包含EXT2文件系統(tǒng)

linux.initramfs

ELF格式的Linux內(nèi)核,包含cpio歸檔的文件系統(tǒng)

linux.initramfs.gz

ELF格式的Linux內(nèi)核,,包含一個壓縮的cpio歸檔的文件系統(tǒng)

linux.romfs

ELF格式的Linux內(nèi)核,,包括一個ROMFS文件系統(tǒng)

vmImage

U-Boot可引導(dǎo)格式的Linux內(nèi)核 - 不含根文件系統(tǒng)

uImage

“缺省”uImage.rootfs文件的符號鏈接

uImage.cramfs

U-Boot可引導(dǎo)格式的Linux內(nèi)核,包含CRAMFS文件系統(tǒng)

uImage.ext2

U-Boot可引導(dǎo)格式的Linux內(nèi)核,,包含EXT2文件系統(tǒng)

uImage.initramfs

U-Boot可引導(dǎo)格式的Linux內(nèi)核,,包含cpio歸檔的文件系統(tǒng)

uImage.initramfs.gz

U-Boot可引導(dǎo)格式的Linux內(nèi)核,包含壓縮的cpio歸檔的文件系統(tǒng)

uImage.romfs

U-Boot可引導(dǎo)格式的Linux內(nèi)核,包含ROMFS文件系統(tǒng)

.initramfs 與initramfs.gz區(qū)別的原因在于U-Boot格式映像已經(jīng)包括壓縮功能,,initramfs.gz意味著根文件系統(tǒng)進(jìn)行雙重壓縮,。因此,對于一 個U-Boot格式的可引導(dǎo)映像,,使用uImage.initramfs.gz是個壞主意,,而應(yīng)使用.initramfs 。當(dāng)對ELF文件格式(通過 不進(jìn)行壓縮),,應(yīng)該使用initramfs.gz ,。

文件系統(tǒng)映像:

文件系統(tǒng)映像以rootfs開頭,以描述該文件系統(tǒng)的短名稱作為后綴,。如果你樂意的話,,可以在開發(fā)環(huán)境中作為(root back設(shè)備)掛在映像。并通過這種方式瀏覽文件系統(tǒng)的內(nèi)容,。

文件系統(tǒng)映像很少會在目標(biāo)板上“直接”使用,。大多數(shù)情況下,你將它們燒寫至Flash或其他什么存儲設(shè)備中,,然后在引導(dǎo)Linux時掛載,。

根 文件系統(tǒng)映像通常存放在兩個地方。大部分的映像存放于uClinux源碼根目錄下的romfs文件夾,。因?yàn)樗话O(shè)備節(jié)點(diǎn)(device nodes),,創(chuàng)建工具會生產(chǎn)一個文件(通常稱作device_table.txt)用以為最終映像的/dev目錄和相關(guān)的設(shè)備節(jié)點(diǎn)創(chuàng)建正確的major /minor值 與權(quán)限?!咀ⅲ涸诠P者使用的版本中根文件系統(tǒng)映像一并放置于images目錄下】

文件名

描述

rootfs.cramfs

CRAMFS格式的根文件系統(tǒng)

rootfs.ext2

EXT2格式的根文件系統(tǒng)

rootfs.initramfs

cpio歸檔格式的根文件系統(tǒng)

rootfs.initramfs.gz

cpio歸檔格式的并使用gzip壓縮的根文件系統(tǒng)

rootfs.jffs2

JFFS2格式的根文件系統(tǒng)

rootfs.romfs

ROMFS格式的根文件系統(tǒng)

rootfs.yaffs

YAFFS格式的根文件系統(tǒng)

rootfs.yaffs2

YAFFS2格式的根文件系統(tǒng)

 

其它文件:

System.map文件提供給每個相關(guān)的Linux內(nèi)核映像,。與linux映像類似,它帶有rootfs的后綴因此你很容易匹配兩者,。

有時內(nèi)核映像文件將以一種更直觀的方式提供,,從其名稱就可了解其包含文件系統(tǒng)的類型。如果是這種情況,,映像文件命令類似于rootfs帶有.contents(.內(nèi)容)的后綴,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多