嵌入式Linux驅動學習之路(八)創建最小的根文件系統


busybox

  在配置busybox,在是否選擇要靜態鏈接庫時,在靜態下,busybox中的工具不需要動態鏈接庫,能夠直接運行。而用戶自己編寫的程序如果需要動態鏈接庫,還是依然需要有。

  (從http://www.busybox.net/downloads/可以下載busybox工具)

  如果是動態鏈接庫,則busybox和用戶自己編寫的程序都需要動態鏈接庫。 

  這里,因為我們以后需要使用自己編寫的程序,故選擇使用動態鏈接庫。  

  busybox 要支持mdev、Tab補全功能、insmod模塊安裝命令、ifconfig命令等。

    Busybox Settings 

      Busybox Library Tuning 

         Tab completion

然后就是編譯、安裝。安裝的時候一定要跟上路徑,不然很有可能破壞電腦的文件系統。

修改Makefile

CROSS_COMPILE ?= arm-linux-

make

make CONFIG_PREFIX=/work/nfs_root/first_fs install

 

 bootargs = noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

構建最小文件系統。

  首先創建最基本的設備文件。(/dev/console和/dev/null)。

  在pc上查看當前電腦的設備號。

zws@z-pc:/home/jz2440/fsroot$ ls /dev/console -l
crw------- 1 root root 5, 1 10月 22 12:45 /dev/console
zws@z-pc:/home/jz2440/fsroot$ ls /dev/null -l
crw-rw-rw- 1 root root 1, 3 10月 22 12:45 /dev/null

  然后在相應的文件夾中創建對應的設備文件。

mkdir dev
cd dev/ sudo mknod console c
5 1 sudo mknod null c 1 3

   構造inittab

mkdir etc
cd etc/
touch inittab
console::askfirst:-/bin/sh

  構建C庫  

mkdir lib
cp 。。。。/arm-linux/lib/*.so* ./ -D

完成最小根文件系統的構建。

使用 mkyaffs2image 制作文件系統。

將文件系統通過tftp下載到開發板板,並寫入到nand Flash

tftpboot 30000000 fsroot.yaffs2
nand erase root
nand write.yaffs 0x30000000 root $(filesize)

最小文件系統完成。

   支持PS命令。

mkdir sys
mkdir proc
mdkir etc/init.d
tocuh etc/init.d/rcS

  在inittab中添加 

::sysinit:/etc/init.d/rcS

  在rcS中添加 

mount -a

  在etc下新建fstab。 添加

  #device        mount-point        type        option        dump    fsck order
  proc         /proc             proc        defaults     0        0


使用udev。而mdev是udev的簡化版本。

  使用mdev自動創建設備文件

  在fstab中添加

sysfs        /sys            sysfs        defaults    0        0
tmpfs        /dev            tmpfs        defaults    0        0

  在rcS中添加

mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s 

到此為止,一個基本的文件系統已經創建完成。

設置啟動參數:

set bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

 

 NFS網絡文件系統

  在UBUNTU的/etc/exports中修改共享的目錄路徑Document/nfsroot.txt。

set bootargs=root=/dev/nfs rw nfsroot=<serverip>:/home/zht/rfsys nfsaddrs=<clientip>:<serverip>:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200

 

添加文件系統的命令工具

  我們制作的最小根文件系統只有基礎的一些功能,比如當我們需要在開發板上執行格式化磁盤命令mkdosfs、磁盤分區命令fdisk 等的命令時會發現我們制作的根文件系統沒有這些命令工具,因此我們需要自己添加相應的命令工具。

從http://pkgs.fedoraproject.org/repo/pkgs/dosfstools/網站上下載dosfstools-3.0.16.tar.gz文件,在PC機上進行解壓讓后通過make CC=arm-linux-gcc進行交叉編譯得到mkdosfs文件。將mkdosfs拷貝到開發板的/usr/sbin/目錄下即可。

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM