加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix目录 FreeBSD 手册——19.5.创建和使用 CD

发布时间:2023-02-06 13:27:26 所属栏目:Unix 来源:
导读:  19.5.创建和使用 CD

  紧凑型光盘(Compact Disc,CD)提供了一些有别于传统磁盘的特点。它们被设计成可以连续读取,而无需等待在轨道之间移动磁头的延迟。虽然 CD 确实有轨道,但这是指要连续读取的数据部
  19.5.创建和使用 CD
 
  紧凑型光盘(Compact Disc,CD)提供了一些有别于传统磁盘的特点。它们被设计成可以连续读取,而无需等待在轨道之间移动磁头的延迟。虽然 CD 确实有轨道,但这是指要连续读取的数据部分,而不是磁盘的物理属性。ISO 9660 文件系统就是为了处理这些差异而设计的。
 
  FreeBSD ports 中提供了几个用于刻录和复制音频和数据 CD 的工具。这一章演示了几个命令行工具的使用。对于带有图形化的 CD 刻录软件,可以考虑通过软件包或 ports 安装sysutils/xcdroast[1]或sysutils/k3b[2]。
 
  19.5.1 支持的设备
 
  GENERIC内核提供了对 SCSI,USB 和 ATAPICD 读卡器和刻录机的支持。如果使用定制内核,需要在内核配置文件中出现的选项因设备的类型而异。
 
  对于 SCSI 刻录机,确保这些选项是存在的:
 
  device?scbus?#?SCSI?bus?(required?for?ATA/SCSI)
  device?da?#?Direct?Access?(disks)
  device?pass?#?Passthrough?device?(direct?ATA/SCSI?access)
  device?cd?#?needed?for?CD?and?DVD?burners
  对于 USB 刻录机,确保这些选项是存在的:
 
  device?scbus?#?SCSI?bus?(required?for?ATA/SCSI)
  device?da?#?Direct?Access?(disks)
  device?pass?#?Passthrough?device?(direct?ATA/SCSI?access)
  device?cd?#?needed?for?CD?and?DVD?burners
  device?uhci?#?provides?USB?1.x?support
  device?ohci?#?provides?USB?1.x?support
  device?ehci?#?provides?USB?2.0?support
  device?xhci?#?provides?USB?3.0?support
  device?usb?#?USB?Bus?(required)
  device?umass?#?Disks/Mass?storage?-?Requires?scbus?and?da
  对于 ATAPI 刻录机,要确保这些选项是存在的:
 
  device?ata?#?Legacy?ATA/SATA?controllers
  device?scbus?#?SCSI?bus?(required?for?ATA/SCSI)
  device?pass?#?Passthrough?device?(direct?ATA/SCSI?access)
  device?cd?#?needed?for?CD?and?DVD?burners
  注意
 
  在 10.x 之前的 FreeBSD 版本中,如果刻录机是 ATAPI 设备,在内核配置文件中还需要这一行:
 
  deviceatapicam
 
  另外,通过在/boot/loader.conf中添加以下一行,可以在启动时加载该驱动:
 
  atapicam_load="YES"
 
  需要重新启动系统,因为这个驱动程序只能在启动时被加载。
 
  为了验证 FreeBSD 是否识别该设备,执行dmesg并查找该设备的条目。在 10.x 之前的系统中,输出的第一行中的设备名称将是acd0而非cd0。
 
  %?dmesg?|?grep?cd
  cd0?at?ahcich1?bus?0?scbus1?target?0?lun?0
  cd0:?<HL-DT-ST?DVDRAM?GU70N?LT20>?Removable?CD-ROM?SCSI-0?device
  cd0:?Serial?Number?M3OD3S34152
  cd0:?150.000MB/s?transfers?(SATA?1.x,?UDMA6,?ATAPI?12bytes,?PIO?8192bytes)
  cd0:?Attempt?to?query?device?size?failed:?NOT?READY,?Medium?not?present?-?tray?closed
  19.5.2 刻录 CD
 
  在 FreeBSD 中,可以用cdrecord来刻录 CD。这个命令通过软件包或 portsysutils/cdrtools[3]来安装。
 
  虽然cdrecord有许多选项,但基本用法很简单。指定要刻录的 ISO 文件的名称,如果系统有多个刻录机设备,则指定要使用的设备的名称:
 
  #?cdrecord?dev=device?imagefile.iso
  为了确定刻录机的设备名称,使用-scanbus,可能的输出如下:
 
  #?cdrecord?-scanbus
  ProDVD-ProBD-Clone?3.00?(amd64-unknown-freebsd10.0)?Copyright?(C)?1995-2010?J?rg?Schilling
  Using?libscg?version?'schily-0.9'
  scsibus0:
  ????????0,0,0?????0)?'SEAGATE?'?'ST39236LW???????'?'0004'?Disk
  ????????0,1,0?????1)?'SEAGATE?'?'ST39173W????????'?'5958'?Disk
  ????????0,2,0?????2)?*
  ????????0,3,0?????3)?'iomega??'?'jaz?1GB?????????'?'J.86'?Removable?Disk
  ????????0,4,0?????4)?'NEC?????'?'CD-ROM?DRIVE:466'?'1.26'?Removable?CD-ROM
  ????????0,5,0?????5)?*
  ????????0,6,0?????6)?*
  ????????0,7,0?????7)?*
  scsibus1:
  ????????1,0,0???100)?*
  ????????1,1,0???101)?*
  ????????1,2,0???102)?*
  ????????1,3,0???103)?*
  ????????1,4,0???104)?*
  ????????1,5,0???105)?'YAMAHA??'?'CRW4260?????????'?'1.0q'?Removable?CD-ROM
  ????????1,6,0???106)?'ARTEC???'?'AM12S???????????'?'1.06'?Scanner
  ????????1,7,0???107)?*
  找到 CD 刻录机的条目,用逗号分隔的三个数字作为dev的值。在本例中,Yamaha 刻录机的设备是1,5,0,所以指定该设备的适当输入是dev=1,5,0。参考cdrecord的手册页,了解指定该值的其他方法,以及关于写入音轨和控制写入速度的信息。
 
  另外,还可以执行下面的命令来获得刻录机的设备地址:
 
  #?camcontrol?devlist
  <MATSHITA?CDRW/DVD?UJDA740?1.00>???at?scbus1?target?0?lun?0?(cd0,pass0)
 
  使用scbus、target和lun的数字值。在这个例子中,1,0,0是要使用的设备名。
 
  19.5.3 将数据写入 ISO 文件系统
 
  为了制作数据 CD,在刻录到 CD上之前必须准备好构成 CD 轨道的数据文件。在 FreeBSD 中,sysutils/cdrtools[4]安装了mkisofs,可以用它来制作一个 ISO 9660 文件系统,它是 UNIX? 文件系统中目录的镜像。最简单的用法是指定要创建的 ISO 文件的名称和要放入 ISO 9660 文件系统的文件的路径:
 
  #?mkisofs?-o?imagefile.iso?/path/to/tree
  该命令将指定路径中的文件名映射为符合标准 ISO 9660 文件系统要求的名称,并将排除那些不符合 ISO 文件系统标准的文件。
 
  有许多选项可以克服该标准所施加的限制。特别是,-R将启用 UNIX? 系统常用的 Rock Ridge 扩展,-J将启用 Microsoft? 系统使用的 Joliet 扩展。
 
  对于只在 FreeBSD 系统上使用的 CD ,可以用-U来禁用所有的文件名限制。当与-R一起使用时,它产生的文件系统镜像与指定的 FreeBSD 目录相同,即使它违反了 ISO 9660 标准。
 
  最后一个常用选项是-b。它被用来指定用于生产“El Torito”可引导 CD 的引导镜像的位置。这个选项需要一个参数,即被写入 CD 根目录的引导镜像的路径。默认情况下,mkisofs在“软盘仿真”模式下创建 ISO 镜像,因此它希望引导镜像的大小正好是 1200、1440 或 2880 KB。一些像 FreeBSD 发行镜像使用的那种引导加载器,不使用仿真模式。在这种情况下,应该使用-no-emul-boot。因此,如果/tmp/myboot包含一个可引导的 FreeBSD 系统,其启动镜像在/tmp/myboot/boot/cdboot中,这个命令将生成/tmp/bootable.iso:
 
  #?mkisofs?-R?-no-emul-boot?-b?boot/cdboot?-o?/tmp/bootable.iso?/tmp/myboot
  由此产生的 ISO 镜像可以作为闪存设备被挂载:
 
  #?mdconfig?-a?-t?vnode?-f?/tmp/bootable.iso?-u?0
  #?mount?-t?cd9660?/dev/md0?/mnt
  然后我们可以验证/mnt和/tmp/myboot是相同的。
 
  mkisofs还有许多其他选项可以用来微调其行为。详情请参考mkisofs(8)[5]。
 
  注意
 
  可以将数据 CD 复制到一个镜像文件中,该文件在功能上与用mkisofs创建的镜像文件相当。要做到这一点,使用dd,将设备名称作为输入文件,将要创建的 ISO 的名称作为输出文件:
 
  #ddif=/dev/cd0of=file.isobs=2048
 
  产生的镜像文件可以按照刻录 CD[6]中的说明刻录到 CD 上。
 
  19.5.4. 使用数据 CD
 
  ISO 被刻录到 CD 上以后,就可以通过指定文件系统类型、包含 CD 的设备名称和一个现有的挂载点来挂载它:
 
  #?mount?-t?cd9660?/dev/cd0?/mnt
  由于挂载时假定文件系统是ufs类型的,如果在挂载数据 CD 时不附带-t cd9660,将产生错误Incorrect super block。
 
  虽然任何数据 CD 都可以这样挂载,但具有某些 ISO 9660 扩展名的磁盘可能表现得很奇怪。例如,Joliet 磁盘以两字节的 Unicode 字符存储所有文件名。如果一些非英语字符显示为问号,请用-C指定本地字符集。更多信息,请参考mount_cd9660(8)[7]。
 
  注意
 
  为了使用-C进行这种字符转换,内核需要加载cd9660_iconv.ko模块。这可以通过在loader.conf中加入这一行来完成:
 
  cd9660_iconv_load="YES"
 
  然后重启机器,或者直接用kldload加载模块。
 
  当试图挂载数据 CD 时,偶尔会显示Device not configured。这通常意味着 CD 驱动器没有检测到托盘中的磁盘,或者驱动器在总线上不可见。光驱检测光盘可能需要几秒钟的时间,所以要有耐心。
 
  有时,SCSI CD 驱动器可能会被遗漏unix目录,因为它没有足够的时间来应答总线复位。为了解决这个问题,可以创建一个定制内核,增加默认的 SCSI 延迟。在定制的内核配置文件中增加以下选项,并按照“编译与安装定制内核”[8]的说明重建内核:
 
  options?SCSI_DELAY=15000
  这让 SCSI 总线在启动过程中暂停 15 秒,以便给 CD 驱动器一切可能的机会来应答总线复位。
 
  注意
 
  可以直接将文件刻录到 CD,而不创建 ISO 9660 文件系统。这就是所谓的刻录原始数据 CD,有些人为了备份会这样做。
 
  这种类型的磁盘不能像普通的数据 CD 一样被挂载。为了检索刻录到这种 CD 上的数据,必须从原始设备节点上读取数据。例如,这个命令将把位于第二个 CD 设备上的压缩 tar 文件提取到当前工作目录中:
 
  #tarxzvf/dev/cd1
 
  为了挂载数据 CD,必须使用mkisofs写入数据。
 
  19.5.5. 复制音频 CD
 
  要复制一张音频 CD,把 CD 上的音频数据提取成一系列的文件,然后把这些文件写入一张空白 CD。
 
  本节说明了如何复制和刻录一张音频 CD。如果 FreeBSD 的版本低于 10.0,并且设备是 ATAPI 总线,必须首先加载atapicam模块。
 
  复制一张音频 CD 的过程
 
  1.软件包或 portsysutils/cdrtools[9]安装了cdda2wav。这个命令可以用来提取所有的音轨,每个音轨都写在当前工作目录下的一个单独的 WAV 文件中:
 
  %cdda2wav-vall-B-Owav
 
  如果系统上只有一个 CD 设备,则不需要指定设备名。参考cdda2wav手册中关于如何指定一个设备的说明,并了解更多关于这个命令的其他选项。
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章