在Linux 下制作启动盘以及dd命令使用
1、在Linux 下制作启动盘,可使用如下命令:
dd if=boot.img of=/dev/fd0 bs=1440k
这个命令的作用是将名为"boot.img"的文件写入到软盘驱动器(/dev/fd0
)中。其中:
dd
是一个用于复制和转换文件的命令。if=boot.img
指定了输入文件的路径和名称,即要复制的源文件为"boot.img"。of=/dev/fd0
指定了输出文件的路径和名称,即要将源文件复制到的目标位置为软盘驱动器(/dev/fd0
)。bs=1440k
指定了块大小为1440KB,即每次复制的数据块大小为1440KB。
可以不指定bs参数。如果未指定bs参数,dd命令将使用默认的块大小进行复制操作。默认的块大小可能因操作系统和dd命令的版本而异。
在某些情况下,使用默认的块大小可能是合适的,特别是当您不需要显式地控制复制操作的块大小时。dd命令会根据默认块大小自动进行复制。
然而,如果您希望显式地指定复制操作的块大小,可以使用bs参数来设置。通过指定适当的块大小,您可以根据需要进行性能优化或满足特定的要求。
请注意,在执行dd命令时,无论是否指定bs参数,都要小心确保目标位置上的数据不会被意外覆盖或损坏。在使用dd命令之前,请确保您了解其作用并谨慎操作。
综合起来,先通过ftp上传"boot.img"文件即镜像文件以及新建磁盘用于存放启动盘文件(虚拟机的话添加硬盘就行,镜像传过去后把镜像盘意外的盘移除即可直接访问系统启动盘),这个命令的作用是将"boot.img"文件的内容写入到软盘驱动器中,以便在需要时可以从软盘启动计算机或加载特定的引导程序。
请注意,执行此命令需要具有足够的权限,并且要确保目标软盘驱动器(/dev/fd0
)可用且没有重要的数据,因为该命令会覆盖目标位置上的数据。在使用此命令之前,请确保您了解其作用并谨慎操作。
2、Linux dd 命令
Linux dd 命令用于读取、转换并输出数据。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
(1)参数说明:
- if=文件名:输入文件名,默认为标准输入。即指定源文件。
- of=文件名:输出文件名,默认为标准输出。即指定目的文件。
- ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
- obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
- bs=bytes:同时设置读入/输出的块大小为bytes个字节。
- cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
- skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
- seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
- count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
- conv=<关键字>,关键字可以有以下11种:
- conversion:用指定的参数转换文件。
- ascii:转换ebcdic为ascii
- ebcdic:转换ascii为ebcdic
- ibm:转换ascii为alternate ebcdic
- block:把每一行转换为长度为cbs,不足部分用空格填充
- unblock:使每一行的长度都为cbs,不足部分用空格填充
- lcase:把大写字符转换为小写字符
- ucase:把小写字符转换为大写字符
- swap:交换输入的每对字节
- noerror:出错时不停止
- notrunc:不截短输出文件
- sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
- –help:显示帮助信息
- –version:显示版本信息
3、dd应用实例
(1)将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd bs=4M status=progress
(2)将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image
(3)将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb
(4)备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz
(5)将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb
(6)备份与恢复MBR
## 1、备份磁盘开始的512个字节大小的MBR信息到指定文件:
dd if=/dev/hda of=/root/image count=1 bs=512
# count=1指仅拷贝一个块;bs=512指块大小为512个字节。
## 2、恢复:
dd if=/root/image of=/dev/had
#将备份的MBR信息写到磁盘开始部分
(7)备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k #(即块大小为1.44M)
(8)拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 #(指定块大小为1k)
(9)拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
(10)增加swap分区文件大小
#第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
#第二步:把这个文件变成swap文件:
mkswap /swapfile
#第三步:启用这个swap文件:
swapon /swapfile
#第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile swap swap default 0 0
(11)销毁磁盘数据
dd if=/dev/urandom of=/dev/hda1
#注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
(12)测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
#通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
(13)确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
#通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
(14)修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
- 当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生
magnetic flux point
,当磁头读到这些区域时会遇到困难,并可能导致I/O错误
。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。
(15)利用netcat远程备份
dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
#在源主机上执行此命令备份/dev/hda
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
#在目的主机上执行此命令来接收数据并写入/dev/hdc
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
#以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。
#将一个很大的视频文件中的第i个字节的值改成0×41(也就是大写字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc