Linux 4.10.8 根文件系統制作(一)---環境搭建
一、工具
制作工具為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 根文件系統制作(一)---環境搭建