色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色一本一本 | 性欧美XXXXX极品少妇 | 日本高清中文字幕免费一区二区 | 少妇的渴望HD高清在线播放 | 亚洲AV无码乱码在线观看性色 | 国产精品国产三级国AV在线观看 | 男按摩师系列无码视频 | 亚洲制服丝中文字幕 | 在线观看一区二区精品视频 | 蜜桃AV抽搐高潮一区二区 | 国产产无码乱码精品久久鸭 | 又大又粗又爽又黄的少妇毛片 | 精品无码国产日韩制服丝袜 | 一区二区在线欧美日韩中文 | AV在线观看 | 亚洲AV高清在线一区二区三区 | 精品久久久爽爽久久久AV | 欧美二区乱c黑人 | 亚洲精品视频在线观看视频 | 胡桃坐旅行者胡萝卜视频免费 | 中国免费一级毛片 | 国产无套内射普通话对白 | 亚洲精品一区人人爽 | 成人av一区二区三区在线观看 | 亚洲av高清不卡久久 | 久久亚洲国产成人精品性色 | 18禁黄网站男男禁片免费观看 | 欧美日韩一本的免费高清视频 | 亚洲成A人V欧美综合天堂麻豆 | 国产成 人 综合 亚洲网站 | 少妇饥渴偷公乱A级无码 | 少妇高潮惨叫喷水在线观看 | 日本高清不卡在线观看 | 伊伊人成亚洲综合人网香 | 免费无码的av片在线观看 |