发信人: wlf.bbs@cs3.xmu.edu.cn (花眼狼~哀的美敦书), 信区: cnlinux
标  题: 如何在LINUX下安装CD-ROM--(7)
发信站: XMU CS BBS (Fri Jan  2 22:58:38 1998)
转信站: Lilac!ustcnews!ustcnews!sjtunews!xmucs
出  处: cs3.xmu.edu.cn

6. 常见问题与解答

6.1 没有root身份者如何挂上及卸下光碟片?


   有些mount命令支持user选项. 假设你在/etc/fstab里加入了这样一行:

/dev/sbpcd  /cdrom   iso9660     user,noauto,ro


   那麽普通使用者就可以这样挂上或卸下这台机器的资料:

% mount /cdrom
% umount /cdrom


   挂上程序将会加上一些额外选项以保持系统安全(例如:程序不准执行,
   片子上的设备档将失效(不予理会)); 在有时候这当然限制严了点.


   另一个办法就是抓usermount,它允许非root之使用者挂上/卸下可移除设备如
   软碟及CD-ROM等,但限制对其它设备的动作(如硬碟分割区).
   它在主要的文件库都有.


   在ftp.cdrom.com里有mount.c的原始码,它允许一般使用者挂上/卸下CD-ROM.
   它必需要setuid才能这麽做.

   (译注:setuid是指,将执行档执行时的权限变成和执行档所有人相同.普通执行档
   执行时权限是执行者的权限,这样的话很多程序都不能跑(如:你不能修改/etc/pa
   sswd, 所以不能变更密码.
   但如果是setuid,又是root所有的程序,执行时就有root权力,
   所以就能更改了.). 不过setuid反过来也可能是系统安全的主要漏洞)


6.2 为何我在卸下CD-ROM时电脑说:device is busy?

如果有任何程序正在存取这机器,包括它们的现行目录正在它上面,那就不能卸下.
如果你实在不晓得那个程序正在使用这片光碟,你可以像下例一样的用fuser命令:

% umount /cdrom
umount: /dev/sbpcd: device is busy
% fuser -v /cdrom
/cdrom:               USER       PID ACCESS COMMAND
                      tranter     50 ..c..  bash

6.3 我如何将CD-ROM用NFS与其它电脑共享?

你需要在/etc/exports档中加入一个项目; 请看exports(5)这份说明页.

6.4 我能用CD-ROM起动Linux吗?

由CD-ROM起动Linux的最简单方法是用开机磁片. 有一些Linux的CD-ROM
(如Yggdrasil)本身就有一片,或者你可以用在一个Linux分布(如Slackware)
里,包含必需的CD-ROM驱动程序的开机片.

在将来,如果ROM BIOS有这功能的话,也可能从ATAPI CD-ROM来开机.

(译注:若SCSI BIOS有支持,SCSI CD-ROM也是可开机的,不过目前我只知道
AHA-1542CF有支持而已,其它我不知道)

6.5 我怎样从CD唱片直接抓取数位音轨?

Heiko Eissfeldt (heiko@colossus.escape.de) 和Olaf
Kindel写了一个公用程序可以读取音讯资料,并将它存成.wav格式的声音档.这个
程序叫cdda2wav.tar.gz,可以在sunsite.unc.edu找到.

因为CD-ROM世代交替太快了,很难列出哪些CD-ROM可读取数位音乐资料. 你最好的
赌注是抓最新版的cdda2wav套件,并读它的文件.要更进一步的信息,也请看在
参考文献中的alt.cd-rom FAQ.

6.6 为什麽find命令不太正常?

在没有Rock Ridge Extension的ISO-9660光碟上,你需要在find後加上-noleaf这选项.

造成这现象的原因是每个目录档的连结数并不容易求得,所以我们设成2. 然而
find程序却做了一个最佳化,它对每个目录只检查(i_links-2)个子目录,其它都当
做普通文件.-noleaf选项关闭这个最佳化.

6.7 Reveal Multimedia Effects kit 的CD-ROM有支持吗?

以下内容由 Steve HorneHorne@cmod2.pfc.mit.edu 提供.
它只对某些Reveal的CD-ROM有用; 较新的都配Panasonic的机种,可用sbpcd驱 动程序.)

大概是一年前吧, 我买了Reveal CD/soundcard kit, 设法让这奇怪的东东在我
的Linux上能用. 我张贴过我让它可用的一些小技巧,它列入了CD-ROM HOWTO.
最近,我每周都会收到一堆请求,希望我能让Reveal kits能在Linux下工作.

先声明我不是专家. 我所做的就是紧逼Reveal的技术支持部直到他们告诉我那个
很特殊的port位址. 然後连接两条SOUND-FX的线到CDU-31A. 我不知道怎样帮助E-mail
我的多数人,这是我打算给他们的笔记. 把它浓缩到HOWTO里的合适等级应该是不错
的主意. 另外,我不希望给大家一个"它是Linux系统的好选择"的印象. 不,绝不是.

