色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看


嵌入式文件系統構建

分享到:
           

    Linux支持多種文件系統,同樣,嵌入式Linux也支持多種文件系統。雖然在嵌入式系統中,由于資源受限的原因,它的文件系統和PC上的Linux的文件系統有較大的區別,但是,它們的總體架構是一樣的,都是采用目錄樹的結構。在嵌入式系統中常見的文件系統有cramfs、romfs、jffs、yaffs等,這里就以制作cramfs文件系統為例進行講解。cramfs文件系統是一種經過壓縮的、極為簡單的只讀文件系統,因此非常適合嵌入式系統。要注意的是,不同的文件系統都有相應的制作工具,但是其主要的原理和制作方法是類似的。

    在嵌入式Linux中,busybox是構造文件系統常用的軟件工具包,它被非常形象地稱為嵌入式Linux系統中的“瑞士軍刀”,因為它將許多常用的Linux命令和工具結合到了一個單獨的可執行程序(busybox)中。雖然與相應的GNU工具比較,busybox所提供的功能和參數略少,但在比較小的系統(如啟動盤)或者嵌入式系統中已經足夠了。

    busybox在設計上就充分考慮了硬件資源受限的特殊工作環境。它采用一種很巧妙的辦法減少自己的體積:所有的命令都通過“插件”的方式集中到一個可執行文件中,在實際應用過程中通過不同的符號鏈接來確定到底要執行哪個操作。例如,終生成的可執行文件為busybox,當為它建立一個符號鏈接ls時,就可以通過執行這個新命令實現列出目錄的功能。采用單一執行文件的方式大限度地共享了程序代碼,甚至連文件頭、內存中的程序控制塊等其他系統資源都共享了,對于資源比較緊張的系統來說,真是合適不過了。在busybox的編譯過程中,可以非常方便地加減它的“插件”,后的符號鏈接也可以由編譯系統自動生成。

    下面用busybox構建FS2410開發板的cramfs文件系統。

    (1)從busybox網站下載busybox源碼(本實例采用busybox-1.00)并解壓,接下來,根據實際需要進行busybox的配置。

    $ tar jxvf busybox-1.00.tar.bz2
        $ cd busybox-1.00
        $ make defconfig /* 首先進行默認配置 */
        $ make menuconfig

    此時,需要設置與平臺相關的交叉編譯選項,操作步驟為:先選中“Build Options”項的“Do you want to build BusyBox with a Cross Complier?”選項,然后將“Cross Compiler prefix”設置為“/usr/local/arm/3.3.2/bin/arm-linux-”(這是在實驗主機中的交叉編譯器的安裝路徑),如圖1.7所示。

    
