根文件系统制作与NFS挂载

时间:2022-02-23 09:06:11

一:busybox:

  1、完整的操作系统=bootloader(u-boot)+kernel(zImage)+根文件系统。

  2、根文件系统的核心就是  各种以及系统运行配置参数(类似于linux的cd、ls、mkdir......)。

  3、根文件系统的核心文件:bin,sbin,usr,etc,lib

  4、制作嵌入式根文件系统,可以利用busybox开源的工具软件,它集合了所有的命令

二:根文件系统制作

  1:开发板跟的软件包理匹配的busybox工具,解压到linux中。

  2:进行菜单配置:make menuconfig---------------进入解压后的目录

    a)、编译器前缀根文件系统制作与NFS挂载

    b)、配置共享库(这里就是要挂载NFS的文件夹)---我的目录/work/busybox-1.17.2/rootfs/                                   根文件系统制作与NFS挂载

    c)、配置安装路径(可以不修改,为了你对自己文件有清晰的分类管理,建议修改)

           根文件系统制作与NFS挂载

    d)、配置模块,取消掉根文件系统制作与NFS挂载

            然后根文件系统制作与NFS挂载

  3、编译安装文件系统:make -j8;make install -j8  ------------------进入解压后的目录

    1、安装后查看生成的文件:ls /work/busybox-1.17.2/rootfs -l

      根文件系统制作与NFS挂载

    2、查看生成的busybox是否是arm架构的程序:

      file /work/busybox-1.17.2/rootfs//bin/busybox根文件系统制作与NFS挂载

    3、复制命令的动态库  -------- 进入共享的文件夹

      先查看生成的busybox程序依赖哪些动态库

      arm-linux-readelf -d bin/busybox | grep .so

      查看编译器的安装路径 which arm-linux-gcc

      复制编译器的lib文件到共享目录下 cp /opt/FriendlyARM/toolschain/4.5.1/arm-nonc-linux-gnueabi/lib/ .

    4、创建其他目录 mkdir dev home proc tmp var etc/init.d mnt opt sys -p

    5、创建控制台文件 mknod dev/console 5 1

       注:该文件世设备文件,只能用mknod创建,不能用vim,gedit,touch。c表示字符设备,5表示主设备号,1表示此设备号

    6、根据需要在etc目录下创建fstab文件

      根文件系统制作与NFS挂载

      以上文件是设置linux挂载上文件系统  后  还需要挂载  的  其他文件系统

    7、在etc目录下创建inittab文件

      因为在linux的examples文件夹里面已经提供了一个模板,我们只需把它拷贝过来修改就能用了   cp /work/busybox-1.17.2/examples/inittab etc/

       ::sysinit:/etc/init.d/rcS
      console::askfirst:-/bin/sh
      ::restart:/sbin/init
      ::ctrlaltdel:/sbin/reboot
      ::shutdown:/bin/umount -a -r
      ::shutdown:/sbin/swapoff -a

    8、在etc/init.d/里面创建rcS文件

      gedit etc/init.d/rcS &

      内容:#!/bin/sh
        mkdir /dev/shm -p
        mkdir /dev/pts -p
        #
挂载 fstab 文件中指定的所有文件系统
        mount -a
        #
以下是热拔插支持
        echo /sbin/mdev > /proc/sys/kernel/hotplug
        mdev -s

            hostname 你的名字(非中文)

    9、在etc目录下创建profile文件

      内容:根文件系统制作与NFS挂载

    10、添加用户信息,因为x86里面已经有了,所以我们可直接从里面复制出来使用

      cp /etc/passwd etc/

    11、总结linux启动过程,以及嵌入式系统启动过程

      在bootloader中 制定 各种要求 传递 给 linux内核的 参数,在开机后先mount上制定文件系统,(该文件系统主要负责启动运行的配置文件)

      1)、busybox init启动后,初始化控台

      2)、扫描etc/init.d文件

      3)、执行系统初始化命令,还有执行rcS文件(这里面会包含制定挂载的文件系统)

      4)、执行所有wait动作的命令

      5)、执行所有once动作的命令

      6)、执行所有终止时必须重新启动的 inittab 命令(动作类型: respawn)

      7)、执行所有终止时必须重新启动但启动前必须询问用户的 inittab 命令(动作类型: askfirst)

      8)、启动shell程序

      9)、执行profile文件

  到此根文件系统制作完成!

三:NFS 文件系统挂载

  1、开启nfs服务:service nfs restart--本次有效

          chkconfig iptables on

  2、关闭window防火墙,linux防火墙

  3、设置ip

  4、开启开发板设置环境变量:

    格式:root=/dev/nfs nfsroot=虚拟机 IP:虚拟机的 NFS 根文件系统路径 ip=开发板 IP:虚拟机 IP:网关:子网掩码::eth0:off init=/linuxrc console=ttySAC0 lcd=S70
    setenv bootargs root=/dev/nfs  nfsroot=192.168.111.251:/root/work/rootfs/ ip=192.168.111.252:192.168.111.251:192.168.111.1:255.255.255.0:edu118:eth0:off init=/linuxrc console=ttySAC0 lcd=w101(必须是同一行)
  5、挂载完成

  6、测试:开发板连接电脑进入共享文件下进行测试