zoukankan      html  css  js  c++  java
  • 根文件系统制作

      昨天编译并下载好了内核,但是内核还是无法正常启动,原因就是没有挂载根文件系统。今天讲的就是如何去创建一个根文件系统并将它挂载到内核上。
      一、创建根文件系统
        1.创建目录
          #mkdir rootfs
          #cd rootfs
          #mkdir bin dev etc lib proc sbin sys usr mnt tmp var
          #mkdir usr/bin usr/lib usr/sbin lib/modules
        2、创建设备文件
          (1)在Linux中设备都以文件的形式存在和操作。
          (2)这些文件都在dev目录
          (3)在启动Linux系统的时候必须要使用两个设备文件console和null
            #cd rootfs/dev
            #mknod -m 666 console c 5 1
            #mknod -m 666 null c 1 3
           
        3、加入配置文件(一般都是借鉴已有的)
          #tar etc.tar.gz
          #mv etc/* ../rootfs/etc/ -rf
        4、添加内核模块
          进入内核文件目录中执行以下命令
          #make modules ARCH=arm CROSS_COMPILE=arm-linux-(编译内核模块)
          #make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs(将散落的模块统一移至rootfs中的子文件夹中)
        5、编译安装busybox
          make
          make  install
          busybox主要存放的是一些实现linux命令的函数,比如cd,ls之类的。
          经过以上5步,一个简易的根文件系统就制作好了,接下来就该挂载到内核中了。
      二、将根文件系统挂载到内核中
        根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为 RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等。
        1、initfamfs
          根文件系统一般用initfamfs,基于内存的文件系统掉电丢失,但是速度快。一般一个系统是多个文件系统混合使用。
          要使用initramfs就必须使用软链接
            ln  -s  ./bin/busybox  init
          在当前文件夹产生init的快捷方式对应于./bin/busybox
          配置内核要选上 initramfs选项(General里),且紧接着填写根文件系统所在位置。再重新编译内核。
          设置UBOOT环境变量(传给内核的启动参数)
            setenv bootargs noinitrd console=ttySAC0,115200
          但是这样,如果要添加文件则必须要重新编译内核使得文件系统得到更新,因为此时的文件系统是通过解压存在内存里面的。即这种方式的文件系统是包含在内核里的。
        2、nfs
          (1)内核配置
            取消initramfs
            进入File  System
            根文件系统onNFS选上
          (2)编译内核
          (3)设置UBOOT启动参数

            

      bootargs是启动参数,它的值意义分别为:控制台用串口0,波特率115200、init=/init(这个我也不造。。)、root=/dev /nfs,说明根文件系统采用dev目录下的nfs,也就是说使用网络文件系统、rw可读可写、nfsroot根文件系统地址为nfs服务器的/home /bumblebee/exercise/.../rootfs目录,其中ip为nfs服务器的ip,也就是我linux的ip、 ip=192.168.0.101开发板ip,192.168.0.103linux的ip,192.168.1.1网关ip(可不 改),255.255.255.0(掩码,不知道是啥东西,同不改),后面的都照抄不用改了。就是这么任性!这样nfs文件系统就挂载好了。

  • 相关阅读:
    supervisor使用小记
    linux新增定时脚本
    page_fault_in_nonpaged_area异常解决方案(已解决)
    和安卓对接老是ping不通?试试内网映射
    github文件下载加速器
    mybatis新增账号并且返回主键id
    arraylist源码解析
    MySQL安装教程
    通过get方法的方式获取配置项信息
    @Inject注解
  • 原文地址:https://www.cnblogs.com/51qianrushi/p/4294335.html
Copyright © 2011-2022 走看看