圖1.7 busybox配置畫面

    (2)編譯并安裝busybox。

    $ make
        $ make install PREFIX=/home/david/fs2410/cramfs

    其中,PREFIX用于指定安裝目錄,如果不設置該選項,則默認在當前目錄下創建_install目錄。創建的安裝目錄的內容如下:

    $ ls
    bin linuxrc sbin usr

    (3)由此可知,使用busybox軟件包所創建的文件系統還缺少很多東西。

    (4)通過創建系統所需的目錄和文件來完善文件系統的內容。

    $ mkdir mnt root var tmp proc boot etc lib
    $ mkdir /var/{lock,log,mail,run,spool}

    (5)將所需的交叉編譯鏈接庫復制到lib目錄中,這些庫文件位于/usr/local/arm/3.3.2/lib下。在復制時應該注意采用打包后解包的方式,以保證符號鏈接的正確性和完整性。刪除所有目錄和靜態庫文件,并使用arm-linux-strip工具剝除庫文件中的調試段信息,從而減少庫的體積。

    (6)創建一些重要文件。inittab是Linux啟動之后第一個被訪問的腳本文件。

    # This is run first except when booting
    ::sysinit:/etc/init.d/rcS

    # Start an "askfirst" shell on the console
    #::askfirst:-/bin/bash
    ::askfirst:/bin/bash

    # Stuff to do when restarting the init process
    ::restart:/sbin/init

    #::once:/sbin/raja.sh
    #::respawn:/sbin/iom
    ::once:/usr/etc/rc.local

    # Stuff to do before rebooting
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r

    建立init.d目錄,進入init.d目錄,建立rcS文件,文件內容如下:

    #!/bin/sh
    # This is the first script called by init process
    /bin/mount -a
    exec /usr/etc/rc.local

    建立/etc/profile文件:

    # /etc/profile
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    export PATH LD_LIBRARY_PATH

    其中,profile用于設置shell的環境變量,shell啟動時會讀取/etc/profile文件來設置環境變量。以下是/etc/rc.local文件:

    #!/bin/sh
    #add user specified script
    cd /dev
    ln -s /dev/fb/0 fb0
    ln -s vc/0 tty0
    ln -s vc/1 tty1
    ln -s vc/2 tty2
    mknod –m 660 mtd0 c 90 0
    mknod –m 660 mtd1 c 90 2
    mknod –m 660 mtd2 c 90 4
    mknod –m 660 mtdblock0 b 31 0
    mknod –m 660 mtdblock1 b 31 1
    mknod –m 660 mtdblock2 b 31 2

    fstab文件定義了文件系統的各個“掛接點”,需要與實際的系統相配合。

    none         /proc           proc         defaults        0 0
    tmpfs        /dev/shm        tmpfs        defaults        0 0

    后要創建用戶和用戶組文件等其他文件,以上用busybox構造了文件系統的內容。

    下面創建cramfs文件系統映像文件,制作cramfs映像文件需要用到的工具是mkcramfs。此時可以采用兩種方法,一種方法是使用我們所構建的文件系統(在目錄“/home/david/fs2410/cramfs”中),另一種方法是在已經做好的cramfs映像文件的基礎上進行適當的改動。下面的示例使用第二種方法,因為這個方法包含了第一種方法的所有步驟(假設已經做好的映像文件名為“fs2410.cramfs”)。

    首先用mount命令將映像文件掛載到一個目錄下,打開該目錄并查看其內容。

    $ mkdir cramfs
    $ mount fs2410.cramgs cramfs –o loop
    $ ls cramfs
    bin dev etc home lib linuxrc proc Qtopia ramdisk sbin testshell tmp
    usr var

    因為cramfs文件系統是只讀的,所以不能在這個掛載目錄下直接進行修改,因此需要將文件系統中的內容復制到另一個目錄中,具體操作如下所示:

    $ mkdir backup_cramfs
    $ tar cvf backup.cramfs.tar cramfs/
    $ mv backup.cramfs.tar backup_cramfs/
    $ umount cramfs
    $ cd backup_cramfs
    $ tar xvf backup.cramfs.tar
    $ rm backup.cramfs.tar

    此時就像用busybox所構建的文件系統一樣,可以在backup_cramfs的cramfs子目錄中任意進行修改。例如,可以添加用戶自己的程序:

    $ cp ~/hello backup_cramfs/cramfs/

    在用戶的修改工作結束之后,用下面的命令可以創建cramfs映像文件:

    $ mkcramfs backup_cramfs/cramfs/ new.cramfs

    接下來,就可以將新創建的new.cramfs映像文件燒入到開發板的相應位置了。

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點鏈接:

   1、Linux內核移植的簡介
   2、Linux內核配置與編譯
   3、Linux內核結構介紹
   4、Linux內核主要功能介紹
   5、在電路板上移植U-Boot程序

更多新聞>> 

主站蜘蛛池模板: 97久人人做人人妻人人玩精品 | 久久久综合九色合综国产精品 | 久久久久久久岛国免费观看 | 鲁大师在线影院免费观看 | 国产精品高潮呻吟av久久 | 啊灬啊灬啊灬啊高潮了 | 久久午夜夜伦鲁鲁片免费无码 | 18禁裸乳无遮挡啪啪无码免费 | 亚洲国产精品无码中文字满 | 真人女人一级毛片免费播放 | av在线网站无码不卡的 | 久久无码中文字幕无码 | 无码精品A∨在线观看十八禁 | 欧美网站大全在线观看 | 久久草av | 日本成片区免费 | 被夫上司強暴人妻中文字幕 | 区久久AAA片69亚洲 | 韩国一级视频 | 我和隔壁的少妇人妻HD | 欧美精品一区二区黄A片 | 国产成人精品日本亚洲语音 | 亚洲色欲色欱WWW在线 | 美女粉嫩极品国产在线2020 | 麻豆福利视频 | 无码帝国www无码专区色综合 | 欧洲亚洲精品A片久久99动漫 | 伦理一级大尺度 | 网站黄色在线观看免费 | H无码精品视频在线观看网站 | 亚洲美女高潮久久久久 | 久久精品国产亚洲AV无码娇色 | 蜜桃视频一区二区在线观看 | 久久免费看少妇高潮a片特黄 | 农田丰满艳肉妇hd | 亚洲欧美国产精品无码中文字 | 成人免费看黄yyy456 | 欧美成人猛片AAAAAAA | 亚洲蜜芽在线精品一区 | 免费看性视频xnxxcom | 教官脔到她哭H粗话H好爽视频 |