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

一、硬盘

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. Zynq7000开发系列-5(OpenCV开发环境搭建:Ubuntu、Zynq)

    操作系统:Ubuntu14.04.5 LTS 64bit OpenCV:OpenCV 3.1.0.opencv_contrib gcc:gcc version 4.8.4 (Ubuntu 4.8.4- ...

  2. 【aspnetcore】模拟中间件处理请求的管道

    几个核心对象: ApplicationBuilder 就是startup->Configure方法的第一个参数,请求(HttpContext) 就是由这个类来处理的 HttpContext 这个 ...

  3. AttributeError: module 'shutil' has no attribute 'copyfileobj'

    import shutil #1.copyfileobj(源文件,目标文件) 将文件内容复制到另一个文件 shutil.copyfileobj(open('config.log','r'),open( ...

  4. linux系统任务调度命令crontab

    循环重复的执行计划任务.有计划性的执行任务,像这种任务,在linux系统中就有cron命令来完成. linux系统下的任务调度分为两类:系统任务调度和用户任务调度. /etc/crontab文件就是系 ...

  5. 删除cookie时遇到的坑

    曾经有个“导出中”的需求,我用iframe实现下载对话框和cookie轮询验证token去解决的,但是昨天又发现了一个新问题: 因为前台需要提示导出失败的详细信息,这个信息我是在token返回0的时候 ...

  6. JavaScript Allongé 第一呷 :基础函数 (1)

    第一呷 :基础函数 关于函数,尽管少,但毫不逊色. 在javascript中,函数是值,但它们不仅仅是简单的数值,字符串,或者甚至复杂的数据结构树或者地图.函数表示要执行的运算.就像数值.字符串和数组 ...

  7. Django的模型与字段

    Django的模型,包含字段field和操作方法,每个模型在数据库中映射为一张表. 基本原则: 每个model在django中是一个Python类 每个model都是django.db.models. ...

  8. git与GitHub(二)

    昨天在安装完git之后,出了一个问题,虽然暂时有解决的办法,但是由于电脑中了病毒并且配置低下等原因,这个问题的解决办法目前还有待考证.遇到的问题是这样的: 前提是想试一下git在命令行里的命令:于是: ...

  9. CSS子元素设置margin-top作用于父容器?

    CSS子元素设置margin-top作用于父容器? 原因: In this specification, the expression collapsing margins means that ad ...

  10. Apache Kafka框架学习

    背景介绍 消息队列的比较 kafka框架介绍 术语解释 文件存储 可靠性保证 高吞吐量实现 负载均衡 应用场景 背景介绍: kafka是由Apache软件基金会维护的一个开源流处理平台,由scala和 ...