目录
PC-style floppy disks work mostly like other disk devices like hard disks, except that you need to low-level format them first. To use an common 1440 KB floppy in the first floppy drive, first (as root) format it:
# fdformat -f /dev/rfd0a
Then create a single partition on the disk using disklabel(8):
# disklabel -rw /dev/rfd0a floppy3
Creating a small filesystem optimized for space:
# newfs -m 0 -o space -i 16384 -c 80 /dev/rfd0a
Now the floppy disk can be mounted like any other disk. Or if you already have a floppy disk with an MS-DOS filesystem on it that you just want to access from NetBSD, you can just do something like this:
# mount -t msdos /dev/fd0a /mnt
However, rather than using floppies like normal (bigger) disks, it is often more convenient to bypass the filesystem altogether and just splat an archive of files directly to the raw device. E.g.:
# tar cvfz /dev/rfd0a file1 file2 ...
A variation of this can also be done with MS-DOS floppies using
the sysutils/mtools package which
has the benefit of not going through the kernel buffer cache
and thus not being exposed to the danger of the floppy being
removed while a filesystem is mounted on it.
检查你的系统是否有ZIP磁盘:
#dmesg | grep -i zipsd0 at atapibus0 drive 1: <IOMEGA ZIP 100 ATAPI, , 14.A> type 0 direct removable
这就表示你有一个被认作sd0的ZIP磁盘,对它的表示跟其他SCSI磁盘一样。当然,ZIP不是SCSI,而是ATAPI设备。不过SCSI的ZIP磁盘也会被认出的。上面的磁盘被标为”可移动的“,这就表示你可以把他弹出:
#eject sd0
插入ZIP磁盘
检查ZIP盘上的分区:
#disklabel sd0#/dev/rsd0d: type: ATAPI ... 8 partitions:#size offset fstype [fsize bsize cpg] d: 196608 0 unused 0 0 # (Cyl. 0 - 95) h: 196576 32 MSDOS # (Cyl. 0*- 95) disklabel: boot block size 0 disklabel: super block size 0
如同i386,它代表整个磁盘。
这个就是你要的,可以看出,它是msdos文件系统。
使用/dev/sd0h来操作这个ZIP分区
挂载:
#mount -t msdos /dev/sd0h /mnt
存取文件:
#ls -la /mnttotal 40809 drwxr-xr-x 1 root wheel 16384 Dec 31 1979 . drwxr-xr-x 28 root wheel 1024 Aug 2 22:06 .. -rwxr-xr-x 1 root wheel 1474560 Feb 23 1999 boot1.fs -rwxr-xr-x 1 root wheel 1474560 Feb 23 1999 boot2.fs -rwxr-xr-x 1 root wheel 548864 Feb 23 1999 boot3.fs -rwxr-xr-x 1 root wheel 38271173 Feb 23 1999 netbsd19990223.tar.gz
卸载:
#umount /mnt#
弹出:
#eject sd0#
数据CD可以包含任意的程序文件、声音(mp3, wav)、电影(mp3, quictime)、源代码和文本文件等等。在实际存取他们之前,CD首先应当被挂载到一个目录中去,这跟硬盘一样。硬盘有不同的文件系统(ffs, lfs, ext2fs, ...),CD也有它自己的文件系统──”cd9660“。NetBSD的cd9660文件系统可以同时处理带有和不带有Rockridge与Joliet扩展的CD。
SCSI和IDE(ATAPI)的CD设备都被命名为/dev/cd0a。
有了上述信息,就可以开始了:
检查你的系统是否有CD:
#dmesg | grep ^cdcd0 at atapibus0 drive 0: <CD-R/RW RW8040A, , 1.12> type 5 cdrom removable cd0: 32-bit data port cd0: drive supports PIO mode 4, DMA mode 0 cd0(pciide0:1:0): using PIO mode 0, DMA mode 0 (using DMA data transfers)
这里表示我们有一个CD驱动器:”cd0“。它是IDE/ATAPI接口的,接在atapibus0上。显然这个驱动器(准确的说是它里面的介质)是可移动的,当然它也就可以被弹出了。
插入CD
手动挂载:
#mount -t cd9660 /dev/cd0a /mnt#
这个命令不会输出任何东西。它指导系统使用”cd9660“文件系统将/dev/cd0a这个CD挂载到/mnt上。挂载点”/mnt“为目录且必须存在。
看CD的内容:
#ls /mntINSTALL.html INSTALL.ps TRANS.TBL boot.catalog INSTALL.more INSTALL.txt binary installation#
Everything looks fine! This is a NetBSD CD, of course. :)
卸载:
#umount /mnt#
如果CD仍然在读取(比如其他某个shell还在用),上述命令不起作用。如果你关机,CD会被自动卸载,所以别慌。
在/etc/fstab里添上一项:
如果你不想每次都完整的输入”mount“命令一次的话,可以把大多数东西都放到/etc/fstab的一行里面去:
# Device mountpoint filesystem mount options /dev/cd0a /cdrom cd9660 ro,noauto
一定要确认你的挂载点,例子中的/cdrom,存在:
#mkdir /cdrom#
现在可以用以下方法挂载CD:
#mount /cdrom#
存取数据和卸载的方法不变
由于”noauto"选项,CD不会在机器启动时被挂载。这个选项在你不是一直让光驱里面有CD的时候很有用,参见mount(8)和mount_cd9660(8)用以获取其他有用的选项。
弹出CD:
#eject cd0#
如果CD此时还在被挂载着,那么系统会先试着卸载,然后才弹出。
使用mscdlabel(8)向CD添加轨道,然后使用合适的设备节点挂载你所要的轨道,你可能需要手动创建/dev中的相应的设备节点。例如:
#mscdlabel cd1track (ctl=4) at sector 142312 adding as 'a' track (ctl=4) at sector 0 adding as 'b'#ls -l /dev/cd1bls: /dev/cd1b: No such file or directory#cd /dev#ls -l cd1*brw-r----- 1 root operator 6, 8 Mar 18 21:55 cd1a brw-r----- 1 root operator 6, 11 Mar 18 21:55 cd1d#mknod cd1b b 6 9
这就创建了/dev/cd1b,确信你处理了你所创建的设备节点的权限:
#ls -l cd1*brw-r----- 1 root operator 6, 8 Mar 18 21:55 cd1a brw-r--r-- 1 root wheel 6, 9 Mar 18 22:23 cd1b brw-r----- 1 root operator 6, 11 Mar 18 21:55 cd1d#chgrp operator cd1b#chmod 640 cd1b#ls -l cd1*brw-r----- 1 root operator 6, 8 Mar 18 21:55 cd1a brw-r----- 1 root operator 6, 9 Mar 18 22:24 cd1b brw-r----- 1 root operator 6, 11 Mar 18 21:55 cd1d
现在就可以挂载了。
#mount /dev/cd1b /mnt
默认下,NetBSD只允许“root”挂载文件系统。如果想让任意的人都可如此,执行以下方法:
给同组和其他用户访问该节点的权限
# chmod go+rw /dev/cd0a
要求NetBSD允许用户挂载
# sysctl -w vfs.generic.usermount=1
注意该方法适用于所有文件系统,不止是使用cd9660的CD。
另外,要可以在此后执行挂载命令,用户还必须用后挂载点的权限。所以,参考以下实例:
$cd $HOME$mkdir cdrom$mount -t cd9660 /dev/cd0a `pwd`/cdrom
有时侯,需要在刻录CD之前先挂载ISO9660镜像文件,这样就可以检查它的内部文件或者将文件拷贝出来。如果你是Linux用户,你知道这需要使用loop这个特殊的文件系统。NetBSD则使用vnode伪盘。
我们会用一个例子来演示。假设你在主目录有一个ISO镜像,叫“mycd.iso”:
首先配置新的vnode,指向ISO文件:
#vnconfig -c vnd0 ~/mycd.iso
现在,挂载该vnode:
#mount -t cd9660 /dev/vnd0a /mnt
呵呵,镜像内容已经躺在/mnt里面了,去那个目录探险吧!
用完之后,卸载这个镜像:
#umount /mnt
最后,还原vnode配置:
#vnconfig -u vnd0
注意此方法适用于任意包含文件系统的文件,不止ISO镜像。
参考vnd(4)和vnconfig(8)以获得更多的信息。
想像很多DVD播放器一样播放MPEG图像的话,像挂载其他普通(数据)CD一样先挂载CD(参考Section 12.3, “Reading data CDs with NetBSD”),然后使用graphics/mtv、multimedia/xine-ui、multimedia/mplayer或者multimedia/gmplayer等软件包(package)来播放。
有两种方法处理音乐CD:
对那些内置CDROM,告诉CD驱动器向耳机或声卡播放。这需要cdplay(1)、audio/xmcd或者audio/kdemultimedia3中的“kscd”等软件包(package),还需要mixerctl(1)、audio/xmix、audio/xmmix、基于鼠标的audio/cam或者包含在audio/kdemultimedia中的“kmix”等混音器程序。
它们通常可以适应各种SCSI和IDE (ATAPI)CDROM、CDRW和DVD。
以二进制形式而非数模转换后回放来读取(rip)音轨:
对大多数ATAPI、SCSI和部分CDROM而言,可以使用audio/cdparanoia。cdparanoia可以把数据保存为文件或者以WAV、AIFF、AIFF-C或者原始格式发送到标准输出。当前NetBSD版本的cdparanoia需要-g选项。以下示例展示了将第2音轨保存为WAV文件:
$cdparanoia -g /dev/rcd0d 2 track-02.wav
如果要把CD整个存下来,cdparanoia的批处理模式很管用:
$cdparanoia -g /dev/rcd0d -B
对于ATAPI或者SCSI的CD-ROM,也可以使用audio/cdd。要保存音轨2,输入:
#cdd -t 2 `pwd`
这会在当前目录输出一个叫track-02.cda的文件。
对于SCSI的CD-ROMS,可以使用audio/tosha。保存音轨2就输入:
#tosha -d-t 2 -o track-02.cdaCD-ROM-device
这些数据可以随后被处理。比如压缩成MP3(参考Section 12.9, “Creating an MP3 (MPEG layer 3) file from an audio CD”)或者再刻录成CD(参考Section 12.11, “Using a CD-R writer to create audio CDs”)。
基本步骤是从音乐CD上抓取MP3文件,这需要来自NetBSD packages collection)的一些程序:
提取(rip)音乐CD数据,参见Section 12.8, “Using audio CDs with NetBSD”。
将CD数据转换为WAV格式。只有你的抓取工具(比如tosha, cdd)没干这项工作时,你才需要这一步!
使用audio/sox,输入:
$ sox -s -w -c 2 -r 44100 -t cdr track-02.cda track-02.wav
这将原始CD格式的track-02.cda转换为WAV格式的track-02.wav,参数是16位双声道44100kHz采样率。
把WAV压缩成为MP3
使用audio/bladeenc,输入:
$ bladeenc -128 -QUIT track-02.wav
这会以128kBit/sec的压缩率把track-02.wav压缩为track-02.mp3。bladeenc的文档更详细的描述了压缩率。
使用audio/lame,输入:
$ lame -p -o -v -V 5 -h track-02.wav track-02.mp3
根据你的品位和硬件,你可能会选择更低的品质。
做好的MP3文件可以使用audio/gqmpeg、audio/maplay、audio/mpg123和audio/splay中的任意一个播放。
刻录CD包含两步:首先,生成用来刻录的包含数据的”映象“。
读取一个已经做好的ISO镜像
#dd if=/dev/rcd0a of=filename.iso bs=2k#
你也可以自己做ISO镜像:
生成ISO镜像
把所有想放到CD中的数据放到一个目录中,然后生成ISO镜像。镜像使用ISO9660格式存储这些数据。基本的ISO9660格式只能使用8+3的文件名(最多8字符文件名,加最多3字符扩展名),由于这不适应Unix文件,人们引入了”Rockridge Extension“格式来存储长文件名(微软使用另一个叫Joliet的格式)。
使用mkisofs命令创建ISO镜像,它是sysutils/cdrtools的一部分。
比如,你的数据在/usr/tmp/data,生成镜像/usr/tmp/data.iso就需要以下命令:
$cd /usr/tmp$mkisofs -o data.iso -r data Using NETBS000.GZ;1 for data/binary/kernel/netbsd.INSTALL.gz (netbsd.INSTALL_TINY.gz) Using NETBS001.GZ;1 for data/binary/kernel/netbsd.GENERIC.gz (netbsd.GENERIC_TINY.gz) 5.92% done, estimate finish Wed Sep 13 21:28:11 2000 11.83% done, estimate finish Wed Sep 13 21:28:03 2000 17.74% done, estimate finish Wed Sep 13 21:28:00 2000 23.64% done, estimate finish Wed Sep 13 21:28:03 2000 ... 88.64% done, estimate finish Wed Sep 13 21:27:55 2000 94.53% done, estimate finish Wed Sep 13 21:27:55 2000 Total translation table size: 0 Total rockridge attributes bytes: 5395 Total directory bytes: 16384 Path table size(bytes): 110 Max brk space used 153c4 84625 extents written (165 Mb)$
请参考mkisofs(8)手册以获取更多的信息。Bootable CD ROM How-To描述了如何生成可引导光盘。
将ISO镜像刻录到CD-R
有了ISO镜像文件,只需要把它刻录到CD就可以了。这需要来自sysutils/cdrtools的”cdrecord“。插入空白CD-R,然后执行:
#cdrecord -v dev=/dev/rcd0d data.iso...#
运行该命令后,”cdrecord“会显示关于你的驱动器、光盘和要刻录的镜像的很多信息。然后他会做10秒倒数,这是你停止刻录的最后机会(方法是按^C)。如果你不放弃刻录,程序会把整个镜像刻录到CD然后返回提示符。
注意cdrecord(8)在SCSI和IDE (ATAPI)驱动器上都能工作。
测试
把刚刚刻录好的CD挂载上,然后读一读测试,参考12.3, “读取数据CD”.
如果想要备份你的音乐CD,你可以先保存(”ripping“)成音轨,然后刻录到空CD。当然,你每个CD保存一条音轨然后刻录在一起也是可以的,这就是你自己的CD!
以下是步骤:
先提取以得到.wav文件,参考12.8, “使用音乐CD”
使用来自sysutils/cdrtools的cdrecord命令刻录:
#cdrecord -v dev=/dev/rcd0d -audio -pad *.wav
如果你已经把音乐CD都变成了MP3,然后想为自己的车(假设哈)做合辑CD,首先你得把.mp3转成.wav,然后像刻录普通CD一样刻录。
以下是步骤:
从.mp3创建.wav:
$mpg123 -w foo.wav foo.mp3
对所有想要得刻录的mp3文件执行此过程,.wav的文件名不用太关心。
如12.11, “使用CD-R刻录音乐CD”所述把.wav刻录了。
只拷贝CD而不引入任何中间过程,可是使用cdrdao:
#cdrdao read-cd --device /dev/rcd0d data.toc#cdrdao write --device /dev/rcd1d data.toc
如果你同时有CD-ROM和CD-R驱动器的话,执行以下命令可以直接复制数据CD:
#cdrecord dev=/dev/rcd1d /dev/rcd0d
这里CD-ROM (cd0)包含你要复制的CD,CD-R (cd1)包含空CD。注意这只适用于包含数据的光盘,不能用于音乐CD!实际工作时,加入”speed=8“可以加快复制速度。
你可以把CD-RW当作CD-R(参考12.10, “使用CD-R刻录CD”),使用mkisofs(8)创建镜像文件,然后用cdrecord(8)在CD-RW介质里面刻录。
如果你要把CD-RW清空,可以使用cdrecord的”blank“选项:
#cdrecord dev=/dev/rcd0d blank=fast
还有其他清空CD-RW的方法,使用cdrecord(8)的”blank=help“可以得到这些方法的列表。参考cdrecord(8)的手册以获取更多信息。
当前,NetBSD使用用于CD-ROM的ISO9660来支持DVD。DVD上新的UDF文件系统不被支持,不过几乎所有DVD都包含ISO9660格式。DVD、DivX和许多avi文件可以使用multimedia/ogle或者multimedia/gmplayer播放。
要制作DVD,参考 postings about growisofs和this article about recording CDs and DVDs with NetBSD。
创建ISO镜像并保存校验码:
#readcd dev=/dev/cd0d f=/tmp/cd.iso
也可以使用dd(1):
#dd if=/dev/cd0d of=/tmp/cd.iso bs=2048
如果CD有错误,可以如下恢复其余数据:
#dd if=/dev/cd0d of=/tmp/cd.iso bs=2048 conv=noerror
要从已挂载的数据CD创建ISO镜像,首先挂载:
#mount -t cd9660 -r /dev/cd0d /mnt/cdrom
然后,得到镜像:
#mkhybrid -v -l -J -R -o /tmp/my_cd.iso /mnt/cdrom/