亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式Linux中CramFS根文件系統(tǒng)的移植實現(xiàn)

        2016-05-14 03:04:59劉俊霞盛文婷
        數(shù)字技術與應用 2016年5期

        劉俊霞 盛文婷

        摘要:首先研究了嵌入式Linux系統(tǒng)以及CramFS文件系統(tǒng)的移植,然后分析了嵌入式Linux系統(tǒng)及CramFS文件系統(tǒng)的特性,其次,詳細說明了移植最小Linux系統(tǒng)的制作過程,最后,對制作出來的Linux系統(tǒng)鏡像進行測試。最終的測試結(jié)果顯示,系統(tǒng)移植成功且能夠?qū)崿F(xiàn)Linux系統(tǒng)的基本命令。

        關鍵詞:Linux CramFS isoLinux

        中圖分類號:TP316.81 文獻標識碼:A 文章編號:1007-9416(2016)05-0000-00

        隨著電子產(chǎn)業(yè)的不斷發(fā)展, 基于 ARM技術的系統(tǒng)設計和開發(fā)平臺越來越多地在控制類、消費類、通信類等電子產(chǎn)品中廣泛應用。從軟件角度上看, 構(gòu)建基于ARM 技術的Linux 系統(tǒng)要涉及到引導加載程序、Linux 內(nèi)核、文件系統(tǒng)、用戶應用程序幾部分的設計。由于存儲空間有限, 如何有效地使用有限的存儲空間是嵌入式開發(fā)者必須考慮的, 合適的文件系統(tǒng)格式是解決這一問題的關鍵所在。

        1 CramFS文件系統(tǒng)

        CramFS 是專門針對閃存設計的只讀壓縮的文件系統(tǒng),其容量上限為256M,采用zlib壓縮。它并不需要一次性地將文件系統(tǒng)中的所有內(nèi)容都解壓縮到內(nèi)存之中, 而只是在系統(tǒng)需要訪問某個位置的數(shù)據(jù)的時候, 馬上計算出該數(shù)據(jù)在 CramFS 中的位置, 將它實時地解壓縮到內(nèi)存之中, 然后通過對內(nèi)存的訪問來獲取文件系統(tǒng)中需要讀取的數(shù)據(jù)。

        CramFS 文件系統(tǒng)的基本組成: 初始化程序、Shell 程序以及其他 Linux常用工具、配置文件、鏈接庫、圖形界面程序和用戶應用程序,文件系統(tǒng)是緊跟 Linux 內(nèi)核放置,由內(nèi)核加載,主要存放用戶應用程序和配置信息。在嵌入式的環(huán)境之下,內(nèi)存和外存資源都需要節(jié)約使用。但是它也有很致命的弱點。在正常情況下,同樣的代碼不僅在外存中占據(jù)了空間(以壓縮后的形式存在),而且還在內(nèi)存中占用了更大的空間(以解壓縮之后的形式存在),這違背了嵌入式環(huán)境下盡量節(jié)省資源的要求。

        2 CramFS文件系統(tǒng)的特性

        CramFS采用實時解壓縮方式,但解壓縮的時侯有延遲。CramFS的數(shù)據(jù)都是經(jīng)過處理、打包的,對其進行寫操作有一定困難。所以CramFS不支持寫操作,這個特性剛好適合嵌入式應用中使用Flash存儲文件系統(tǒng)的場合。在CramFS中,文件最大不能超過16MB。支持組標識(gid),但是mkcramfs只將gid的低8位保存下來,因此只有這8位是有效的。

        在支持硬鏈接方面CramFS并沒有完全處理好,硬鏈接的文件屬性中,鏈接數(shù)仍然為1。CramFS的目錄中,沒有“.”和“..”這兩項。因此,CramFS中的目錄的鏈接數(shù)通常也僅有一個。CramFS中不會保存文件的時間戳(timestamps)信息。當然,正在使用的文件由于inode保存在內(nèi)存中,因此其時間可以暫時地變更為最新時間,但是不會保存到CramFS文件系統(tǒng)中去。

        CramFS與InitramFS相比較,InitramFS具有隨著文件系統(tǒng)中數(shù)據(jù)的增減自動增減容量、不需要額外的文件系統(tǒng)驅(qū)動的優(yōu)點,而CramFS只讀的特點有利于保護文件系統(tǒng)免受破壞,提高了系統(tǒng)的可靠性。它們都是只讀文件系統(tǒng),而RomFS文件系統(tǒng)可以構(gòu)造出一個更小的內(nèi)核,大約4000字節(jié),并且很節(jié)省內(nèi)存。但是RomFS需要同時支持虛擬盤(RAMDISK)臨時文件和數(shù)據(jù)文件的存儲。

        3 CramFS 文件系統(tǒng)目錄

        一個完整的 CramFS 文件系統(tǒng)通常包含如下目錄:

        Linuxrc、bin、sbin、etc、lib、dev、usr、mnt。

        Linuxrc 啟動腳本文件,由 Boot Loader 核心命令行確定 init=/Linuxrc, 加載/etc 目錄為 ramfs, (CramFS 為只讀文件系統(tǒng)), 拷貝/mnt/etc 到/etc, 配置文件目錄重新加載根文件系統(tǒng)和/etc 文件系統(tǒng),執(zhí)行 init 進程。

        bin 引導啟動所需的命令或用戶可能用的命令。

        sbin 系統(tǒng)管理員服務程序, 其中最重要的是供內(nèi)核初始化之后執(zhí)行的/sbin/init 進程, 系統(tǒng)啟動時由init 解釋并行/etc/inittab, inittab 將指導 int 去調(diào)用一個系統(tǒng)初始化程序/etc/init.d/rcS。

        etc 特定機器的配置文件以及用戶數(shù)據(jù)存放目錄, 其中的所有內(nèi)容是在內(nèi)核運行后, 由 Linuxrc 從/mnt/etc 拷貝得到的。

        lib 文件系統(tǒng)上的程序所需的動態(tài)庫。

        dev 驅(qū)動程序存放目錄, 可以在這里存放自己編寫的驅(qū)動程序。

        usr 用于存放用戶程序和配置文件的目錄, 可以根據(jù)需要進行設置。目錄下的/usr/etc/rc.local 執(zhí)行本地所需要的初始化, 如安裝核心模塊, 進行網(wǎng)絡, 運行應用程序, 啟動圖形界面等。

        4 移植最小Linux系統(tǒng)

        4.1系統(tǒng)環(huán)境搭建

        操作系統(tǒng): 物理機 windows 7

        虛擬機軟件: VMware Workstation8.0

        Linux版本: Ubuntu 11.10-i386-desktop

        Linux內(nèi)核: Linux-2.6.36(Ubuntu 11.10是Linux-3.0.16的內(nèi)核)

        Busybox: Busybox-1.1.3

        交叉編譯工具: arm-Linux-gcc-3.4.1

        CramFS: cramfs-1.1

        4.2 構(gòu)建嵌入式交叉編譯環(huán)境

        解壓交叉編譯工具文件夾后會生成一個文件名為3.4.1的文件夾。

        然后,將解壓后的名字為3.4.1的文件復制到根目錄下的 usr/local/arm文件夾下。

        在終端下修改/etc/bash.bashrc文件 #vim /etc/bash.bashrc

        在最后加上:

        export PATH=$PATH:/usr/local/arm/3.4.1/bin

        export PATH

        然后在終端中輸入 #source /etc/bash.bashrc

        4.3 系統(tǒng)移植步驟

        (1)進行內(nèi)核的編譯與裁剪,然后生成bzImage 內(nèi)核鏡像。

        (2)構(gòu)建交叉編譯環(huán)境。

        (3)進行配置busybox,然后編譯安裝busybox。

        (4)準備文件系統(tǒng)的目錄框架,創(chuàng)建設備文件,以及準備一些配置文件和系統(tǒng) 啟動時所需的文件。

        (5)配置cramfs-1.1,編譯cramfs-1.1。

        (6)生成CramFS的文件系統(tǒng)鏡像initrd.img。

        (7)整合啟動文件 myOS。

        (8)生成光盤鏡像文件 myiso.iso。

        4.4 移植過程

        4.4.1生成內(nèi)核鏡像

        進入內(nèi)核文件夾 #cd usr/src/linux-2.6.36 進行內(nèi)核的配置與裁剪 。

        # make mrproper

        # make menuconfig。

        在內(nèi)核配置中:

        [ * ]---將該功能模塊編譯進內(nèi)核

        [ ]---不將該功能模塊編譯進內(nèi)核

        M ---將該功能編譯成模塊的方式,可以在需要時動態(tài)插入到內(nèi)核中的模塊,具體參數(shù)及選項含義內(nèi)核文檔里有明確說明。

        配置完成后,選擇 Save an Alternate Configuration File,然后退出。

        # make bzImage。

        最終生成的內(nèi)核鏡像文件bzImage在/usr/src/linux-2.6.36/arch/X86/boot 內(nèi)。

        4.4.2 編譯安裝busybox

        進入busybox文件夾 #cd 001/busybox-1.1.3

        修改Makefile #vim Makefile ,以下兩項改為:

        CROSS_COMPILE = arm-Linux-

        ARCH = arm ARCH

        進入busybox配置界面 #make menuconfig ,busybox配置界面如圖1所示。

        4.4.3 構(gòu)建文件系統(tǒng)目錄

        #mkdir /mnt/myOS/rootfs #cd /mnt/myOS/rootfs

        #mkdir etc usr var conf lib modules scripts

        將busybox生成的鏈接文件復制到rootfs

        #cp /001/busybox-1.1.3/_install/* /mnt/myOS/rootfs

        將根文件下lib庫文件復制到rootfs/lib #cp -R /lib/* /mnt/myOs/rootfs/lib

        4.4.4 配置CramFS

        進入CramFS-1.1 #cd 001/cramfs-1.1 進行編譯CramFS #make

        Make之后會產(chǎn)生兩個bin文件mkcramfs和cramfsck。

        將這兩個bin文件復制到/usr/bin中 #cp mkcramfs cramfsck /usr/bin。

        之后在終端中就可以使用mkcramfs和cramfsck命令了。

        4.4.5 制作CramFS文件系統(tǒng)鏡像

        在終端中輸入:

        #mkcramfs /mnt/myOS/rootfs /mnt/myOS/initrd.img

        這時在 /mnt/myOS 下會產(chǎn)生一個initrd.img文件系統(tǒng)鏡像文件。

        4.4.6 制作iso鏡像

        使用mkisofs命令制作iso鏡像文件。

        #mkisofs -o myiso.iso -b isoLinux/isoLinux.bin -c isoLinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table mnt/myOS

        這時,在根目錄下就會產(chǎn)生一個myiso.iso系統(tǒng)鏡像文件。

        5 系統(tǒng)測試

        首先將制作的好的myiso.iso系統(tǒng)鏡像文件復制到物理機內(nèi),然后通過虛擬機軟件進行啟動。

        在啟動過程中首先是加載啟動引導文件——isolinux.bin,然后通過啟動引導文件調(diào)用啟動配置文件——isolinux.cfg中的相關配置信息。

        接下來是加載內(nèi)核鏡像,這個過程很快,內(nèi)核加載完成后進行掛載文件系統(tǒng)(掛載文件系統(tǒng)如圖2所示)。

        6 結(jié)語

        Linux 內(nèi)核在系統(tǒng)啟動期間的最后操作之一就是掛載根文件系統(tǒng)。根文件系統(tǒng)是嵌入式Linux 系統(tǒng)不可或缺的重要組成部分, 而Busybox是制作嵌入式Linux根文件系統(tǒng)的有效工具。本文首先說明了Linux-2.6.36的內(nèi)核編譯與裁剪、Busybox的編譯與安裝、使用Busybox-1.1.3和cramfs-1.1制作CramFS根文件系統(tǒng)的詳細過程,然后使用了isolinux方式啟動系統(tǒng)內(nèi)核,掛載文件系統(tǒng)鏡像。經(jīng)過測試,內(nèi)核啟動成功,文件系統(tǒng)掛載成功,并且能夠?qū)崿F(xiàn)linux的基本命令,而未移植入動態(tài)鏈接的命令不能使用如du、ifconfig等。本文為移植和裁剪Linux以及想要構(gòu)造更為復雜的根文件系統(tǒng)提供了參考,同時為嵌入式Linux中CramFS根文件系統(tǒng)的移植實現(xiàn)進行了新的嘗試。

        參考文獻

        [1] 劉錟.Linux嵌入式系統(tǒng)開發(fā)平臺選型探討[J].單片機與嵌入式系統(tǒng)應用,2004,7(8).

        [2] 魯剛,李小平.嵌入式Linux系統(tǒng)軟件平臺的建立[J].電子科技雜志,2007,8(12).

        [3] 鞠劍平,冉全,黎曦.嵌入式Linux在S3C2440上的移植[J].科技資訊,2010,8.

        人妻丰满熟妇无码区免费| 一级黄色一区二区三区视频| 毛片成人18毛片免费看| 亚洲综合色无码| 无码人妻丰满熟妇片毛片| 成人片在线看无码不卡| 中文字幕视频一区二区| 夜夜爽夜夜叫夜夜高潮| 男女爽爽无遮挡午夜视频| 精品无码AⅤ片| 91国内偷拍一区二区三区| 亚洲国产精品不卡av在线| 国产在视频线精品视频| 亚洲中文字幕在线一区二区三区| 国产亚洲精品视频在线| 中文字幕在线乱码一区| 亚洲毛片αv无线播放一区| 免费一区啪啪视频| 淫秽在线中国国产视频| 日本免费视频| 日产精品久久久久久久性色| 亚洲成a人网站在线看| 96中文字幕一区二区| 欧美乱大交xxxxx潮喷| 欧美老妇与禽交| 亲少妇摸少妇和少妇啪啪| 亚洲成年国产一区二区| 人妻少妇乱子伦精品| 草莓视频一区二区精品| 亚洲成生人免费av毛片| 先锋影音人妻啪啪va资源网站| 国产成年女人特黄特色毛片免| 一本一道AⅤ无码中文字幕| 日本视频一区二区三区在线| 国产福利视频一区二区| 国产91精品成人不卡在线观看| 亚洲成人色黄网站久久| 久久精品免费一区二区喷潮| 午夜丰满少妇性开放视频| 2021年性爱喷水视频| 亚洲国产女性内射第一区二区|