• 嵌入式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/目录下即可。

      

  • 相关阅读:
    在阿里云服务器(ECS)上从零开始搭建nginx服务器
    HTML5和CSS3新特性一览
    【react】---手动封装一个简易版的redux
    【react】---17新增的生命周期
    vue单页面应用刷新网页后vuex的state数据丢失的解决方案
    [VUE]object.defineProperty的基本使用
    JavaScript / 本地存储
    转载--httpclient原理和应用
    关于mybatis mapper.xml中的if判断
    idea maven install时,打包找不到微服务common中公用的包
  • 原文地址:https://www.cnblogs.com/ynxf/p/5987943.html
Copyright © 2020-2023  润新知