📄 creating-cds.html
字号:
<li><p>使用 <tt class="COMMAND">cdrecord</tt> 来写 <tt class="FILENAME">.wav</tt> 文件。</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">cdrecord -v dev=<varclass="REPLACEABLE">2,0</var> -dao -useinfo *.wav</kbd></pre><p>确保 <var class="REPLACEABLE">2.0</var> 被适当的 设置,像 <ahref="creating-cds.html#CDRECORD">µÚ 16.6.4 节</a> 中描述的那样。</p></li></ol></div><div class="PROCEDURE"><p><b>ATAPI 驱动器</b></p><ol type="1"><li><p>ATAPI CD 驱动用 <tt class="FILENAME">/dev/acd<var class="REPLACEABLE">d</var>t<varclass="REPLACEABLE">nn</var></tt>表示每个轨道, 这里 <var class="REPLACEABLE">d</var>是驱动器号, <var class="REPLACEABLE">nn</var> 是轨道号,由两位小数位组成,省略前缀零。所以第一个盘片上的第一个轨道就是 <tt class="FILENAME">/dev/acd0t01</tt>,第二个就是 <ttclass="FILENAME">/dev/acd0t02</tt>,第三个就是 <ttclass="FILENAME">/dev/acd0t03</tt>,等等。</p><p>确保在 <tt class="FILENAME">/dev</tt> 中存在合适的文件。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">cd /dev</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">sh MAKEDEV acd0t99</kbd></pre><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 在 FreeBSD 5.0 中,<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span> 会为您自动创建 并管理 <ttclass="FILENAME">/dev</tt> 中的节点, 所以不再需要使用 <ttclass="COMMAND">MAKEDEV</tt>。</p></blockquote></div></li><li><p>使用 <span class="CITEREFENTRY"><span class="REFENTRYTITLE">dd</span>(1)</span>解压缩每个轨道。当解压缩文件的时候你也必须使用 一个特殊的块大小。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">dd if=/dev/acd0t01 of=track1.cdr bs=2352</kbd><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">dd if=/dev/acd0t02 of=track2.cdr bs=2352</kbd>...</pre></li><li><p>使用 <tt class="COMMAND">burncd</tt> 把解压缩的文件刻录到光盘上。你必须指定这些文件是音频文件,这样 <tt class="COMMAND">burncd</tt> 会在刻录完成时 结束光盘。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">burncd -f <varclass="REPLACEABLE">/dev/acd0</var> audio track1.cdr track2.cdr <varclass="REPLACEABLE">...</var> fixate</kbd></pre></li></ol></div></div><div class="SECT2"><h2 class="SECT2"><a id="IMAGING-CD" name="IMAGING-CD">16.6.6. 复制数据 CD</a></h2><p>你可以把数据 CD 复制成一个与之等价的镜像文件, 镜像文件可以使用 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">mkisofs</span>(8)</span>创建,你可以使用这个工具复制 任何数据 CD。这里给出的例子假定你的 CDROM 设备 <ttclass="DEVICENAME">acd0</tt>。代替你 正确的 CDROM 设备。在 FreeBSD 4.X 下面,字符<var class="LITERAL">c</var> 必须被附加到 设备名的结尾处来指明是整个分区, 或者对于CDROM,指明是整个光盘。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">dd if=/dev/acd0 of=file.iso bs=2048</kbd></pre><p>现在你有一个镜像文件了,你可以像上面描述的那样把它刻录成 CD。</p></div><div class="SECT2"><h2 class="SECT2"><a id="MOUNTING-CD" name="MOUNTING-CD">16.6.7. 使用数据 CD</a></h2><p>现在你已经创建了一张标准的数据 CDROM,你或许想要 挂载来读取上面的设备。默认情况下,<span class="CITEREFENTRY"><span class="REFENTRYTITLE">mount</span>(8)</span>假定文件系统是 <var class="LITERAL">ufs</var> 类型的。如果你尝试下面的命令:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount /dev/cd0 /mnt</kbd></pre><p>你会得到一条 ``<tt class="ERRORNAME">Incorrect super block</tt>''的错误信息,没有挂载成功。CDROM 不是 <var class="LITERAL">UFS</var>文件系统,所以试图这样挂载它是 是不行的。你需要告诉 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">mount</span>(8)</span> 文件系统是 <varclass="LITERAL">ISO9660</var> 类型的,这样 就可以了。只需要指定 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">mount</span>(8)</span> 的 <varclass="OPTION">-t cd9660</var> 选项。例如, 如果你想要挂载 CDROM 设备, <ttclass="FILENAME">/dev/cd0</tt> 到 <tt class="FILENAME">/mnt</tt> 目录,你需要执行:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount -t cd9660 /dev/cd0 /mnt</kbd></pre><p>注意你的设备名 (在这个例子中是 <tt class="FILENAME">/dev/cd0</tt>)可能有所不同,取决于你的 CDROM 使用的接口。另外, <var class="OPTION">-t cd9660</var>选项等同于执行 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">mount_cd9660</span>(8)</span>。上面的例子可以缩短 为:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount_cd9660 /dev/cd0 /mnt</kbd></pre><p>用这种方法你基本可以使用任何买到的数据 CDROM。 然而某些有 ISO 9660扩展的光盘可能会行为古怪。 例如,joliet 光盘用两个字节的 unicode 字符存储所有的文件名。FreeBSD 内核还不能识别 unicode (重要!),所以非英语字符被做了有问题的标记。(如果你正在运行 FreeBSD 4.3 或者以后的版本, CD9660 驱动包含了加载合适的 unicode换算表的方法。 一些常用编码的模块可以通过 <ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/sysutils/cd9660_unicode/pkg-descr"><ttclass="FILENAME">sysutils/cd9660_unicode</tt></a> port 来安装。)</p><p>有时候,当你试图挂载 CDROM 的时候,会得到一条 ``<tt class="ERRORNAME">Device notconfigured</tt>'' 的错误信息。这通常 表明 CDROM 驱动认为托盘里没有光盘,或者驱动器在总线上不可见。 需要几秒钟时间等待 CDROM 驱动器辨别已经接到反馈的信息,请耐心等待。</p><p>有时候,SCSI CDROM 可能会找不到,因为没有足够的 时间来应答总线的 reset信号。如果你有一个 SCSI CDROM 请将下面的选项添加到你的内核 配置文件并<ahref="kernelconfig-building.html">重建你的内核</a>。</p><pre class="PROGRAMLISTING">options SCSI_DELAY=15000</pre><p>这个告诉你的 SCSI 总线启动时暂停 15 秒钟, 给你的 CDROM 驱动器足够的机会来应答 总线reset 信号。</p></div><div class="SECT2"><h2 class="SECT2"><a id="RAWDATA-CD" name="RAWDATA-CD">16.6.8. 刻录原始数据 CD</a></h2><p>你可以选择把一个文件目录刻录到 CD 上而不用 创建 ISO 9660文件系统。有些人这么做是为了备份的 目的。这个运行的比刻录一个标准 CD 速度要快的多:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate</kbd></pre><p>要重新找回这样刻录到 CD 上的数据, 你必须从原始设备节点读取数据:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">tar xzvf /dev/acd1</kbd></pre><p>你不能像挂载一个通常的 CDROM 一样挂载这张光盘。 这样的 CDROM 也不能在除了 FreeBSD之外的任何操作系统上读出。 如果你想要可以挂载 CD,或者和另一种操作系统共享数据,你必须像上面描述的那样使用 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">mkisofs</span>(8)</span>。</p></div><div class="SECT2"><h2 class="SECT2"><a id="ATAPICAM" name="ATAPICAM">16.6.9. 使用 ATAPI/CAM 驱动</a></h2><i class="AUTHORGROUP"><span class="CONTRIB">Contributed by</span> Marc Fonvieille.</i> <p>这个驱动允许 ATAPI 设备(CD-ROM, CD-RW, DVD 驱动器等...)通过 SCSI 子系统访问,这样允许使用像 <ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/sysutils/cdrdao/pkg-descr"><ttclass="FILENAME">sysutils/cdrdao</tt></a> 或者 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">cdrecord</span>(1)</span> 这样的程序。</p><p>要使用这个驱动,你需要把下面几行 添加到你的内核配置文件中:</p><pre class="PROGRAMLISTING">device atapicamdevice scbusdevice cddevice pass</pre><p>你也需要在你的内核配置文件有 下面几行:</p><pre class="PROGRAMLISTING">device ata</pre><p>这个应该已经有了。</p><p>然后重建,安装你的新内核,重新启动机器。 在启动过程中,你的刻录机会被识别,就像这样:</p><pre class="SCREEN">acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4cd0 at ata1 bus 0 target 0 lun 0cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 devicecd0: 16.000MB/s transferscd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed</pre><p>驱动器现在可以通过 <tt class="FILENAME">/dev/cd0</tt> 设备名访问了,例如要 挂载 CD-ROM到 <tt class="FILENAME">/mnt</tt>,只需要键入下面的 命令:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount -t cd9660 <varclass="REPLACEABLE">/dev/cd0</var> /mnt</kbd></pre><p>作为 <tt class="USERNAME">root</tt>,你可以运行下面的 命令来得到刻录机的 SCSI地址:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">camcontrol devlist</kbd><MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)</pre><p>这样 <var class="LITERAL">1,0,0</var> 就是 SCSI 地址了,可以被 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">cdrecord</span>(1)</span> 和其他的 SCSI程序使用。</p><p>有关 ATAPI/CAM 和 SCSI 系统的更多信息, 可以参阅 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">atapicam</span>(4)</span> 和 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">cam</span>(4)</span> 手册 页。</p></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="usb-disks.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="creating-dvds.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">USB 存储设备</td><td width="34%" align="center" valign="top"><a href="disks.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">创建和使用光学介质(DVD)</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -