zoukankan      html  css  js  c++  java
  • linux中的硬盘及flash操作

      磁盘操作是块设备的必备操作,需要认真掌握。

    一、硬盘

    1.硬盘文件

       默认串口硬盘的设备文件为sda(第一块硬盘)、sdb(第二块硬盘)....

       默认并口硬盘的设备文件为hda(第一块硬盘)、hdb(第二块硬盘)....

    2.物理分区和逻辑分区

    • 每块硬盘最多有四个主分区(包括真正的分区和扩展分区),编号1~4
    • 5开始为逻辑分区;
    • 每个分区能分配独立的文件系统

      如下图,主分区容量=sda1+sda2(扩展分区);

      扩展分区容量=逻辑分区总容量=sda5,当然本例只有一个逻辑分区,还可以有sda6/7/8/9.....

    $ sudo fdisk -l /dev/sda
    Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x801a0f4d
    
    设备       启动     Start    末尾    扇区 Size Id 类型
    /dev/sda1  *         2048 205522943 205520896  98G 83 Linux
    /dev/sda2       205524990 209713151   4188162   2G  5 扩展
    /dev/sda5       205524992 209713151   4188160   2G 82 Linux 交换 / Solaris

    3.用fdisk分区

      fdisk /dev/sda  就可以对硬盘进行分区,按照提示操作即可。

    4.格式化文件系统mkfs

      分区以后,还需要格式化相关的文件系统,例如ext3/4等,格式化分拣系统实质上是向flash里写入该文件系统需要的数据,用于文件系统管理磁盘。

      例如:mkfs.ext3 /dev/sda1

    5.磁盘检查 fsck

       用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

      例如 fsck.ext4 -p /dev/sda1

    6.挂载mount

      mount /dev/sda1 /mnt/sda1

    7.查看已挂载的磁盘分区和文件系统 df

      可用df命令查看已经挂载的文件系统。

    8.自动挂载/etc/fstab

       每次手动mount非常麻烦,linux提供配置文件的方式,自动挂载磁盘

      以手上的嵌入式板子上的fstab为例说说明

    zynq> cat /etc/fstab 
    devpts                  /dev/pts        devpts  gid=5,mode=620  0 0
    none                    /proc           proc    defaults        0 0
    none                    /sys            sysfs   defaults        0 0
    none                    /tmp            tmpfs   defaults        0 0
    /dev/mtdblock0          /mnt/sdisk1     jffs2   defaults        0 0
    /dev/mtdblock1          /mnt/sdisk2     jffs2   defaults        0 0

    第一列 device
    第二列 mount point
    第三列 filesystem
    第四列 perameters:
      1. default,一般用default即可,具体可以参考“鸟哥的linux私房菜”
    第五列 dump, 能否被dump备份命令作用
    第六列 fsck,是否以fsck校验扇区,0不校验,1和2都校验,1较早而2较晚校验

    二、嵌入式flash

      已ZYNQ嵌入式单板为例。

    1.设备文件

      嵌入式ZYNQ单板上,spi接口外界flash芯片,在dts中配置分区,linux启动以后,自动生成如下文件:

      /dev/mtd0, /dev/mtd1, /dev/mtdblock0, /dev/mtdblock1.

    2.格式化文件系统flash_eraseall -j

       $ flash_eraseall -j /dev/mtd0
         $ flash_eraseall -j /dev/mtd1

      格式化成jiffs2格式。

    3.挂载mount

       $ mount -t jffs2 /dev/mtdblock0 /mnt/sdisk1
       $ mount -t jffs2 /dev/mtdblock1 /mnt/sdisk2

    4.自动挂载/etc/fstab

        见硬盘自动挂载部分。

    5.装置启动时自动判断文件系统,并修复

      对于未格式化过或者不是jiffs2格式的flash,可用程序自动判断并进行格式化。

     大体思路:df看是否挂载了,没有挂载就格式化。

            id = Exec_sys_cmd_result(cmd, "df -h |grep /mnt/sdisk1 |wc -l");
            if(id == 0) {
                printf("/mnt/sdisk1 mount failed, format the spi 1 flash now....
    ");
                printf(" Maybe we should wait for a few minutes....
    ");
                Exec_sys_cmd(cmd, "flash_eraseall -j /dev/mtd0");
            }
            else 
                printf("/mnt/sdisk1 mount successful!
    ");

     

      

     

  • 相关阅读:
    OAuth2.0 基础概述
    Ubuntu安装Gogs服务
    ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
    ASP.NET MVC 中的路由
    升级Ghost
    搭建Golang开发环境
    TDD并不是看上去的那么美
    .NET Framework 源码查看与调试
    在 ASP.NET MVC 中使用异步控制器
    SpringMVC+FreeMarker+Mybatis 整合
  • 原文地址:https://www.cnblogs.com/liuwanpeng/p/6902283.html
Copyright © 2011-2022 走看看