1. 程式人生 > >Linux 4.10.8 根文件系統制作(一)---環境搭建

Linux 4.10.8 根文件系統制作(一)---環境搭建

zxvf fstab project 根據 構建 yaffs http tar.bz2 onf

一、工具

  制作工具為busybox

  下載地址:https://busybox.net/

  解壓:

  技術分享

二、制作文件系統

  進入目錄,執行make menuconfig:

  技術分享

2.1 busybox setting

2.1.1 設定交叉編譯器

  技術分享

  改為

  技術分享

  保存退出,然後執行 make 編譯。

  編譯完成後創建文件系統存放目錄:

  技術分享

2.2.2 安裝glibc

  技術分享

  安裝完成後,fs_mini下會生成以下目錄:

  技術分享

  技術分享

  技術分享

  進入交差編譯工具鏈的目錄,找出lib庫:

  技術分享

  拷貝sysroot下的lib目錄和usr/lib目錄下的 .so 文件到fs_mini的lib目錄下:

  技術分享

  技術分享

2.2.3 構造etc 目錄

  創建etc 目錄;

  技術分享

  創建inittab文件:

  技術分享

  仿照busybox的example目錄下的inittab文件寫inittab文件:

  技術分享

2.2.4 創建 etc/init.d/rcS文件

  創建init.d 目錄 和 rcS 文件

  技術分享

  改變文件屬性:

  技術分享

2.2.5 創建etc/fstab文件

  文件中寫入信息如下:

  技術分享

  技術分享

  技術分享

  技術分享

2.2.6 構建dev目錄

  udev:自動創建/dev/設備節點

  mdev:udev的簡化版本,也是通過讀取內核信息來創建設備文件。

  mdev 的用途主要有兩個:初始化 /dev 目錄、動態更新。

  動態更新可以更新 /dev 目錄,還支持熱插拔,即接入、卸下設備時執行某些動作。

  要使用 mdev,需要內核支持 sysfs 文件系統,為了減少對 flash的讀寫,還要支持 tmpts 文件系統。要先確保內核已經設置了CONFIG_SYSFS、CONFIG_TMPFS配置項。

  • mount -t tmpfs mdev /dev   使用內存文件系統,減少對Flash的讀寫
  • mkdir /dev/pts devpts 用來支持外部網絡連接(telnet)的虛擬終端
  • mount -t devpts devpts /dev/pts
  • mount -t sysfs sysfs /sys mdev通過sysfs文明年間系統獲得設備信息
  • echo /bin/mdev > /proc/sys/kernel/hotplug 設置內核,當有設備拔插時調用 /bin/mdev 程序
  • mdev -s    在 /dev 目錄下生成內核支持的所有設備的節點  

  創建兩個目錄 sys 目錄 和 dev 目錄。然後修改fstab 文件:

  技術分享

  修改init.d/rcS文件。

  技術分享

  創建dev 目錄,創建兩個設備節點:

  技術分享

  一般系統中,ttySAC0的主設備號為4,但是在S3C2410、S3C2440所喲個的Linux 2.6.22.6上,它們的串口主設備號為204。我們的linux 4.10.8 上串口主設備號還沒定,先暫且就這麽創建著。

  其他設備都通過mdev 動態進行創建。

  需要註意的是: mdev 是通過 init進程來啟動的,在使用mdev 構造 /dev目錄之前,init進程至少要用到設備文件 /dev/console、/dev/null,所以要建立這兩個設備文件。

2.2.7 構建其他目錄

  其他目錄都可以是空目錄,如 proc, mnt, tmp, sys, root 等,直接用 mkdir創建即可。

三、安裝必須的環境

3.1 yaffs 文件系統

  下載yaffs 工具:git clone git://www.aleph1.co.uk/yaffs2

  下載完成後會生成,yaffs2目錄,然後進入utils 目錄:

  技術分享

3.2 jiffs 文件系統

3.2.1 下載所需要的軟件

  下載mtd-utils工具:wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.0.0.tar.bz2

  jiffs需要zlib支持,下載zlib壓縮工具:http://www.zlib.net/

  下載 lzo 包:wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz

  技術分享

  下載 uuid:suso apt-get install uuid

    http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz

3.2.2 安裝zlib

  下載完後,拷貝到ubuntu 虛擬機中去。

  解壓 zlib :tar -xzvf zlib-1.2.11.tar.gz

       cd zlib-1.2.11

  將其編譯進交差編譯工具鏈中去:

1 CC=arm-2440-linux-gnueabi-gcc ./configure --shared --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

  技術分享

  make

  sudo make install

  技術分享

3.2.3 安裝 lzo

  解壓:tar -xzvf zlib-1.2.11

  進入目錄去配置:

1 CC=arm-2440-linux-gnueabi-gcc ./configure --host=arm-2440-linux --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

  make

  sudo make install

3.2.4 安裝uuid

  解壓:tar -zxvf libuuid-1.0.3.tar.gz

  ./configure --without-ncurses

  make

  sudo make install

  技術分享

3.2.4 安裝mtd-utils 

  解壓:tar -jxvf mtd-utils-2.0.0.tar.bz2

  執行下面這句:

1 ./configure --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

  這裏要根據自己的交叉編譯工具鏈進行配置。

  make CROSS=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi- WITHOUT_XATTR=1

  sudo make install

  技術分享

 

  

  

  

  

Linux 4.10.8 根文件系統制作(一)---環境搭建