嵌入Linux系統的構建

文件系統是對一個存儲設備上的數據和元數據進行組織的機制。這種機制有利於用戶和操做系統的交互。
嵌入式Linux系統由Linux內核和根文件系統兩部分組成,二者缺一不可。

內核製做:
1. 清除全部配置和中間文件
    X86:make  distclean
    Arm:  make  distclean
2. 配置內核
    X86:make  menuconfig
    Arm:  make  menuconfig  ARCH=arm  
3. 編譯內核
    X86:make  bzImage
    Arm:  make  uImage  ARCH=arm  CROSS_COMPILE=arm-linux-
    make  -j4  bzImage  //表示用4線程編譯
根文件系統: Linux啓動時,使用的第一個文件系統。

根文件系統的製做:
1.建立根文件系統的目錄
 mkdir  rootfs
 cd  rootfs
 mkdir  bin  dev etc lib proc sbin sys usr mnt tmp var
 mkdir  usr/bin  usr/lib  usr/sbin  lib/modules
2. 建立設備文件
 cd  dev/
 mknod  -m  666  console  c  5   1
 mknod  -m  666  null  c  1  3
 cd ..
3.  安裝/etc
    tar  etc.tar.gz  -C   /xxxx/rootfs
    這是利用已有的etc配置目錄,固然也能夠本身新建這些配置文件。
4. 編譯內核模塊
  進入到編譯內核的內核源碼頂層目錄中。
  make  modules  ARCH=arm  CROSS_COMPILE=arm-linux-
5. 安裝內核模塊
   make  modules_install  ARCH=arm INSTALL_MOD_PATH= /xxxx/rootfs  
   該命令只是將上一步編譯生成的內核模塊,從內核源碼中相應目錄拷貝到/xxxx/rootfs/lib/modules目錄下。
6. 配置busybox
    進入busybox源碼目錄
    配置:
   make  menuconfig 
  
7. 編譯、安裝busybox
   make  ARCH=arm  CROSS_COMPILE=arm-linux-
   make install

NFS啓動設置
若是想使用nfs做爲根文件系統, 則要
1. 修改Linux內核源碼中.config中的啓動參數即修改其中的CONFIG_CMDLINE變量爲以下:
 CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=192.168.0.10:/home/xgm/rootfs ip=192.168.0.13 console=ttySAC0  mem=64M"
註釋:
root=/dev/nfs : 指明使用使用哪一種文件系統做爲根文件系統,這裏表示使用nfs做爲根文件系統,
                           若root=/dev/ram,表示使用ramdisk做爲根文件系統
rw : 權限,可讀,可寫。
nfsroot=192.168.0.10:/home/xgm/rootfs:根文件系統存儲的位置, 192.168.0.10爲存儲根文件系統的計算機的IP
                                                                               /home/xgm/rootfs爲根文件的目錄。
ip=192.168.0.13:開發板啓動後的IP地址。
console=ttySAC0:代表使用串口0做爲控制檯。
mem=64M:開發板內存的大小。
2. 從新編譯內核。
 
製做Ramdisk
基於前面步驟製做好的根文件系統 /xxxx/rootfs
1. genext2fs  -b  8192  -d  /xxxx/rootfs  ramdisk
    genext2fs爲製做ramdisk的工具,也可用其餘工做來製做。
2. 壓縮
   gzip  -9  -f  ramdisk

Ramdisk啓動設置:
1. 修改Linux內核源碼中.config中的啓動參數即修改其中的CONFIG_CMDLINE變量爲以下:
      CONFIG_CMDLINE="root=/dev/ram rw console=ttySAC0 mem=64M"
2. 從新編譯內核。

製做Initramfs
1.配置內核,使其支持Initramfs
  進入內核源碼目錄,執行
  make  menuconfig   ARCH=arm
  在General Setup菜單下,將"Initial RAM filesystem and RAM disk(initramfs/initrd) support"
  選項給選中。
  
  並將上圖中藍色部分中的"../../rootfs"修改成你製做的rootfs文件目錄/xxxx/rootfs,注意並不是ramdisk目錄。
2. 進入製做好的根文件系統(/xxxx/rootfs)中,執行
     ln  -s  ./bin/busybox  init
3.  修改Linux內核源碼中.config中的啓動參數即修改其中的CONFIG_CMDLINE變量爲以下:
     CONFIG_CMDLINE="console=ttySAC0  mem=64M"
     具體修改參數,根據不一樣的硬件,不一樣。
4. 從新編譯內核。
注意:使用Initramfs時,內核和根文件系統是一塊兒編譯成了一個文件了的。
  
vmlinux:原始的,未壓縮的內核鏡像
zImage:壓縮過的vmlinux內核鏡像,文件開始爲一段解壓程序,故可自解壓。
uImage:uboot引導的zImage














相關文章
相關標籤/搜索