嵌入式Linux驱动学习之路(八)创建最小的根文件系统

时间:2022-06-06 19:52:27

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/目录下即可。