在Linux上装 REVEAL的卡

大略:

       不要买.
       如果你已经有了,又有Sony的机器,你可以使用CD.
       如果你的不是Sony的CD-ROM,那也许能用,不过我不确定,因为我的是Sony的.
       Sony的支持很烂. 如果Aztech能提供程序设计信息,那就有点希望.

File print:

如果你用的是Sony的CD-ROM,那cdu31a驱动程序可以用. 你要先在核心加入cdu31a 支持.
以下是cdu31a的原始程序的注解:

 *(警告 -       现在已将自动侦测功能去除了. 你 必须 在起动时或在lilo.conf
 *              中设好cdu31a的参数. 我在lilo.conf加入了:)
 *
 *                append="cdu31a=0x1f88,0,PAS"
 *
 *              (第一个数字是卡的I/O基底位址.第二个是中断(0代表无)
 *              第三个应该是PAS,如果连接Pro-Audio spectrum的话,
 *              否则就不要加.)

我推断Reveal卡的对应行是

append="cdu31a=0x654,0"

我并不总是用LILO,所以我把一些条件编译去掉,将自动侦测弄回来,不过把我的位址
放在最前面.(文件是/usr/src/linux/drivers/cdrom/cdu31a.c,
找出cdu31a_addresses这个字串就能发现重点.)

这招对非Sony的机器是无效的!(我并不是很懂,不过能用我才觉得奇怪)

和Sony情况类似,我想用Panasonic或Mitsumi的人,你必须先联络Reveal的
技术支持部,以得知你的基底位址,然後用你的驱动程序.(我不知道sbpcd是否能用,
也许吧. 不管怎样,你一定要知道位址.)我也不知道append在别种机种能否使用.

在你能起动以前,不要修补驱动程序或lilo.conf.如果你是从无开始(只有DOS,
无Linux)那你有一些地方可以试试 --

    1. 将安装档拷到DOS分割区去,然後从这里装.这样大概要耗去90MB左右的DOS分
       割区.
       当系统装好你就可施行以上的技巧.你可以只安装A,AP及D(如果用Slackware
       )加上 核心原始码(Q?)这些给你修补及建立核心的工具.
    2. 如果你用Sony
       CD或有自信的话,请一位朋友给你一份修补过的核心(自动侦测,
       你的位址第一)如常地rdev:

rdev  /dev/fd0 /dev/fd0                 ; root=floppy
rdev -r /dev/fd0 1440                   ; ramdisk
rdev -t /dev/fd0 -3                     ; prompt for screen mode

       然後使用它开动安装的root片. 做一个挂载点以免干扰安装程序:

# mkdir /cd
# mount -r -t iso9660 /dev/fd0 /cd

       然後用"由挂上的目录安装"选项.当然,在光碟上的核心并不合你所需;
       你必须拷贝你自己的核心.

    3. 有一个新的叫LOADLIN的东西,可从DOS起动Linux,也许能救你(我没试过).
       我相信它可以像LILO一般传送一些资料给核心,所以可能可以先起动DOS,
       然後将硬件位址藉LOADLIN传给驱动程序.我没有尝试过.


音效的支持

这片卡(ISC-400)并未被Linux好好地支持, 这有些丢脸,因为它看来是个很便宜
的东西.这片卡能在8位元SB模式产生声音. 我没法让它的混音器起作用,所以录音效果
也不好. MSS模式不占IRQ;我不知怎样传参数给驱动程序,所以也不能用. AdLib
相容模式也没发现能用.

我尝试过,而且至少有另一人也尝试过,取得这片卡原始模式的程序设计资料.
在打了几个小时的电话後, 我打到新加坡方才搞定.(这句翻得可能有问题).
如果我有一天对声音认真起来,我会再买一片正牌的声霸卡.

6.8 Linux支持任何CD-ROM的烧录设备吗?

根据Adam J. Richter adam@yggdrasil.com的说法:

Yggdrasil的Linux可以驱动挂在Adaptec AHA-154x这片SCSI卡上的飞利浦CD烧录机.
我不确定其它的SCSI卡能不能用. 你可以用mkisofs建立ISO-9660文件系统,然後用
cdwrite来烧录CD. 如果你希望我们帮这个忙,你可以打900技术支持专线:
1-900-446-6075转835(每分钟$2.95,仅限於美国)

George Moody,george@hstbme.mit.edu 回报说:

