dd命令制作U盘启动盘 wodim刻录光盘 附dd命令介绍

首先格式化U盘:使用fdisk -l 查看U盘到挂载点,如我的为/dev/sdb1。卸载U盘,执行格式化命令:mkfs.vfat  /dev/sdb1

然后重新挂载U盘,开始制作启动盘:

# dd if=/ntfs/linux_all/sys/CentOS-7.0-1406-x86_64-DVD.iso of=/dev/sdb

注意是/dev/sdb 不是/dev/sdb1  否测出现:isolinux.bin missing or corrupt 错误

此时可以重新开一个终端以dd命令相同到用户运行:# while killall -USR1 dd; do sleep 5; done
此时在dd命令到终端中即可显示刻录进度:
3618528+0 records in
3618528+0 records out
1852686336 bytes (1.9 GB) copied, 392.471 s, 4.7 MB/s
3673141+0 records in
3673141+0 records out
1880648192 bytes (1.9 GB) copied, 397.562 s, 4.7 MB/s
3726407+0 records in
3726407+0 records out
1907920384 bytes (1.9 GB) copied, 402.54 s, 4.7 MB/s
3779793+0 records in

附:
一 dd命令:
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数
1.if=文件名:输入文件名,缺省为标准输入。即指定源文件。<if=inputfile>
3.ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4.cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5.skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6.seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7.count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8.conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternateebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件

sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

使用wodim刻录光盘:查看光驱信息:

wodim --devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0  dev='/dev/scd0'	rwrw-- : 'HL-DT-ST' 'DVDRAM GT31N'
-------------------------------------------------------------------------
执行刻录
wodim -sao -v  speed=1 dev=/dev/scd0 /ntfs/linux_all/sys/CentOS-7.0-1406-x86_64-DVD.iso 


-v verbose
-eject 刻完自动弹出光盘
speed=1 dev=0,3,0 :1M速刻录到dev=/dev/scd0


二  /dev/zero 与 /dev/null区别:

/dev/null

/dev/null看作"黑洞"。 它非常等价于一个只写文件。所有写入它的内容都会永远丢失。 而尝试从它那儿读取内容则什么也读不到。所以我们是不能从他那里读到数据的,所以在dd命令中当我们为了测试某个磁盘的读性能时候,就可以将of指定为/dev/null 这样相当从要测试的设备上读出的数据都填到了这个无底洞中。同时, /dev/null对命令行和脚本都非常的有用的。例如,当我们标准输出中有很多很多的无用信息时候而我们并不需要,这样就可以将输出重定向到/dev/null中:

禁止标准输出. 1 cat $filename >/dev/null

/dev/zero

像/dev/null一样, /dev/zero也是一个伪文件。 他产生连续不断的null的流(二进制的零流,而不是ASCII型的)。写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到。 /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件。另一个应用是为特定的目的而用零去填充一个指定大小的文件,就像我们在用dd命令为了测试磁盘写性能时候,我们可以将if指定为/dev/zero这样,他就相当源源不断的向我们要测试的设备中写入数据。

/dev/random与/dev/unrandom
dev/random和/dev/urandom是unix系统提供的产生随机数的设备,很多应用都需要使用random设备提供的随机数,比如ssh keys, SSL keys, TCP/IP sequence numbers等等。他们的区别在于,/dev/urandom生成的速度比/dev/random快。如果不能立即生成随机串,/dev/random会一直阻塞,有时会非常耗费CPU;/dev/urandom则会根据其他值立即生成一个随机串,不会阻塞。/dev/urandom生成的随机值没有/dev/random随机。大多数情况下,我们选用/dev/urando


三   fsync dsync sync区别

在用dd做读或者写的时候,应该要注意自己的使用场景,如果需要将数据写入磁盘的话

dd if=/dev/zero of=test bs=64k count=16k 是不准确的,

而 dd if=/dev/zero of=test bs=64k count=16k conv=fsync 比较准备,他在dd结束前会写到磁盘,

而dd if=/dev/zero of=test bs=64k count=4k oflag=dsync或者sync 是真正的每写一次就写一次磁盘,所以其实可以听到磁盘啪啪啪的响的。


conv=fsync Synchronize output data and metadata just before finishing 意思也就是在dd命令结束前同步data和metadata

oflag=dsync是说Use synchronized I/O for data. For the output file, this forces a physical write of output data on each write,注意用词 a physical write of output data on each write,那就是他是每一次写都得等到这一次写写到了磁盘才进行下一个写,也就是如果我们使用dd写100次,每次写都是写到磁盘后才进行下一次写的操作

dd如何绕开cache
如果要规避掉文件系统cache,直接读写,不使用buffer cache,需做这样的设置
iflag=direct,nonblock
oflag=direct,nonblock
iflag=cio
oflag=cio
direct 模式就是把写入请求直接封装成io 指令发到磁盘
非direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘

(参考:http://blog.csdn.net/menogen/article/details/38059671)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值