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 ...
随机推荐
- 使用top观察一进程的cpu历史占用情况
#!/bin/shtop -b -n 1 -p 1975| tail -3 >>process1975.log 搞了时间节点,做个定时任务什么的就ok了
- Connected Components? Codeforces - 920E || 洛谷 P3452 &&bzoj1098 [POI2007]BIU-Offices
https://codeforces.com/contest/920/problem/E https://www.luogu.org/problemnew/show/P3452 https://www ...
- 安装好的php独立添加扩展模块
在装好php后,或者在使用php的时候,发现某个模块没有添加,而又不想重新编译安装,这时就需要单独添加扩展模块. php环境说明: 安装路径:/data/php5.6/ 解压路径:/data/php- ...
- RTT
Segger RTT的使用 一般arm系统中,如何通过电脑键盘和显示器同mcu进行交互最有效的有两种形式:arm7的semihost,cm时代的traceswo.现在jlink推出了颇具特色的rtt( ...
- D. Kay and Snowflake 树的重心
http://codeforces.com/contest/686/problem/D 给出q个询问,每次要求询问以x为根的子树中,哪一个点是重心. 树的重心:求以cur为根的子树的重心,就是要找一个 ...
- 剑指offer部分编程题
一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...
- 实现一个redis连接池
#*****************jedis连接参数设置*********************#redis服务器ipredis.ip=169.254.130.122#redis服务器端口号red ...
- 前端生成全球唯一码GUID
function GUID() { this.date = new Date(); //先new一个时间备用 GUID.prototype.newGUID = function () { this. ...
- bootstrap基本组件
bootstrap分页 <nav> <ul class="pagination"> <li><a href=&q ...
- VUE学习,vue运行环境搭建遇见的小问题
1.使用vscode来编辑项目,那么首先给它搭一个vue运行的环境,打开集成终端,使用npm install live-server -g安装live-server. problem1:cmd终端分行 ...