我用mkisofs(从tsx-11.mit.edu及其它标准来源)及cdwrite(从ftp.yggdrasil.com)
,使用以下的软硬件来烧CD:

       飞利浦 CDD522 CD烧录器
       Seagate ST15150N 硬碟(4.1GB "梭鱼"型,非AV硬碟)
       NCR B355 PCI SCSI卡(使用NCR 53C810,在PCI HOWTO里被称赞又便宜又快)


硬碟和CD烧录机在同一条SCSI插槽上. 我的电脑用Pentium 100跑Linux 1.2.12.
我用的是标准NCR PCI-SCSI驱动程序,不是後来的那个听说有支持断接/续接功能的.
我可用二倍速将在ext2fs及MSDOS文件系统上的映像档烧进光碟(我没试过直接从
硬碟设备拷贝,因为我没分出这样的分割区). 唯一问题就是有时当我写定CD时,
电脑会卡住. 不过只要我重开机就没事了,包括刚刚我烧好的那片碟子. 我是以root
身份跑cdwrite的,有时也跑跑X和轻负载的X11软件,不过我在烧CD时会尽量不去做
其它的事.

也请参考Linux CD-Writer mini-HOWTO文件,可在
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/CD-Writer
或http://sunsite.unc.edu/mdw/HOWTO/CD-Writer.html 处找到.

(译注:有位仁兄(有空再列出您的大名)有写他对CD-ROM烧录机的心得,在
http://mail.ncku.edu.tw/~thlx/, 可以参观.)

6.9 为何我在挂载CD-ROM时得到: Read-Only file system 讯息?

CD-ROM是只能读取的媒体. 旧版的核心你能用可读写方法挂上CD-ROM,然後尝试写
资料进去并不会产生任何讯息. 在1.1.83版後,这被修正为CD-ROM必须以只读方式挂上
(就是说mount要有-r选项).

6.10 我关机时,为什麽托盘自动退出来?

在1.1.38版核心,sbpcd在卸下片子时会自动退片(译:CR-521是用片匣的,不知会不会
弹出来喔!?)如果你下了关机指令,那麽挂上的CD就会被卸下,然後就退出来.

这样子在换片时很方便. 如果托盘打开状态下你挂上或读取CD,那麽它也会
自动进片.(译:片匣的不能自动进片...所以...)

我发现有时这功能会造成问题(如cdplay及workbone).在1.1.60版核心(有些怪...
前面是1.1.83!? 我看还得查明再联络作者喔!)你可以用软件决定要不要用这功能.
一个□例程序包含在README.sbpcd里.(或者用 eject 程序).

6.11 我有一片无法挂上的"特殊"片子

这片"特殊"片子看来像是XA碟片(就像相片光碟或用CD-R烧的
"一次写入"(one-offs)片子)多数Linux核心CD-ROM驱动程序并不支持XA
格式,虽然你也许能在一些文件库找到一些修补.

sbpcd驱动程序是支持XA的. 如果你用这驱动程序,你可以依以下方法确定片子
是不是XA的格式: 修改sbpcd.c,允许显示"目录"(TOC)信息(DBG_TOC).
然後做新核心,起动它.则每次挂上时都会显示TOC(由主控台或记录档).看第一个数字,
如果是20,那就是XA片子,如果是00,那就是普通片子.如果TOC显示不同的轨,那也是
XA片子的信号.

(感谢Eberhard Moenkeberg提供以上信息)

其它的无法读取CD可能原因:

       它不是用ISO-9660文件系统(如:有的用SunOS)
       它是CD唱片
       CD有损坏或毁伤
       你把光碟片放反了 :-)


6.12 为何我的CDU-33的灯会闪?

这很正常,是新版驱动程序加进去的.当挂上CD片时,让灯闪烁(这不是□□,这是
"特点"...)

6.13 多片装CD-ROM在Linux下也能用吗?

好几位使用者已报告SCSI CD-ROM换片机工作顺利.你也许要打开"
对每一个SCSI装置侦测所有LUN"的核心选项. 起码使用者也要加大驱动程序
中的SCSI超时等待值.Nakamichi(中道!?)MBR-7的七片装及先锋牌的12片装已确定 能用.

EIDE/ATAPI的换片机也可用. 2.0版核心对一些机器使用CDROMLOADFROMSLOT
这个ioctl函式做了初步支持. IDECD驱动程序的文件档包含了一个原始码可做一般
程序选择换片槽的参考.

6.14 我得到 "/cdrom: Permission denied" 错误

有些CD有文件权限,仅允许root读取它. 1995年三月的InfoMagic CD set就是一个 好例子.

底下的修补, 由Christoph Lameter(clameter@waterf.org)
好意提供,修补核心,解决这问题.

From: clameter@waterf.org (Christoph Lameter)
Newsgroups: comp.os.linux.setup
Subject: Infomagic Developers Set: Fix for CD-Rom permissions
Date: 12 Apr 1995 20:32:03 -0700
Organization: The Water Fountain - Mining for streams of Living Water
NNTP-Posting-Host: waterf.org
X-Newsreader: TIN [version 1.2 PL2]

