BBS水木清华站∶精华区
发信人: yorkwu@ms4.hinet.net (), 看板: Linux
标 题: [更新文件]CDROM HOWTO 中文版 1.11(part 3/3)
发信站: DCI HiNet (Sat Aug 9 16:30:00 1997)
转信站: sobee!netnews.ntu!news.mcu!news.cs.nthu!news.csie.nctu!aidebbs!news.yz
照往例, 这次更新会放到
http://linux.ntcic.edu.tw/~yorkwu/linux/howto/cdrom/
中...
-----------------------------------------------------------------------
6. 常见问题与解答
6.1 没 有 root 身 份 的 人 , 如 何 挂 上 及 卸 下 光 碟 片 ?
多 数 mount 命 令 支 援user选 项. 假 设 你 在 /etc/fstab 里 加 入 了 这 样
一 行 :
/dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro
那 麽 普 通 使 用 者 就 可 以 这 样 挂 上 或 卸 下 这 台 机 器 的 资 料 :
% mount /mnt/cdrom
% umount /mnt/cdrom
挂 上 程 序 将 会 加 上 一 些 额 外 选 项 以 保 持 系 统 安 全 ( 例 如 : 程
式 不 准 执 行 , 片 子 上 的 设 备 档 将 失 效 ( 不 予 理 会 ) ) ; 在 有 时
候 这 限 制 当 然 严 了 点.
另 一 个 办 法 就 是 抓 usermount , 它 允 许 非 root 之 使 用 者 挂 上 / 卸
下 可 移 除 设 备 如 软 碟 及 CD-ROM 等 , 但 限 制 对 其 它 设 备 的 动 作
如 硬 碟 分 割 区 ). 它 在 主 要 的 档 案 库 都 有.
在 ftp.cdrom.com 里 有 mount.c 的 原 始 码 , 它 允 许 一 般 使 用 者 挂 上 /
卸 下 CD-ROM. 它 必 需 要 setuid 後 才 能 这 麽 做 .
----------------------------------------------------------------------------
( 译 注 : setuid 是 指 , 将 执 行 档 执 行 时 的 权 限 变 成 和 执 行 档 所
有 人 相 同 . 普 通 执 行 档 执 行 时 权 限 是 执 行 者 的 权 限 , 这 样 的
话 很 多 程 式 都 不 能 跑 ( 如: 你 不 能 修 改 /etc/passwd, 所 以 不 能 靠
修 改 它 变 更 密 码. 但 passwd 是 setuid, 又 是 root 所 有 的 程 式 , 执 行
时 就 有 root 权 力 , 所 以 就 能 更 改 了. ). 不 过 setuid 反 过 来 也 可
能 是 系 统 安 全 的 主 要 漏 洞. )
----------------------------------------------------------------------------
6.2 为 何 我 要 卸 下 光 碟 时 , 却 得 到 " 设 备 正 忙 碌 " 讯 息 ?
如 果 有 任 何 程 序 正 在 存 取 这 机 器 , 包 括 它 们 的 现 行 目 录 正 在
它 上 面 , 那 就 不 能 卸 下. 如 果 你 实 在 不 晓 得 那 个 程 序 正 在 使
用 这 片 光 碟 , 你 可 以 像 下 例 一 样 的 用 fuser 命 令:
% umount /cdrom
umount: /dev/hdd: device is busy
% fuser -v /cdrom
/cdrom: USER PID ACCESS COMMAND
tranter 133 ..c.. bash
6.3 我 如 何 将 CD-ROM 用 NFS 与 其 它 电 脑 共 享 ?
你 需 要 在 /etc/exports 档 中 加 入 一 个 项 目 ; 这 样 别 的 机 器 的 使
用 者 就 可 以 挂 上 它 了. 请 看 exports(5) 这 份 说 明 页.
6.4 我 能 用 CD-ROM 起 动 Linux 吗 ?
当 安 装 Linux 时 最 常 用 的 方 法 是 用 软 碟 开 机 片, 有 些 Linux 组 件
可 以 直 接 由 DOS 起 动 光 碟 上 的 Linux 核 心.
Michael Fulbright (msf@redhat.com) 回报说若有正确的CD-ROM片子, ROM BIOS及
ATAPI CD-ROM机器, 从CD直接开机是可能的. 最新版的mkisofs也支援制作这种片子.
他也加入了一些修补, 以支援这种开机光碟的El Torito标准.
6.5 我 怎 样 从 CD 唱 片 直 接 抓 取 数 位 音 轨?
Heiko Eissfeldt(heiko@colossus.escape.de) 和 Olaf Kindel 写 了 一 个 公 用
程 式 可 以 读 取 音 讯 资 料 , 并 将 它 存 成 .wav 格 式 的 声 音 档. 这 个
程 式 叫 cdda2wav.tar.gz , 可 以 在 sunsite.unc.edu 找 到.
因 为 CD-ROM 世 代 交 替 太 快 了 , 很 难 列 出 哪 些 CD-ROM 可 读 取 数 位
音 乐 资 料. 你 最 好 的 赌 注 是 抓 最 新 版 的 cdda2wav 套 件 , 并 读 它
的 文 件.
若 想 要 更 进 一 步 的 资 讯, 请 上
http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA.html这 个 站 台 看 看. 及
参 阅 alt.cdrom FAQ 的 reference 那 节.
6.6 为 什 麽 find 命 令 不 太 正 常 ?
在 没 有 Rock Ridge Extension 的 ISO-9660 光 碟 上 , 你 需 要 在 find 後 加
上 -noleaf 这 选 项. 请 参 考 find(1) 说 明 页
(在 我 的 经 验 中 几 乎 所 有 Linux CD-ROM 都 用 Rock Ridge Extension,这 问
题 的 发 生 率 应 该 极 低.)
6.7 Linux 是 否 支 援 任 何 CD-ROM 的 烧 录 设 备 ?
X-CD-Roast 套 件 (Linux 版)是 使 用 CD 烧 录 机 的 图 形 化 前 端 介 面. 此
套 件 可 在 sunsite.unc.edu 里 的
/pub/Linux/utls/disk-management/xcdroast-0.95.tar.gz 找 到.
也 请 参 考 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.8 我 挂 载 CD-ROM 时 得 到: Read-Only file system 讯 息 ?
CD-ROM 是 只 能 读 取 的 媒 体. 旧 版 的 核 心 你 能 用 可 读 写 方 法 挂 上
CD-ROM , 然 後 尝 试 写 资 料 进 去 并 不 会 产 生 任 何 讯 息. 在 1.1.83 版
後 , 这 被 修 正 为 CD-ROM 必 须 以 唯 读 方 式 挂 上 ( 就 是 说 mount 要 有
-r 选 项 ).
6.9 我 关 机 时 , 为 什 麽 托 盘 自 动 退 出 来 ?
在 1.1.38 版 核 心 , sbpcd 在 卸 下 片 子 时 会 自 动 退 片. 如 果 你 下 了
关 机 指 令 , 那 麽 挂 上 的 CD 就 会 被 卸 下 , 然 後 就 退 出 来.
这 样 子 在 换 片 时 很 方 便. 如 果 托 盘 打 开 状 态 下 你 挂 上 或 读 取
CD , 那 麽 它 也 会 自 动 进 片.
我 发 现 有 时 这 功 能 会 造 成 问 题 ( 如 cdplay 及 workbone). 在 1.1.60
版 核 心 ( 有 些 怪... 前 面 是 1.1.83!? 我 看 还 得 查 明 再 联 络 作
者 喔!) 你 可 以 用 软 体 决 定 要 不 要 用 这 功 能. 一 个 □ 例 程 式 包
含 在 sbpcd 的 文 件 里. (或 者 用 eject 程 式).
6.10 我 有 一 片 无 法 挂 上 的 "特 殊" 片 子
这 片 "特 殊" 片 子 看 来 像 是 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 可 能 原 因:
1. 它 不 是 用 ISO-9660 档 案 系 统 ( 如 : 有 的 用 SunOS)
2. 它 是 CD 唱 片
3. CD 有 损 坏 或 毁 伤
4. 你 把 光 碟 片 放 反 了 :-)
6.11 多 片 装 CD-ROM 在 Linux 下 能 用 吗 ?
好 几 位 使 用 者 已 报 告 SCSI CD-ROM 多 片 机 种 运 作 顺 利. 你 也 许 要
打 开 " 对 每 一 个 SCSI 装 置 侦 测 所 有 LUN" 的 核 心 选 项. 起 码 使 用
者 也 要 加 大 驱 动 程 式 中 的 SCSI 超 时 等 待 值. Nakamichi MBR-7 的 七
片 装 及 先 锋 牌 的 12 片 装 已 确 定 能 用.
EIDE/ATAPI 的 多 片 机 种 也 可 用. 2.0 版 核 心 对 一 些 机 器 使 用
CDROMLOADFROMSLOT 这 个 ioctl 函 式 做 了 初 步 支 援. IDECD 驱 动 程 式 的
文 件 档 包 含 了 一 个 原 始 码 可 做 一 般 程 式 选 择 换 片 槽 的 参 考.
或 者 你 也 可 以 找 最 新 版 的 eject 程 式.
6.12 我 得 到 "/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]
The March 1995 Edition of the Infomagic Developers CD-ROM Set has
problems because the information stored in the root directory
permissions is causing the following problems with using the CDs
(1995年三月版的InfoMagic Developers CD-ROM set有问题,因为它在根目录存取权限处
存的资讯造成以下使用CD的问题.)
1. Disc1 will always have the owner/group of 5101/51 and has write
access allowed (?)
(1. 第一片的拥有者/群组是5101/51,然後居然允许写入(?))
2. Disc2 and 3 have rwx set for root and no rights at all for any
other group/user. These discs cannot be accessed from any user other
than root! I run a BBS and I need to make them accessible for download
by others.
(2. 第二,三片对root有rwx权力,而对其它人/群组什麽也不给. 这两片光碟除了
root外任何人均无法存取! 我正在跑BBS,需要让别人能下载它们!)
I have seen several fixes to this problem already floating
around. Trouble is that these fixes usually change the rights for ALL
directories on the CD. This fix here changes ONLY the rights for the
root directory of the CD-Rom. If you want to run parts of Linux
directly off the CD you might run into trouble if all directories are
readable for everyone and if they are all owned by root.
(我已经看到这问题的几个解决之道了. 麻烦的是它们会影响光碟上所有目录的
存取权.我的修正只改了它的根目录存取权. 如果你想在光碟上跑东东,而所有目录
都可存取的话,会带来麻烦,因为他们是root所有.)
This fix will set the rights for the root directory to r-xr-xr-x and
the owner/group to the values indicated in the uid and gid options to
the mount command.
(这个修补会将根目录权限改成r-xr-xr-x,将所有人/群组改成mount那人的
uid及gid)
To apply:(用法:)
cd /usr/src/linux/fs/isofs
patch <**THIS MESSAGE**
and recompile kernel (you may have to fix up the patch by hand
depending on your kernel version).
(然後重编译核心(依你的核心版本,可能要手动修补.))
This fix should probably be incorporated into the kernel. What business
does data on a CD have to mess around with the permissions/owners of the
mount-point anyways?
(这个修正也许已放进核心了. 到底是什麽事,非要存放让挂载点的权限/所有人资料
变一团糟呢?)
--- 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
-
注意以上的修补有些旧了, 可能无法完全乾净地修补最新的2.0版核心, 也请参考 本篇
後面提到的隐藏档的相关问题.
6.13 我 如 何 读 懂 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.14 我 如 何 测 试 我 的 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 秒 钟 等 等...
real 时 间 也 许 是 最 好 的 值 -- 在 上 面 情 形 指 出 它 是 二 倍 速
机 器. 你 可 以 增 加 资 料 量 得 出 更 准 确 的 值. ( 如 果 你 担 心 受 快
取 影 响 的 话.)你 也 许 应 该 多 测 几 次, 求 平 均 值.
6.15 装 好 Linux 後 , 我 的 CD-ROM 不 能 用 了
最 常 见 的 症 状 是 先 用 Linux 安 装 时 , Linux 承 认 你 的 CD-ROM. 但 装
完 後 , 从 软 碟 或 硬 碟 开 机 却 又 不 能 用 它 了.
最 大 的 可 能 就 是 多 数 Linux 套 件 中 , 装 在 硬 碟 的 核 心 不 一 定 就
是 和 安 装 片 用 的 一 样. 你 选 了 支 援 你 设 备 的 安 装 片 , 它 却 给
你 在 硬 碟 上 装 一 个 没 有 支 援 CD-ROM 的 "通 用" 核 心. 你 可 以 照 第
四 章 所 说 的 "问 题 与 解 决" 去 做. (从 检 查 /proc/devices 开 始)
解 法 是 重 编 译 核 心 , 确 定 你 需 要 的 CD-ROM 驱 动 程 式 及 其 它 需
要 的 部 份 ( 如 SCSI 卡 , ISO-9660 档 案 系 统 ) 都 编 进 去 了. 如 果 你
不 知 道 怎 麽 做 , 看 Kernel HOWTO
如 果 你 安 装 时 用 了 命 令 列 参 数 (如"hdc=cdrom") 你 要 把 它 加 进 开
机 载 入 程 式 的 设 定 档 中( 通 常 是 /etc/lilo.conf)
6.16 在 CD 上 有 隐 藏 档, 我 没 办 法 读...
有 些 CD 的 一 些 档 案 有 设 定 隐 藏 位 元. 这 些 档 案 正 常 状 态 是 看
不 到 的. 不 过 如 果 你 挂 上 时 用 了 "unhide" 选 项, 那 麽 应 该 就 可 以
读 取 了.(这 个 选 项 似 乎 没 有 文 件 记 载 过 )
6.17 哪儿找得到CD-ROM API的文件资料?
如果你想写自己的应用程式, 诸如CD唱片播放程式等, 你必须懂得Linux提供的 应用程
式介面(application programming interface, API)
原本CD-ROM核心驱动程式都是用自定的ioctl以支援这类机器的功能. 像
/usr/include/linux/sbpcd.h 这样的标头档就描述了这些. 由於很多驱动程式都是由
别的驱动程式发展而来, 介面虽不完全相同, 但类似之处颇多.
最近, 由David van Leeuwen(david@tm.tno.nl) 发起, 建立一组CD-ROM用的共通 API.
这文件在/usr/src/linux/Documentation/cdrom/cdrom-standard.tex. 已有几个核心
驱动程式支援它了. 我预计下一个主要版本核心 (3.0?) 里, 所有 CD-ROM驱动程式都
会符合这API.
我的书, Linux Multimedia Guide, 也提到了如何写CD-ROM程式, 特别是放音方面 的.
请看"参考资料"那节.
7. 参考文献
首 先 是 我 已 提 到 过 的 README 档. 典 型 的 位 置 在
/usr/src/linux/Documentation/cdrom/里. 它 可 算 是 有 用 资 讯 的 宝 山.
底下的 USENET FAQ 定期在 news.answers 发出,并存放在如ftp://rtfm.mit.edu/的网
际网路 档案库中.
* alt.cd-rom FAQ
* comp.periphs.scsi FAQ
* Enhanced IDE/Fast-ATA/ATA-2 FAQ
一 些 其 它 Linux HOWTO 也 提 供 和 CD-ROM 相 关 的 有 用 资 讯:
* SCSI HOWTO
* Hardware Compatibility HOWTO
* Sound HOWTO
* Kernel HOWTO
* Distribution HOWTO
* CD Writing mini-HOWTO
至 少 有 好 几 家 公 司 卖 在 CD-ROM 上 的 Linux 套 件 ; 多 数 在
Distribution HOWTO 里 都 有 记 载.
以 下 是 和 CD-ROM 有 关 的 USENET 网 路 新 闻 组:
* comp.publish.cdrom.hardware
* comp.publish.cdrom.multimedia
* comp.publish.cdrom.software
* comp.sys.ibm.pc.hardware.cd-rom
* alt.cd-rom
* alt.cd-rom.reviews
comp.os.linux 网 路 新 闻 组 也 是 Linux 相 关 资 讯 的 好 来 源.
在 ftp://ftp.cdrom.com/pub/cdrom/ 里 有 一 大 堆 的 CD-ROM 资 讯 及 软 体.
在 ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware-faq/enhanced-IDE/
以 及 http://www.seagate.com/techsuppt/faq/faqlist.html. 可 找 到 IDE 及 ATA
设 备 的 FAQ 文 件.
制 定 IDE 协 定 的 Western Digital 公 司 , 在 其 FTP 站 也 有 关 於 IDE 协
定 的 文 件 , 在: ftp://fission.dt.wdc.com/pub/standards/atapi
有 一 个 关 於 多 媒 体 的 首 页 可 在 http://viswiz.gmd.de/MultimediaInfo/
中 找 到. Creative Labs 的 首 页 在 http://www.creaf.com/.
Linux 文 件 计 画 (LDP) 制 作 了 好 几 本 Linux 的 书 , 包 括 Linux
Installation and Getting Started. 这 些 可 从 主 要 的 Linux FTP 档 案 库 免
费 取 得 , 或 是 花 钱 买 硬 拷 贝 型 式 的 文 件.
Linux软体大地图(LSM) 是 标 定 Linux 软 体 的 无 价 参 考 资 料. LSM 在 很 多
FTP 档 案 库 , 包 括 ftp://sunsite.unc.edu/pub/Linux/docs/LSM.gz/ 中.
Linux 通 信 论 坛 有 几 个 不 同 主 题 的 讨 论 频 道. 若 想 知 道 如 何 参
加 , 寄 一 封 内 容 为 "help" 的 信 到 majordomo@vger.rutgers.edu (注 意: 在
写 这 篇 时 , 这 些 信 件 讨 论 区 正 严 重 超 载 , 现 在 还 在 找 替 代 的
机 器.)
最 後 呢 , 虽 然 有 点 无 耻 , 不 过 还 是 容 我 在 此 打 打 小 广 告: 如 果
你 想 学 学 更 多 关 於 在 Linux 下 的 多 媒 体 ( 特 别 是 关 於 CD-ROM 及
音 效 卡 应 用 及 程 式 设 计 的) , 到 书 店 找 找 我 编 著 的 Linux
Multimedia Guide,ISBN 1-56592-219-0, 由 O'Reilly and Associates 公 司 出 版.
除 了 原 始 的 英 文 版 外, 法 文 版 和 日 文 版 也 正 付 印 中. 若 在 北 美
洲, 请 电 800-998-9938. 或 是 光 顾 以 下 站 台:
http://www.ora.com/catalog/multilinux/noframes.html或 本 人 的 网 址
http://www.pobox.com/~tranter/
--
o=|====> yorkwu@ms4.hinet.net
BBS水木清华站∶精华区