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: 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操作的更多相关文章
- Linux中新增硬盘的分区,格式化与挂载
Linux中新增硬盘的分区,格式化与挂载 本篇教程内容为怎样对Linux新增硬盘进行挂载,所以如果有准备新增硬盘但是有各种问题的,请参看本篇教程. 我们先说说什么是挂载? 我们知道Linux中的所有设 ...
- Linux 中 Vi 编辑器的简单操作
Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi filename //打开或新 ...
- Linux中fdisk硬盘分区方法
fdsik 能划分磁盘成为若干个区,同时也能为每个分区指定分区的文件系统,比如linux .fat32. linux .linux swap .fat16 以及其实类Unix类操作系统的文件系统等:当 ...
- 如何在Linux 中获取硬盘分区或文件系统的UUID?
作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID.因为现在大多数的 Linux 系统都使用 UUID 挂载分区.你可以在 /etc/fstab 文件中可以 ...
- Linux中安装硬盘后对硬盘的分区以及挂载
我将使用VM来进行模拟 先使用df看下我的电脑硬盘信息: df -h 可以看到只有一个sda1分区装载/boot,还有一个扩展分区 查看dev下的硬盘: 只有一个硬盘(两个分区) 注意: 如果你是ID ...
- linux中dd相关命令骚操作
一.dd如何快速将磁盘写满 方法一: dd if=/dev/zero of=/tmp/file bs=1G count=10 # 参数解释 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件 ...
- linux中挂载硬盘报错(you must specify the filesystem type)
公司有台服务器做了raid1,由于容量小,需扩容,原先打算再添加两块硬盘进去做多一组raid1,组成两组raid1混合使用,但是公司抠门,买到服务器只能安装3块硬盘,无奈之下只能放多一块进去单独挂载分 ...
- linux中mysql完整卸载命令操作
yum方式安装的mysql 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2.rm -rf /var/lib/mysql3.rm ...
- linux 中,mysql数据库备份操作
1.新建一个sh脚本(可以先建一个txt文本,然后改为sh文件). 代码如下: #!/bin/bash #设置mysql备份目录 folder=/**/** cd $folder day=`date ...
随机推荐
- WKWebView简单使用
#import <WebKit/WebKit.h> @interface SchoolOverviewsViewController ()<WKUIDelegate,WKNaviga ...
- [題解/狀壓dp]POJ_2411_Mondriaan's dream
关于“我读过很多书,到后来大部分都被我忘记了,那阅读的意义是什么?”的疑问,我看过最巧妙的一个回答:当我还是个孩子的时候,我吃过很多的食物,大部分已经一去不复返而且被我忘记了,但可以肯定的是,它们中的 ...
- python Windows和Linux路径表示问题
Windows下路径是用‘\\’表示也可以使用'/',但是Linux下路径都是‘/’表示. 因为python是跨平台的,有时候程序迁移会出现错误. 解决办法1 可全部使用‘/’表示 解决办法2 我们可 ...
- Mysql 事务隔离级别(图文详解)
本文由 SnailClimb 和 BugSpeak 共同完成. 事务隔离级别(图文详解) 什么是事务? 事物的特性(ACID) 并发事务带来的问题 事务隔离级别 实际情况演示 脏读(读未提交) 避免脏 ...
- solr亿万级索引优化实践-自动生成UUID
solr亿万级索引优化实践(三) 原创 2017年03月14日 17:03:09 本篇文章主要介绍下如何从客户端solrJ以及服务端参数配置的角度来提升索引速度. solrJ6.0提供的 ...
- FastDFS java 辅助类
package cn.saiz.drkms.task.crack.utils; import java.io.File; import java.io.FileInputStream; import ...
- 公司开发部门GIT与SVN 之争
公司最开始决定是使用GIT作为版本控制 , 也都使用了4,5个月了 , 开发人员也都是20多岁年轻力壮的年轻人 , 每个组的组长也一直在做git使用的培训 , 即使是这样 , 还是遇到了非常大的阻碍 ...
- CF1043D Mysterious Crime
思路: 参考了http://codeforces.com/blog/entry/62797,把第一个序列重标号成1,2,3,...,n,在剩下的序列中寻找形如x, x + 1, x + 2, ...的 ...
- 深度技术GHOST WIN7系统32,64位旗舰稳定版
系统来自系统妈:http://www.xitongma.com 系统概述 深度技术ghost win8 X86(32位)旗舰稳定版系统集成了SATA/RAID/SCSI驱动,支持P45. MCP78. ...
- mongodb-3.2.8 单机复制集安装
规划: replSet 复制集名称: rs1 MongoDB数据库安装安装路径为:/usr/local/mongodb/ 复制集成员IP与端口: 节点1: localhost:28010 (默认的 ...