(1995年三月版的InfoMagic Developers CD-ROM set有问题,因为它在根目录存取权限处
存的信息造成以下使用CD的问题.)

(1. 第一片的拥有者/群组是5101/51,然後居然允许写入(?))

(2. 第二,三片对root有rwx权力,而对其它人/群组什麽也不给. 这两片光碟除了
root外任何人均无法存取! 我正在跑BBS,需要让别人能下载它们!)

(我已经看到这问题的几个解决之道了. 麻烦的是它们会影响光碟上所有目录的
存取权.我的修正只改了它的根目录存取权. 如果你想在光碟上跑东东,而所有目录
都可存取的话,会带来麻烦,因为他们是root所有.)

(这个修补会将根目录权限改成r-xr-xr-x,将所有人/群组改成mount那人的
uid及gid)

(用法:)
 cd /usr/src/linux/fs/isofs
 patch <**THIS MESSAGE**

(然後重编译核心(依你的核心版本,可能要手动修补.))

(这个修正也许已放进核心了. 到底是什麽事,非要存放让挂载点的权限/所有人资料
变一团糟呢?)

--- inode.c.ORIG        Wed Apr 12 17:24:36 1995
+++ inode.c     Wed Apr 12 17:59:12 1995
@@ -552,7 +552,15 @@
    these numbers in the inode structure. */

        if (!high_sierra)
-         parse_rock_ridge_inode(raw_inode, inode);
+       {  parse_rock_ridge_inode(raw_inode, inode);
+           /* check for access to the root directory rights/owner CL */
+          if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino)
+           { /* Change owner/rights to the ones demanded by the mount command
*/
+             inode->i_uid = inode->i_sb->u.isofs_sb.s_uid;
+             inode->i_gid = inode->i_sb->u.isofs_sb.s_gid;
+            inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR;
+           }
+        }

 #ifdef DEBUG
        printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_
extent);
@@ -805,4 +813,3 @@
 }

 #endif
-

6.15 我如何念"Matsushita"?

有人告诉我正确念法有点像MAT-SOOSH-TA.

6.16 我如何解译IDE CD的核心错误讯息?

我得到核心送的IDE CD-ROM驱动程序讯息像: "hdxx: code: xx key: x asc: xx ascq:
x",这是什麽意思?

这是IDE CD-ROM的状态/错误报告. 预设状况下,IDECD印出最原始的信息,而不浪费
核心空间给错误讯息. 你可以改变它,让它显示真正的错误讯息. 修改
/usr/src/linux/drivers/block/ide-cd.c,将VERBOSE_IDE_CD_ERRORS改成1.

译注: SCSI的也有类似情形. 如果你对最後的问题"verbose SCSI error
report..."回答n,那可减少12K的记忆体浪费,但显示出的讯息嘛...看不懂.
我个人是宁可耗多点RAM换取看得懂啦!

6.17 Linux支持"即插即用"设备吗?

Linux目前尚未完全支持即插即用设备,不过目前还在进行中. 现在有一些使用者
回报说他们用 1. 关闭BIOS中的即插即用选项 2. 先用Windows 95开机,再换到 Linux
这两种方法成功过.

6.18 我如何测试我的CD-ROM是几倍速的呢?

有一个办法. 这就是测试它要花多久读取1500K的资料:

% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07

正常的单倍速CD-ROM每秒传送150KB,所以约要10秒钟. 二倍速约要5秒钟, 四倍速
的约2.5秒钟,等等...

sys时间也许是最好的值--在上面情形指出它是二倍速机器.你可以增加资料量得出更
准确的值.(放心,够大的话就没有被快取到了.)

6.19 装好Linux後,我的CD-ROM不能用了

最常见的症状是先用Linux安装时,Linux承认你的CD-ROM.但装完後,从软碟
或硬碟开机却又不能用它了.

最大的可能就是多数Linux分布中,装在硬碟的核心不一定就是和安装片用的一样.
你选了支持你设备的安装片,它却给你在硬碟上装一个没有支持CD-ROM的" 通用"核心.
你可以照第四章所说的"问题与解决"去做. (从检查/proc/devices开始)

解法是重编译核心,确定你需要的CD-ROM驱动程序及其它需要的部份(如SCSI卡,
ISO-9660文件系统)都编进去了. 如果你不知道怎麽做,看 Kernel HOWTO
如果你需要用命令列参数(如"hdc=cdrom")你要把它加进开机载入程序的
设定档中(通常是/etc/lilo.conf)

---------------------------------------------------------------------------

--
※ 来源:·古庙钟声 cs3.xmu.edu.cn·[FROM: 210.34.6.201]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:208.608毫秒