zoukankan      html  css  js  c++  java
  • Linux嵌入式文件系统(网络文件系统)

    <文件系统定义>

    怎么将文件和文件目录加载到linux内核中,这一种加载的方式就叫做文件系统

    《建立根文件系统目录和文件》

    <创建目录>

    1)在linux系统中使用命令mkdir rootfs 创建一个文件夹

    2)进入该文件夹依次批量的创建文件夹 bin  dev etc lib proc sbin sys usr mnt temp var  

    3)创建usr子目录

    mkdir usr/bin usr/sbin lib/modules

    <创建设备文件>

    linux 系统中所有的东西都是文件,所有的设备文件都是放在/dev 目录下的。

    命令:

    mknod  -m 666  console   c 5 1

    参数解释:

    -m  666:表示属性

    console :表示控制台

    c :表示字符设备

    5:主设备号

    1:次设备号

    命令:

    mknod -m 666 null c 1  3

    <.加入配置文件>

    配置文件和体系结构是没有关系的,所以可以用现成的,教程上面有这个东西(附带的)

    <添加内核模块>

    1)首先进入解压好的内核源代码中的

    2)执行命令:make modules ARCH=arm  CROSS_COMPILE=arm-linux-

    编译出内核模块

    3)执行命令:make modules_install  ARCH=arm INSTALL_MOD_PATH=/文件根路径

    将编译出来的内核模块打包并移动到根文件下的/lib/modules 中

     在嵌入式linux中,所有平台的终端中都需要使用命令,这些命令代码的实现是否需要我们自己来编写呢,答案是否定的,这时就需要使用busybox来提供这些小命令

    1)将busybox 的源代码复制到linux的中去并解压

    2)命令:make menuconfig

    注意:(1)在出现的菜单中配置成使用静态编译(2)并指明使用交叉编译工具(3)指明安装路径是自己创建的根文件中

    3)命令:make

    执行编译

    4)命令:make install

    执行安装

    《挂载根文件系统到内核》

    <挂载方式简介>

    根据存储设备的硬件特性,系统需求(只读或可读可写),不同的文件系统有不同的应用场合,在嵌入式linux中,主要的存储设备是RAM 和FLASH ,常见的基于此存储介质的文件系统有 :JFFS2,YAFFS2,UBIFS,RAMDISK

    <常见文件系统>

    基于nandflash 的文件文件系统:

    yaffs2:可读可写

    ubifs:可读可写

    cramfd:只读

    基于norflash 的文件系统:

    jffs2:可写可读

    基于内存的文件系统:(启动速度快,但是掉电后数据就会消失)
    ramdisk:可读可写(原理:在内存中划分4M的空间用于存储文件,相当于一个虚拟的磁盘,缺点是空间不可变)

    initramfs:可读可写(ramdisk 的升级版本,划分的内存可变)

    基于网络的文件系统:
    NFS:一般用于开发阶段

    注意:几种文件系统是可以互相使用的

    <initramfs>

    1)创建一个软连接

    ln  -s  /自己创建的 文件系统中的bin/busybox +软连接名 的文件的路径

    2)配置linux内核

    进入linux内核中配置内核,勾选initional ram filesystem ,并输入相应的新建的根文件系统是路径

    3)重新编译内核

    4)设置环境变量

    设置bootargs  这个环境变量是linux内核启动时传递个内核的参数

    命令:

    setenv bootargs noinitrd console=ttySAC0,115200

    <NFS挂载>

    1)内核配置

    命令:make  menuconfig  ARCH=arm

    取消之前选中initramfs,并重新选中netfile system

    2)重新编内核

    3)设置环境变量

    setenv bootargs noinitrd

    console=ttySAC0,11520 init=/init

    root=/dev/nfs rw

    nfsroot=192.168.1.3:/home/S5driver/lesson9/rootfs,

    ip=192.168.1.6:192.168.1.3:192.168.1.1:25 5.255.255.0::eth0:off

    注意:用“:”做分隔符号,off 表示关闭动态ip 分配

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    arcims(HtmlView)开发经验总结《转》
    Oracle sequence
    ajax 简介
    PHP:路在何方?
    ArcIMS初级教程(4)
    设计开发必须收藏的资源网站
    Win2008+IIS7.0+VS2008 在测试调试网站时报错,紧急求救!
    动态生成客户端数组
    解决MySQL不允许从远程访问的方法
    MySql中delimiter的作用是什么
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589908.html
Copyright © 2011-2022 走看看