1. 程式人生 > >linux下檔案系統的移植

linux下檔案系統的移植

首先檔案系統的構造如圖


所以 我們如果要移植檔案系統的話 也就是在根目錄上去建立(掛載)這些系統啟動所必須的目錄

/bin           存放linux系統下常用的命令 cat,chmod,等

/sbin          存放需要管理員許可權才能使用的命令 比如 shutdown reboot等 掛接其他檔案前都可以使用,所以

                  放在和根檔案相同的分割槽中。不緊迫的命令可以放在 、/usr/sbin下

/dev          存放裝置檔案比如串列埠啊儲存啊 手動建立 + uedv 自動建立

/etc           用來存放各種配置檔案export passwd 等

/lib            存放共享庫 和 可載入檔案執行根檔案系統中的可執行程式 libc.so*

/home 、 /root 、/usr 、 跟使用者相關的一些東西

/proc   儲存一下臨時生成的檔案 用來表示系統的執行狀態

/mnt   用於臨時掛接某個檔案系統的掛接點 通常是空的 也可以在裡面建立目錄掛接 一些硬碟裝置等

/tmp 通常是空的 一些需要臨時生成的檔案用到 必須要有

2、移植BusyBox 

從官網下載最新版本的busyBox壓縮包 然後解壓 修改其中的Makefile 

CROSS_COMPILE = arm-linux-

ARCH = arm
Busybox Settings  --->


    Build Options  --->
        [ ] Build BusyBox as a static binary (no shared libs) (NEW)
這個意思是執行busybox才動態連結庫,busybox需要的庫要我們提供Busybox Settings  --->
    Installation Options ("make install" behavior)  --->
        What kind of applet links to install (as soft-links)  --->

設定busybox生成後各種命令均為指向busybox主程式的軟連結Busybox Settings  --->
    Busybox Library Tuning  --->
        (255) History size 
        [*]   History saving (NEW)   // 支援歷史記錄
        [*]   Tab completion (NEW)   // 支援Tab補全操作選項Applets就是將busybox支援的幾百個命令分門別類,我們可以在各個門類下選擇想要的命令。

儲存 然後make menuconfig 配置這些選項

關於需要注意的一些選項說明如下:

最後出現下面的資訊,make成功
  CC      util-linux/volume_id/xfs.o
  AR      util-linux/volume_id/lib.a
  LINK    busybox_unstripped
Trying libraries: crypt m
 Library crypt is not needed, excluding it
 Library m is needed, can't exclude it (yet)
Final link with: m
libbusybox: 0_lib/libbusybox.so.1.23.1
  DOC     busybox.pod
  DOC     BusyBox.txt
  DOC     busybox.1
  DOC     BusyBox.html

然後 make

生成以後  make install 到目標板的目錄

出現下面的資訊安裝成功
--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.

2,構建檔案系統的目錄

構建檔案系統需要三個步驟

1、建立所需要的資料夾

mkdir  dev etc home lib media mnt opt proc sys tmp var root

2、新增檔案系統所需要的庫

mkdir lib

cp home/wjl/work/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib 下的庫到剛建的目錄下

3、建立所需要的檔案

mkdir etc 目錄

需要再etc 目錄下建立三個檔案

1>initab  /ect/initab 

     initab 主要是任務是建立其他程序,比如呼叫指令碼檔案配置IP地址,掛接其他檔案系統。啟動shell等

  2> rcS etc/init.d/rcS

     rcS  裡面可以新增你真正想執行的程式 配置的資訊 在這裡面可以用 mount -a  

 3> fatab etc/fstab

fstab檔案被用來控制 mount 的行為  

         fstab的表示形式如下

   #device   mount-point  type  options  dump fsck  order 

    proce     /proce              proc    defaults  0    0 

 構建dev 目錄

      1、 靜態建立設定檔案  在dev 目錄下手動建立 一些裝置節點

        mkdir       /dev

        sudo mknod console c 5 1  

        sudo  mknod null c 1 3 

sudo mknod  ttySAC0 c 204 64

     2、使用mdev動態的去建立裝置檔案

    要使用 mdev 需要核心支援sysfs檔案系統 為了減少flash的讀寫還需要支援tempfs 檔案系統

  所以要配置核心設定 CONFIG_SYSFS CONFIG_TEPFS 配置項

     mount -t tmpfs mdev /dev

     mkdir /dev/pts

     mount -t dev

mount -t  devpts devpts /dev/pts

mount -t sysfs sysfs /sys

echo /bin/mdev > /proc/sys/kernel/hotplug

mdev -s 

     還需要修改 rcS fstsb 檔案

 4  製作 YAFFS 檔案系統映像檔案 

所謂製作檔案系統映像檔案 就是將一個目錄下的所有內容按照一定的格式存放到一個檔案中 這個檔案可以直接燒寫到

儲存設定上去,當系統啟動狗掛接這個裝置 就可以看到與原來目錄一樣的內容

mkyaffsimage fs_mini fs_mini.yaffs 

j將fs_mini.yaffs 放入tftp 目錄或者nfs目錄後 在U-BOOT階段 燒入指定的記憶體即可