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

一、硬盘

1.硬盘文件

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

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

2.物理分区和逻辑分区

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

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

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

$ sudo fdisk -l /dev/sda
Disk /dev/sda: GiB, bytes, sectors
Units: sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disklabel type: dos
Disk identifier: 0x801a0f4d 设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sda1 * 98G Linux
/dev/sda2 2G 扩展
/dev/sda5 2G 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=,mode=
none /proc proc defaults
none /sys sysfs defaults
none /tmp tmpfs defaults
/dev/mtdblock0 /mnt/sdisk1 jffs2 defaults
/dev/mtdblock1 /mnt/sdisk2 jffs2 defaults 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 == ) {
printf("/mnt/sdisk1 mount failed, format the spi 1 flash now....\n");
printf(" Maybe we should wait for a few minutes....\n");
Exec_sys_cmd(cmd, "flash_eraseall -j /dev/mtd0");
}
else
printf("/mnt/sdisk1 mount successful!\n");

 

  

linux中的硬盘及flash操作的更多相关文章

  1. Linux中新增硬盘的分区,格式化与挂载

    Linux中新增硬盘的分区,格式化与挂载 本篇教程内容为怎样对Linux新增硬盘进行挂载,所以如果有准备新增硬盘但是有各种问题的,请参看本篇教程. 我们先说说什么是挂载? 我们知道Linux中的所有设 ...

  2. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  3. Linux中fdisk硬盘分区方法

    fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux .fat32. linux .linux swap .fat16 以及其实类Unix类操作系统的文件系统等:当 ...

  4. 如何在Linux 中获取硬盘分区或文件系统的UUID?

    作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID.因为现在大多数的 Linux 系统都使用 UUID 挂载分区.你可以在 /etc/fstab 文件中可以 ...

  5. Linux中安装硬盘后对硬盘的分区以及挂载

    我将使用VM来进行模拟 先使用df看下我的电脑硬盘信息: df -h 可以看到只有一个sda1分区装载/boot,还有一个扩展分区 查看dev下的硬盘: 只有一个硬盘(两个分区) 注意: 如果你是ID ...

  6. linux中dd相关命令骚操作

    一.dd如何快速将磁盘写满 方法一: dd if=/dev/zero of=/tmp/file bs=1G count=10 # 参数解释 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件 ...

  7. linux中挂载硬盘报错(you must specify the filesystem type)

    公司有台服务器做了raid1,由于容量小,需扩容,原先打算再添加两块硬盘进去做多一组raid1,组成两组raid1混合使用,但是公司抠门,买到服务器只能安装3块硬盘,无奈之下只能放多一块进去单独挂载分 ...

  8. linux中mysql完整卸载命令操作

    yum方式安装的mysql 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2.rm -rf /var/lib/mysql3.rm ...

  9. linux 中,mysql数据库备份操作

    1.新建一个sh脚本(可以先建一个txt文本,然后改为sh文件). 代码如下: #!/bin/bash #设置mysql备份目录 folder=/**/** cd $folder day=`date ...

随机推荐

  1. VLAN-4-在路由器上配置Trunk

    VLAN Trunk技术可以用在路由器和主机上,也可以用在交换机上.路由器不支持DTP,所以工程师必须手动配置. 路由器Trunk需要使用子接口(在一个接口中实现多个vlan间的路由和通信),每个子接 ...

  2. [POJ1463] Strategic game

    题目链接: 传送门 题目大意: Bob非常享受玩电脑游戏的过程,尤其是策略游戏,但是在有些时候,他因为不能在第一时间找到最佳的策略而十分伤心. 现在,他遇到了一个问题.他必须保卫一个中世纪的城市,有很 ...

  3. 用注解@DelcareParents实现引用增强

    引用增强,是一个比较特殊的增强,不同于其他方法级别的增强. 引用增强可以实现:一个Java类,没有实现A接口,在不修改Java类的的情况下,使其具备A接口的功能. 先看看背景,我们有个Love接口: ...

  4. Ionic之$scope 依赖注入报错

    在开发Ionic过程中,发现会报在 LoginController 中引用locals报错,具体报错问题: ionic.bundle.js:19526 Error: [$injector:unpr] ...

  5. android开发学习 ------- 上传本地项目到gitlab

    写了一个demo,上传到gitlab 参考  https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1:新建项目,填写相应的 ...

  6. 借助sass的Maps功能使得响应式代码更有条理

    原文来自这里 本文综合了原文(by Jonathan Suh)以及笔者自己的理解. Introduction 众所周知,写代码与写维护性高的代码是两回事.而涉及到响应式,代码又特别容易变的杂乱.借助s ...

  7. cf580E. Kefa and Watch(线段树维护字符串hash)

    题意 $n$个数的序列,$m + k$种操作 1.$l , r, k$把$l - r$赋值为$k$ 2.$l, r, d$询问$l - r$是否有长度为$d$的循环节 Sol 首先有个神仙结论:若询问 ...

  8. ES-Mac OS环境搭建(1)

    前言 由于elasticsearch依赖Java,所以先要配置上Java环境,并且Java JDK必须要求1.8以上,这里以安装Java 1.8为例.安装环境如下: elasticsearch6.5. ...

  9. vue从入门到开发--4--处理http请求

    一: 在main.js里面处理http请求模块,因为没有这个模块,所以需要先安装这个模块:npm install vue-resource --save 安装完毕之后,导入这个模块,并使用中间件将其使 ...

  10. 抽象常量class

    需要把经常用到的常量抽象到一个类里面管理 如: