nfs根文件系统的构建1

本文介绍如何使用BusyBox构建一个最小的NFS根文件系统,包括配置、编译BusyBox,创建必要的文件和目录,如/bin、/sbin、/usr、/etc等,并设置内核启动参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立NFS根文件系统,主要是因为在开发的时候,很方便。在PC机上把需要的文件拷贝到共享目录下,在开发板的文件系统里就可以对应看到此文件。

    本文旨在建立一个最小的根文件系统。大家熟知的根文件系统,都包含一/bin/sbin/usr/etc

/lib等目录。通过busybox工具来编译生成根文件系统下的可执行文件。

    本编译器是arm-linux-gcc 3.4.5版本的。

 

    1.下载busybox-1.7.0,从http://www.busybox.net/downloads/下载,之后解压。

    tar xjf busybox-1.7.0.tar.bz2

    2.配置busybox,跟配置内核的界面差不多。

     若使用静态编译,可以选择

     Build Options

        []Build Busybox as a static binary(no shared libs)

     本文件系统采用动态编译的方法。

    3.编译和安装busybox

      首先修改busybox的根目录下的Makefile

      将ARCH CROSS_COMPILE变量修改如下

        ARCH  ?= arm
        CROSS_COMPILE ?= arm-linux-

     然后可执行make命令来进行编译。最后是安装 make install,就会在busybox根目录下的_install 目录下生成如下文件:

     drwxr-xr-x 2 yuaf yuaf 4096 2009-07-30 11:01 bin
     lrwxrwxrwx 1 yuaf yuaf   11 2009-07-30 11:01 linuxrc -> bin/busybox
     drwxr-xr-x 2 yuaf yuaf 4096 2009-07-30 11:01 sbin
     drwxr-xr-x 4 yuaf yuaf 4096 2009-07-30 11:01 usr

    把此文件下所有的文件拷贝到你的NFS共享文件夹下,如我的共享文件夹是:/home/yuaf/root_nfs
   4.建立/lib目录。使用动态链接库连接,把你所安装的交叉编译器路径下的lib目录拷贝到此目录下就行。

    $pwd

    /usr/local/arm/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

    $cp *.so* /home/yuaf/root_nfs/lib/

   5.构建/etc目录

    init进程根据/etc/inittab文件来创建其他子进程。

    创建etc/inittab文件,仿照Busyboxexamples/inittab文件。内容如下:

    #/etc/inittab

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

    ttySAC0::askfirst:-/bin/sh

    ::ctrlatldel:/sbin/reboot

    ::shutdown:/bin/umount -a -r

    创建etc/init.d/rcS文件,内容如下:

    #!/bin/sh

    ifconfig eth0 192.168.0.100

    mount -a

    最后还得改变它的属性,使它能够执行

    $chmod +x etc/init.d/rcS

    创建etc/fstab文件,其内容如下:

    # device mount-point type options  dump fsck  order
      proc   /proc        proc  defaults  0 0
      tmpfs  /tmp         tmpfs defaults  0 0
      sysfs  /sys         sysfs defaults  0 0
      tmpfs  /dev         tmpfs defaults  0 0

    其具体的每个字段的意思可以上网去搜。

   6.构建/dev目录

     通过mdev,读取内核信息来创建设备文件。要使用mdev,需要内核支持sysfs文件系统,为了减少对Flash的读写,还要支持tmpfs文件系统。确保内核支持CONFIG_SYSFSCONFIG_TMPFS配置项。

     要自动运行mdev,需要修改etc/fstab文件。其修改后的文件,见其上面etc/fstab内容。

     修改etc/init.d/rcS

     在其后面加入下面几行

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

     修改etc/inittab文件

     因为开发板通过mdev生成的/dev目录中,s3c2410的串口名是s3c2410_serial0s3c2410_serial1,不是ttySAC0ttySAC1等。

    建立/dev/console /dev/null 设备文件

    $sudo mknod console c 5 1

    $sudo mknod null c 1 3

  7.构建其他目录

   $mkdir proc mnt tmp sys root

   这样一个最小的根文件系统就建立起来啦。

   在U-Boot启动时,设置linux内核启动参数,挂载nfs文件系统。

   其u-boot设置启动参数如下:

   setenv linux_arg "console=ttySAC0 root=/dev/nfs init=/linuxrc nfsroot=192.168.0.50:/home/yuaf/root_nfs ip=192.168.0.100:192.168.0.50:192.168.0.1:255.255.255.0:www.yuaf.com:eth0:off"

   其中init=/linuxrc,很重要。初始化文件系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值