调试经验--硬盘U菜
调试经验--硬盘U菜
随着嵌入式设备功能的开发,随着对存储设备的需求:需要存储大量数据信息。需要在转储数据,U盘升级功能等。
在使用存储设备的过程中,我们遇到一些问题,也总结了些经验:
1。几个硬盘经常使用命令
2,硬盘信息分析
3,U盘升级失败的原因分析
4,U盘识别的分区更改为/dev/sda
一。几个硬盘经常使用命令
硬盘分区: fdisk /dev/hda (np1 w)
格式化硬盘:mkfs.ext2 /dev/hda1
设置UDMA 6 传输模式:hdparm -X70 /dev/hda
查看硬盘信息:smartctl -a /dev/hda
挂载硬盘:mount /dev/hda1 /mnt/hda1
修复ext格式硬盘:e2fsck -y /dev/hda1
查看超级块信息:tune2fs -l /dev/hda1
进行硬盘上1k数据替换:dd if=/dev/hda1 bs=1k skip=131072 count=1 of=/dev/hda1 seek=1
查看超级块备份位置:mke2fs -n /dev/hda1
查看硬盘具体信息(全):dumpe2fs /dev/hda1 |less
二,硬盘信息分析
挂载上一个硬盘,系统启动识别后,能够使用fdisk -l查看到例如以下信息,怎样解读?
Disk /dev/hda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
这事实上是一个500G的希捷硬盘, 有255个磁头,每磁头管理60801个柱面,每柱面63个扇区,每扇区512字节。(CHS)
怎么计算总容量?例如以下:
255*60801*63*512 = 500107862016 = 500G
按例如以下方法分区格式化后,再查看分区信息:
分区命令(仅仅分为一个区):
fdisk /dev/hda ( d,n,p,1,enter,enter,w, )
格式化命令(ext2格式):
mkfs.ext2 /dev/hda1
使用命令查看分区的信息:
dumpe2fs /dev/hda1 |less
dumpe2fs 1.41.11 (14-Mar-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: fbd1f044-491b-4cda-aaf1-a89c7bdc2726
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: filetype sparse_super
Default mount options: (none)
Filesystem state: not clean with errors
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 61063168
Block count: 122096000
Reserved block count: 6104800
Free blocks: 120076967
Free inodes: 61061072
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 16384
Inode blocks per group: 512
Filesystem created: Thu Jan 1 08:01:35 1970
Last mount time: Wed Dec 1 10:04:11 2010
Last write time: Thu Jan 1 08:00:35 1970
Mount count: 586
Maximum mount count: 37
Last checked: Thu Jan 1 08:01:35 1970
Check interval: 15552000 (6 months)
Next check after: Tue Jun 30 08:01:35 1970
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: tea
Directory Hash Seed: dea4f717-12bc-4cfb-b26c-50b95411a974
Group 0: (Blocks 0-32767)
Primary superblock at 0, Group descriptors at 1-30
Block bitmap at 31 (+31), Inode bitmap at 32 (+32)
Inode table at 33-544 (+33)
32210 free blocks, 16365 free inodes, 2 directories
Free blocks: 551-4095, 4097-10239, 10241-18431, 18434-22527, 22530-28671, 28673-32767
Free inodes: 20-16384
文件幻数标志了文件系统格式,Filesystem magic number: 0xEF53,这个数代表ext2或ext3。
block大小:4096字节
inode大小:128字节
每一个block group中,有32768个block。
Superblock 的备份位置(以block为单位):32768×N
当中N值为3,5,7的幂(N=1,3,5。7,9。25,27,49。81,125,243,343,625,729,2187,2401,3125)
三,U盘升级失败的原因分析
使用U盘升级的原因:
设备提供了一个usb接口。寻常并不使用,仅仅在须要导出数据时使用。因为软件总有升级的须要,在通常使用的远程网络升级之外,就提供了一个U盘升级的途径。U盘升级不但升级安全快捷。弥补了网络不通情况下的升级问题,依赖的执行程序也更少,能解决部分更基础的执行问题。
U盘升级的过程:
插上U盘,重新启动设备,在启动过程中,有一个启动脚本,检查是否存在U盘,并推断U盘中是否存在升级文件。若有升级文件,就開始进行文件更新。升级完毕后,设备再次重新启动。以升级后的程序进行正式的执行。
遇到一些U盘升级失败的情况。大概的原因分析:
1。 U盘不能识别。
2, U盘识别的设备名与启动脚本中的设备名不匹配;
――通过在启动脚本加入补充。支持/dev/sda4,/dev/sda1,/dev/sda,解决部分问题。
3。flash满,导致不能复制程序
――升级前。删几个日志文件,能解决部分问题。
有一次还遇到一次奇怪的现象:
1。设备上的程序总是不能执行起来。
2。U盘也升级不了。
解决方法:
1,查看出错信息
/etc/rcS.d/S03udev: line 52: can't create /tmp/uname: No space left on device
即系统的启动脚本中已经出错。
2,想办法绕开S03udev。
系统启动到“Freeing init memory”之后,按住ctrl C,直到出现“login:”
3。输入root登陆
此时又遇到一个问题:root登陆不了。报错:
Unable to determine your tty name.
改动uboot的启动配置:使用 init=/sbin/init 替换 noinitrd,
能够登陆。
4。查看文件系统空间使用情况,使用df。
发现使用率达到99%。
在根文件夹下使用命令:du -d 1。查看是哪一个文件夹占空间过大,进行清理。
5,清理出空间后,就攻克了问题,能正常进行U盘升级了。
6,后来多次遇到S03udev出错,跟踪出错语句。将其凝视掉。在以后的再次升级时,覆盖原文件。
四,U盘识别的分区更改为sda
因为第一批採购的U盘是在设备上默觉得/dev/sda,所以升级脚本中也是根据是否存在这个设备文件来推断是否U盘已经识别到。但是在后来採购的U盘以及其他人使用的U盘。却大多都不是这种。
发现有例如以下几种情况:
最多的是识别为:
一个设备:/dev/sda
一个分区:/dev/sda1
另外一种情况为:
一个设备:/dev/sda
一个分区:/dev/sda4
第三种情况:
设备与分区重合:/dev/sda
发现这个问题后,我们就改动了U盘检測的推断,将这3种情况都考虑进去了。可是存在一个问题,有些早期设备推断U盘还是依赖于/dev/sda,而第一批的U盘又不easy找到,就须要将其他类型的U盘也转换到这样的情况下来。经过一番測试。最终找到方法,按例如以下步骤操作就可以:
1,在linux下,fdisk删掉全部分区。保存退出。
2,强制格式化sda:mkfs.vfat /dev/sda -I ;然后sda可用了。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
调试经验--硬盘U菜的更多相关文章
- (转)CMOS Sensor的调试经验分享
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
- CMOS Sensor的调试经验分享
转自:http://bbs.52rd.com/forum.php?mod=viewthread&tid=276351 CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一 ...
- CMOS Sensor的调试经验分享【转】
转自:https://blog.csdn.net/yapingmcu/article/details/37817727 转自:http://bbs.52rd.com/forum.php?mod=vie ...
- 程序异常崩溃后用windbg辅助调试解决的经验 以及 堆栈问题调试经验
1,程序异常崩溃后用windbg辅助调试解决的经验 状况:我的程序调用别人的库做 文件写入工作. 在这一过程中出现异常,程序崩溃. 经反复检查,认为自己的程序没有错,但无法判断在别人库里哪里有错. ...
- 17调试经验之串口读写flash协议
一是设计功能 我的理解协议就是一个命令包,通过给出不同的控制命令,来调动不同的功能模块,实现不同的功能,如读数据,写数据,擦除等. 二设计过程 先看了尤老师的视频,主要讲了大致设计原理和总体框架,当然 ...
- 电机三环pid控制及调试经验
一.伺服电机的双环pid 双环pid在正常底盘运动的控制中已经足够了,但是对于双轴云台的控制来说,双环pid的云台控制的响应速度是远远不够的,所以加入了电流环的控制. 两篇大佬的文章--这是我学习pi ...
- 13 年的 Bug 调试经验总结
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug.最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可 ...
- mipi 调试经验
转载自http://blog.csdn.net/g_salamander/article/details/9163455 以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议 ...
- Keil C调试经验
我们使用Keil C调试某系统时积累的一些经验: 1.由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响.在Windows2000下面 ...
随机推荐
- 设计模式 State模式 机器的情况下用自己的主动性
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/26350617 状态模型给我眼前一亮的感觉啊,值得学习~ 看看定义:改变一个对象的 ...
- unity3d 学习笔记(两)
AudioClip 使用声音资源 unity3d资源可以被设置为声3d声音或2d声音.3d间的影响,越近声音越大 component: Audio source: 声音的发生物体 Audio list ...
- 设计与实现简单而经常使用的权限系统(四):无需维护level,递归构建树
第三篇中.我们通过维护节点的深度level,通过迭代全部的节点,仅仅须要一次,就构造了树. 本篇.换一种方式. 优点是:不维护节点的深度level,添加和改动节点时,也不用维护.递归实现,代码比較清 ...
- HDU 3313 Key Vertex(dfs + bfs)
HDU 3313 Key Vertex 题目链接 题意:一个有向无环图.求s,t之间的割点 思路:先spfa找一条最短路出来,假设不存在.就n个都是割点. 然后每次从s进行dfs,找到能经过最短路上的 ...
- SQL开发中容易忽视的一些小地方(四)
原文:SQL开发中容易忽视的一些小地方(四) 本篇我想针对网上一些对于非聚集索引使用场合的某些说法进行一些更正. 下面引用下MSDN对于非聚集索引结构的描述. 非聚集索引结构: 1:非聚集索引与聚集索 ...
- 怎么样Ubuntu正在使用root账号登录
一个. 因为当你需要 root 权限,使用 sudo 我们将能够做到这一点.假设你真的需要在 Ubuntu 启用 root 帐户的话,这是最好的运行下面的操作: 1.再次设置 root 的passwo ...
- [SignalR]Self-Host
原文:[SignalR]Self-Host SignalR 的Self-Host,可以将客户端脚本需要调用的服务端后台代码寄宿在诸如控制台应用程序中,作为寄宿端需要.NET 4.5以及jquery.s ...
- linux VIM基本命令
linux VIM命令: vim 在命令行中输入vim,进入vim编辑器 Esc 退出i(插入)命令进行其他命令使用 :sh 进入shell命令行,运行完命令后ctrl+d退出又一次进入vim编辑继续 ...
- 模式识别 - libsvm该函数的调用方法 详细说明
libsvm该函数的调用方法 详细说明 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26261173 须要载入(load)SVM ...
- java 正则表达式提取html纯文本
本文来自我的个人博客: java 正则表达式提取html纯文本 做内容的大家都知道,从html中直接提取纯文本是一个非常大的问题.现将我做的正则匹配贴上: import java.util.regex ...