转载地址:https://blog.csdn.net/linuxweiyh/article/details/51254047
在做嵌入式移植的时候,看到了这个命令,下面的内容也可以说是转载过来的。
dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用
我的理解:
第一句话:从一个文件中拷贝指定大小的内容到一个块
第二句话:在拷贝文件的时候可以对拷贝的内容进行转换;在拷贝内容的大小不满足块大小的时候,可以进行填充
第三句话:现在已经明白这个作用,就是格式化磁盘
下面是命令简介:
dd 的主要选项:
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes
一次写出 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。 不取整指令
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
我遇到的第一个命令:
busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync
if=/dev/zero:输入文件名为/dev/zero
of=/dev/mmcblk0:输出文件名为/dev/mmcblk0
bs=512:读块和写块的大小都为512B(这里的输出文件为一个块设备,块大小的设置跟块设备中每块的大小相关)
seek=1:跳过第一个块
count:只拷贝一个块
conv:若读取的输入块不足512B,那么不足的部分填充NUL
我遇到的第二个命令:
sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1
iflag=dsync:表示输入文件读取时不经过缓冲区,一块一块地读取(块的大小为缓冲区大小),直到读取完成。
oflag=dsync:表示输出文件不经过缓冲区,来一块,写入一块。
if=210.bin:表示输入文件为210.bin
of=/dev/sdb:表示输出文件为sd卡
seek=1:表示跳过第0块,从第1块开始写入