3.12 生成ISO文件及混合ISO

ISO镜像是一种存档格式,它存储了如CD ROM、DVD ROM等光盘的精确存储镜像内容。我们通常都是用ISO镜像刻录光盘。但如果你想创建一个光盘的镜像,又该如何做呢?为此,我们需要制作一个光盘的ISO镜像文件。很多人都是依赖于第三方工具来创建ISO镜像。其实,若使用命令行的话,这也就是一行命令就可以搞定的事儿。

很多人并不知道可引导光盘与不可引导光盘之间的区别。可引导光盘自身具备引导能力,也可以运行操作系统或其他软件。不可引导光盘则做不到这些。人们通常会做的一件事是:将可引导光盘中的内容复制到另一个位置作为副本,然后用副本刻录CD。但是这样刻出的光盘并没有引导能力。要想保留光盘的可引导性,应该将它以磁盘镜像或是ISO文件的形式进行复制。

现在,多数人会用闪存或硬盘作为光盘的代替品。当我们将一个可引导的ISO文件写入闪存后,它却再也没法引导了,除非我们使用一种专门设计用于闪存设备的混合ISO镜像。

这则攻略将带你认识ISO镜像以及它的处理方法。

3.12.1 预备知识

本书已经提到过多次,UNIX是将一切都当做文件来处理的。一个设备也是一个文件。那应该怎样复制一个设备的精确镜像呢?那就需要读出所有的数据,并将其写入另外一个文件,对吧?

正如我们所知,cat命令可以用来读取任何数据,重定向可以用来写入文件。

3.12.2 实战演练

用下面的命令从 /dev/cdrom创建一个ISO镜像:

  1. # cat /dev/cdrom > image.iso

这条命令完全可以奏效,它从设备中读出所有的数据并将其写入一个ISO镜像。

cat命令创建ISO镜像算是一个小技巧。不过,创建ISO镜像最好的方法是使用dd工具。

  1. # dd if=/dev/cdrom of=image.iso

mkisofs命令用于创建ISO文件系统。可以用cdrecord之类的工具将mkisofs的输出文件直接刻录到CD ROM或DVD ROM上。我们可以将需要的所有文件放入同一个目录中,然后用mkisofs将整个目录的内容写入一个ISO文件。方法如下:

  1. $ mkisofs -V "Label" -o image.iso source_dir/

mkisofs命令中的选项 -o指定了ISO文件的路径。source_dir是作为ISO文件内容来源的目录路径,选项 -V指定了ISO文件的卷标。

3.12.3 补充内容

让我们再多学一些有关ISO文件的命令和技术。

  • 能够启动闪存或硬盘的混合ISO

通常情况下,不能将可引导的ISO文件写入USB设备来引导操作系统。但是有一种被称为“混合ISO”的特殊的ISO文件可以做到这一切。

我们可以用isohybrid命令把标准ISO文件转换成混合ISO。isohybrid是一个比较新的工具,大多数的Linux发行版中还未包含这个工具。你可以从http://syslinux.zytor.com下载syslinux软件包。

来看看下面的命令:

  1. # isohybrid image.iso

执行这个命令,我们将获得一个名为image.iso的混合ISO,它可用于写入USB存储设备。

将ISO写入USB存储设备:

  1. # dd if=image.iso of=/dev/sdb1

你可以用适当的设备代替sdb1

或者使用cat命令:

  1. # cat image.iso > /dev/sdb1
  • 用命令行刻录ISO

cdrecord命令可以用来将ISO文件刻入CD ROM或DVD ROM。刻录CD ROM的方法如下:

  1. # cdrecord -v dev=/dev/cdrom image.iso

还有一些其他的选项,如下所示。

  • 我们可以用-speed选项指定刻录速度:
  1. -speed SPEED

例如:

  1. # cdrecord -v dev=/dev/cdrom image.iso -speed 8

参数8指定其刻录速度为8x

  • 刻录CD ROM时也可以采用多区段(multisession)方式,这样就能在一张光盘上分多次刻录数据。多区段刻录需要使用 -multi选项:
  1. # cdrecord -v dev=/dev/cdrom image.iso -multi
  • 玩转CD ROM托盘

想找点乐子,不妨试试下面的命令吧。

  • $ eject

这个命令用以弹出光驱托盘。

  • $ eject -t

这个命令用以合上光驱托盘。

不妨试着写一个可以让托盘开关N次的循环吧。