学习啦>学习电脑>操作系统>Linux教程>

Linux怎么制作可启动img/iso镜像文件

孙胜龙分享

  img/iso文件是镜像文件,在Linux系统操作中有时需要制作镜像文件,那么制作镜像文件的方法有哪些呢?下面学习啦小编就给大家介绍下如何下Linux下制作可启动img/iso文件。

  制作镜像文件有三种方法,cp, cat, dd 和其它专用工具。cp ,cat 和 dd都可以从设备复制文件来创建镜像。而 dd 命令更为强大,可以通过指定块大小,块多少来直接创建镜像。

  IMG 文件:

  因为cp, cat 只能从设备来制作镜像,但又没有专用工具来做 IMG 文件,故这里用 dd 命令来制作 IMG 文件。

  1,制作

  dd if=/dev/zero of=fdimage.img count=2880

  or

  dd if=/dev/zero of=fdimage.img bs=1024 count=1440

  2,格式化

  mkfs.msdos fdimage.img

  3,修改

  可以用下面的命令 mount 后,可直接修改

  mount -o loop *.img /mnt

  4,可启动

  因为制作可启动镜像一定会用到虚拟机,推荐用 Virtualbox,先到网上下个 DOS 启动盘来引导。用 DOS 的 sys 命令传递系统。推荐使用 FreeDOS,属自由软件。也可用 dd 命令 来传递引导引导信息,并复制启动启动时所需文件来做启动盘。以 FreeDOS 为例,传递启动信息用以下命令,其中下载的启动盘为 balder10.img 文件

  dd if=balder10.img of=fdimage.img bs=512 count=1 conv=notrunc

  多系统用 grub4dos,

  1),用 grub.exe 引导多系统

  2),安装 grub 到MBR,用 grldr 来引导多系统。当然也可用同上面一样的办法用 dd 直接写入引导信息。

  bootlace.com --floppy --chs 0x00

  注:才发现用 dd 命令只能从逻辑扇区开始 copy,先前我想可否用 dd 来将 grldr.mbr 写入 u 盘,我用自己的 U 盘试了,结果不能打开了。因为我的 U 盘为 fat16 格式,逻辑扇区开始是OBR,接着是FAT表,结果把 FAT1 表给盖了,那时还没有想到还有 FAT2 呢,就格了,现在想起来郁闷啊,好多东西都没有了。

  为什么软盘可以呢,因为它就没有前面的63个扇区,直接从逻辑0扇区开始的。

  ISO 文件:

  因为文件系统的关系,就不能用 dd 来直接做 ISO 镜像了(当然,它还是可以从设备制作 ISO 镜像)。 ISO 文件的制作有专用工具,

  1,制作

  mkisofs -r -o cdimage.iso /home/XXX/cddir

  2,格式化

  用mkiso制作的 iso 已有文件系统 iso9660

  3,可启动

  无论是引导单系统还是引导多系统都还是用 mkisofs 这个工具,只是加载到光盘的 boot loader 不一样而已。当然也可以将 DOS 的引导器 (也就是它的引导扇区) 或 windows 的引导器 ( XP 系统的是 ntldr ) 放入让光盘引导。下面只讨论 grub4dos 的使用

  1),用 grub.exe 引导多系统

  用 DOS 加载 grub.exe 引导多系统

  2),将 grub 安装到光盘 MBR

  在制作时可用下面的命令直接生成可启动镜像,其中 grldr, menu.lst 要放在 cddir 目录下,也就是在 cd 根目录。

  mkisofs -R -b grldr -no-emul-boot -boot-load-seg 0x1000 -o cdimage.iso cddir

  mkisofs -R -b grldr -no-emul-boot -boot-load-size 4 -o cdimage.iso cddir

  PS,下面给出 dd 命令和 mkisofs 参数说明

  dd (convert and copy files)

  dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

  dd 的主要选项:

  指定数字的地方若以下列字符结尾乘以相应的数字:

  b=512, c=1, k=1024, w=2, xm=number m

  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

307982