Manpages

NAME

bootparam − 介 绍 Linux核 心 的 启 动 参 数

描 叙

Linux 核 心 在 启 动 的 时 候 可 以 接 受 指 定 的 "命 令 行 参 数 "或 "启 动 参 数 ". 在 通 常 情 况 下 , 由 于 核 心 有 可 能 无 法 识 别 某 些 硬 件 , 或 可 能 将 某 些 硬 件 识 别 为 不 正 确 的 配 置 , 因 此 , 这 些 参 数 可 以 被 用 来 提 供 正 确 的 硬 件 配 置 参 数 。 当 Linux核 心 被 BIOS直 接 启 动 的 时 候 ( 比 如 说 你 的 核 心 是 从 使 用 了 "cp zImage /dev/fd0" 命 令 制 造 的 Linux 启 动 软 盘 来 启 动 的 ) , 你 无 法 指 定 任 何 的 启 动 参 数 。 因 此 , 为 了 能 够 指 定 启 动 参 数 , 你 必 须 使 用 某 些 能 够 传 递 启 动 参 数 的 软 件 , 例 如 LILO 或 Loadlin。 为 了 使 用 很 少 的 参 数 来 改 变 的 核 心 配 置 , 可 以 使 用 rdev, 查 看 rdev( 8) 可 以 得 到 更 多 的 细 节 。

由 Werner Almesberger 开 发 的 LILO 程 序 (LInux LOader) 是 最 普 遍 的 启 动 配 置 软 件 。 它 能 够 启 动 各 种 不 同 的 系 统 核 心 , 这 些 启 动 配 置 信 息 被 放 置 在 一 个 简 单 明 了 的 文 本 文 件 中 ( 请 看 lilo( 8)lilo.conf(5).)

LILO 可 以 启 动 象 DOS, OS/2, Linux, FreeBSD, UnixWare 这 样 的 操 作 系 统 , 而 且 灵 活 性 也 非 常 强 。

另 外 一 个 较 为 普 遍 的 启 动 软 件 是 "LoadLin"。 这 是 一 个 基 于 DOS 操 作 系 统 的 软 件 。 该 软 件 能 够 从 DOS提 示 符 下 启 动 Linux核 心 ( 使 用 启 动 参 数 ) , 只 要 某 些 必 需 的 资 源 可 用 就 行 。 这 对 于 那 些 希 望 从 DOS 系 统 中 启 动 Linux 的 人 来 说 是 很 不 错 的 方 法 。

如 果 你 的 硬 件 能 够 被 DOS 驱 动 程 序 启 用 的 话 , LoadLin也 会 是 非 常 有 用 的 。 一 个 最 常 见 的 例 子 是 设 置 与 SoundBlaster 兼 容 的 声 卡 。 这 些 声 卡 通 过 使 用 DOS 驱 动 程 序 设 定 一 些 寄 存 器 就 可 以 将 它 们 设 置 成 为 SB 兼 容 模 式 的 声 卡 。 在 DOS下 启 动 这 些 声 卡 的 启 动 程 序 , 然 后 使 用 LoadLin程 序 启 动 Linux, 这 样 就 可 以 避 免 由 于 重 新 启 动 Linux系 统 而 造 成 声 卡 被 重 新 设 置 。

参 数 列 表

核 心 参 数 行 被 解 析 成 为 一 个 由 空 格 分 隔 的 字 符 串 列 表 ( 即 启 动 参 数 表 ) 。 大 部 分 的 启 动 参 数 的 格 式 就 象 下 面 这 样

名 字 [=值 1], [值 2]……[, 值 10]

其 中 "名 字 "是 一 个 唯 一 关 键 字 , 被 用 来 区 分 接 受 值 ( 如 果 有 的 话 ) 那 一 部 分 核 心 。 要 注 意 的 是 10 个 值 的 限 制 是 确 实 存 在 的 , 目 前 的 程 序 代 码 只 能 对 每 个 关 键 字 处 理 10 个 逗 号 分 隔 的 参 数 ( 当 然 , 在 一 些 复 杂 的 应 用 中 , 你 可 以 通 过 重 新 使 用 同 样 的 关 键 字 来 传 递 多 于 10个 的 参 数 , 只 要 配 置 程 序 可 以 支 持 该 方 法 )

大 部 分 的 排 序 工 作 是 在 linux/init/main.c 中 进 行 的 。 首 先 , 核 心 检 查 参 数 是 否 为 "root="、 "nfsroot="、 "nfsaddrs="、 "ro"、 "rw"、 "debug" 和 "init"这 些 特 殊 参 数 中 的 一 种 。 这 些 参 数 的 意 义 我 们 将 在 下 面 说 明 。

然 后 , 核 心 会 搜 索 "配 置 程 序 队 列 "( bootsetups队 列 ) 来 查 看 指 定 的 参 数 字 符 串 ( 比 如 "foo") 是 不 是 与 某 个 配 置 指 定 设 备 或 是 核 心 的 配 置 程 序 建 立 了 关 联 。 例 如 假 设 你 传 递 给 核 心 foo=3,4,5,6, 那 么 核 心 会 搜 索 bootsetups 队 列 看 看 "foo"是 否 已 经 注 册 。 如 果 是 , 那 么 核 心 将 运 行 与 "foo"关 联 的 配 置 程 序 ( 比 如 foo_setup()) 并 且 将 参 数 3, 4, 5, 6交 给 核 心 命 令 列 。

任 何 象 "foo=bar" 这 样 格 式 的 参 数 不 会 被 上 面 所 说 的 那 样 , 作 为 一 个 配 置 程 序 的 关 联 被 接 受 , 而 是 被 解 释 成 为 一 个 环 境 变 量 的 设 置 。 一 个 ( 无 用 的 ? ) 例 子 就 是 使 用 "TERM=vt100" 作 为 核 心 的 启 动 参 数 。

任 何 既 不 被 核 心 接 受 又 不 被 解 释 为 环 境 变 量 的 参 数 会 被 传 送 给 第 一 个 系 统 进 程 , 通 常 这 会 是 init程 序 。 最 常 用 的 传 递 给 init 进 程 的 参 数 是 "single", 它 告 诉 init使 用 单 用 户 模 式 启 动 计 算 机 , 并 且 不 要 执 行 任 何 的 守 护 进 程 。 查 阅 帮 助 , 看 看 你 所 装 版 本 的 init 程 序 可 以 支 持 的 参 数 。

一 般 的 、 与 设 备 无 关 的 启 动 参 数

’init=...’
这 个 启 动 参 数 提 供 核 心 执 行 时 的 初 始 化 命 令 。 如 果 它 没 有 被 设 置 , 或 者 没 有 被 找 到 的 话 , 核 心 会 去 尝 试 调 用 /etc/init, 然 后 是 /bin/init, 然 后 是 /sbin/init, 最 后 是 /bin/sh , 如 果 都 失 败 了 , 就 会 提 示 一 个 异 常 信 息 。

’nfsaddrs=...’
该 启 动 参 数 设 置 nfs( 网 络 文 件 系 统 ) 启 动 地 址 为 指 定 的 字 符 串 值 。 该 启 动 地 址 被 用 于 网 络 启 动 中 。

’nfsroot=...’
该 动 参 数 设 置 nfs( 网 络 文 件 系 统 ) 根 目 录 名 为 指 定 字 符 串 。 如 果 该 字 符 串 不 是 以 ’/’、 ’,’或 者 一 个 数 字 开 始 的 , 则 该 字 符 串 加 上 "/tftpboot/"的 前 缀 。

’no387’
(只 有 当 CONFIG_BUGi386被 定 义 后 才 有 效 ) 某 些 i387 协 处 理 器 在 使 用 32 位 保 护 模 式 时 会 出 现 错 误 。 例 如 , 一 些 早 期 的 ULSI-387芯 片 在 处 理 浮 点 运 算 时 会 出 现 死 锁 的 情 况 。 使 用 "no387"启 动 参 数 可 以 让 Linux忽 略 你 的 算 术 协 处 理 器 的 存 在 。 当 然 , 这 时 你 就 必 须 将 你 的 核 心 编 译 成 为 支 持 数 学 仿 真 模 式 。

’no-hlt’
(只 有 当 CONFIG_BUGi386被 定 义 后 才 有 效 ) 某 些 早 期 的 i486DX-100 的 处 理 器 芯 片 在 使 用 "halt" 时 会 出 现 问 题 , 使 用 这 个 指 令 后 它 不 会 正 常 的 返 回 到 操 作 模 式 。 使 用 "no-halt" 指 令 告 诉 Linux 在 没 有 事 情 可 做 的 时 候 , 只 是 执 行 一 个 无 限 的 循 环 指 令 , 而 不 是 让 CPU进 入 "halt"模 式 。 这 样 就 可 以 令 人 们 使 用 这 些 有 缺 陷 的 芯 片 来 运 行 Linux。

’root=...’
这 个 参 数 告 诉 核 心 在 启 动 的 时 候 使 用 哪 个 设 备 被 作 为 根 文 件 系 统 。 其 缺 省 值 是 你 在 编 译 核 心 的 时 候 就 所 确 定 的 根 设 备 。 如 果 你 想 要 修 改 该 值 , 比 如 说 , 将 第 二 个 软 盘 驱 动 器 作 为 根 设 备 , 你 可 以 使 用 "root=/dev/fd1" ( 根 设 备 也 可 以 用 rdev(8)) ; 来 设 置 。

根 设 备 能 够 以 符 号 形 式 或 数 字 形 式 来 指 定 。 一 种 符 号 指 定 形 式 是 /dev/XXYN, 其 中 XX 代 表 设 备 类 型 ( "hd" 代 表 普 通 IDE 硬 盘 , 紧 跟 其 后 的 Y 的 范 围 是 "a" 到 "d"; "SD" 代 表 SCSI 硬 盘 , 紧 跟 其 后 的 Y 的 范 围 是 "a" 到 "e"; "ad" 代 表 Atari ACSI磁 盘 , 紧 跟 其 后 的 Y 的 范 围 是 "a" 到 "e"; "ez" 代 表 Syquest EZ135 兼 容 的 使 用 并 口 的 可 移 动 硬 盘 , 紧 跟 其 后 的 Y 的 值 只 能 是 "a"; "xd" 代 表 XT 兼 容 的 磁 盘 , 紧 跟 其 后 的 Y 的 值 是 "a" 或 者 是 "b"; "fd" 代 表 软 驱 , 而 Y 代 表 软 驱 的 序 号 - fd0 代 表 DOS 的 "A: ", fd1代 表 DOS的 "B: ") , Y 表 示 驱 动 器 字 母 或 序 号 。 N 代 表 驱 动 器 的 分 区 号 ( 以 十 进 制 数 值 表 示 , 当 然 , 软 驱 是 没 有 该 信 息 的 ) 。 目 前 的 核 心 可 以 使 用 更 多 的 驱 动 设 备 , 比 如 nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd, 其 中 大 部 分 都 是 CD-ROM 设 备 。 ( nfs 指 示 网 络 启 动 的 位 置 ; ram 表 示 一 个 ram 虚 拟 磁 盘 ( ram 表 示 可 读 写 储 存 器 ) 。

需 要 注 意 的 是 以 上 这 些 指 定 对 你 文 件 系 统 上 的 设 备 名 称 并 没 有 做 任 何 实 质 改 变 , "/dev/" 部 分 的 描 述 只 是 出 于 传 统 习 惯 。

你 也 可 以 通 过 使 用 数 字 形 式 的 主 /次 设 备 号 指 定 根 设 备 , 但 这 是 很 笨 拙 和 不 方 便 的 方 法 。 ( 例 如 , /dev/sda3 的 主 设 备 号 是 8, 次 设 备 号 是 3, 所 以 你 也 可 以 使 用 "root=0x0803" 来 指 定 根 设 备 。 )

’ro’和 ’rw’
"ro" 选 项 告 诉 核 心 使 用 "只 读 "方 式 装 配 文 件 系 统 。 这 样 可 以 让 "文 件 一 致 性 检 查 "程 序 ( fsck程 序 , 用 来 检 查 磁 盘 的 工 具 , 类 似 DOS 的 scandisk 程 序 ) 能 够 在 一 种 所 谓 "静 止 " ( 也 就 是 说 没 有 任 何 对 文 件 系 统 的 写 操 作 ) 的 文 件 系 统 中 执 行 。 需 要 进 行 写 操 作 的 进 程 必 须 等 到 该 文 件 系 统 使 用 "读 /写 "方 式 重 新 装 配 以 后 才 能 进 行 , 例 如 , 使 用 了 "mount -w -n -o remount /"命 令 。 ( 请 查 看 mount(8)。 )

"rw" 选 项 告 诉 核 心 使 用 "可 读 写 "方 式 装 配 文 件 系 统 。 这 是 缺 省 值 。

只 读 方 式 和 可 读 写 方 式 的 选 择 可 以 使 用 rdev(8). 来 设 定 。

’reserve=...’
该 参 数 用 来 设 定 保 留 区 域 , 使 得 该 区 域 的 I/O 端 口 不 会 被 检 测 。 该 命 令 的 格 式 是

reserve=iobase,extent[,iobase,extent]...

在 某 些 情 况 下 你 的 机 器 也 许 必 须 避 免 设 备 驱 动 程 序 检 测 ( 自 动 检 测 ) 某 些 指 定 区 域 的 设 备 。 这 些 情 况 有 可 能 是 因 为 由 于 检 测 会 导 致 硬 件 错 误 , 或 者 硬 件 会 被 错 误 地 识 别 , 又 或 者 你 只 是 不 想 核 心 对 该 硬 件 进 行 初 始 化 。

reserve(保 留 )启 动 参 数 指 定 一 个 不 要 检 测 的 I/O 端 口 保 留 区 。 设 备 驱 动 程 序 不 会 检 测 保 留 区 域 的 I/O 端 口 , 除 非 其 他 的 启 动 参 数 明 确 的 指 定 需 要 去 检 测 。

例 如 , 命 令 行

reserve=0x300,32 blah=0x300

表 示 设 置 保 留 I/O 区 域 0x300 到 0x31f( 共 32个 端 口 ) 不 会 被 ’blah’ 程 序 以 外 的 驱 动 程 序 所 检 测 。

’mem=...’
PC 规 范 定 义 的 返 回 内 存 数 的 BIOS 调 用 最 大 可 以 返 回 64MB 内 存 。 Linux 使 用 这 个 BIOS 调 用 检 测 机 器 安 装 了 多 少 内 存 。 如 果 你 拥 有 超 过 64MB 的 内 存 , 就 可 以 使 用 这 个 参 数 告 诉 Linux 你 的 内 存 数 。 该 值 可 以 是 10 进 制 的 或 者 是 16 进 制 的 ( 加 上 0x 的 前 缀 ) , 后 缀 也 可 以 加 上 "k" ( 乘 以 1024) 或 "M" ( 乘 以 1048576) 。 下 面 是 Linux 初 始 人 Linus 对 "mem=" 参 数 使 用 的 声 明 : "核 心 能 够 接 受 任 何 你 给 予 的 ’mem=xx’ 参 数 , 但 是 如 果 你 欺 骗 它 的 话 , 它 迟 早 会 让 你 死 的 很 难 看 。 参 数 用 来 指 定 最 高 位 的 RAM 地 址 , 所 以 ’mem=0x1000000’ 表 示 你 拥 有 16MB 的 内 存 。 而 对 于 96MB内 存 的 机 器 来 说 你 应 该 设 置 为 ’mem=0x6000000’。

注 意 注 意 注 意 : 有 些 机 器 可 能 会 将 内 存 高 端 设 置 为 BIOS 所 使 用 , 所 以 你 可 能 将 不 能 全 部 拥 有 96MB 地 址 空 间 。 反 之 , 有 些 芯 片 可 以 将 包 括 BIOS 的 物 理 内 存 影 射 到 内 存 高 端 去 , 所 以 , 你 可 以 用 的 实 际 空 间 可 能 会 是 96MB+384kB。 但 是 如 果 你 告 诉 Linux 核 心 你 拥 有 的 内 存 超 出 你 的 实 际 内 存 的 话 , 将 会 发 生 很 糟 糕 的 事 情 。 也 许 躲 得 过 初 一 , 躲 不 过 十 五 。 "

’panic=N’
在 缺 省 情 况 下 , 核 心 并 不 会 在 异 常 后 重 新 启 动 系 统 , 但 是 这 个 参 数 可 以 指 定 内 核 在 发 生 异 常 后 N 秒 后 重 新 启 动 ( 如 果 N>0) 。 这 个 异 常 时 限 也 可 以 使 用 "echo N>/proc/sys/kernel/panic" 来 设 定 。

’reboot=[warm|cold][,[bios|hard]]’
( 只 有 当 CONFIG_BUGi386 被 定 义 的 时 候 该 参 数 才 起 作 用 ) 从 2.0.22 版 本 后 的 核 心 开 始 , reboot 命 令 在 缺 省 情 况 下 使 用 冷 启 动 。 你 可 以 使 用 "reboot=warm" 来 进 行 老 版 本 所 的 缺 省 的 热 启 动 方 式 。 ( 冷 启 动 意 味 着 对 所 有 的 硬 件 设 备 进 行 重 新 设 置 , 但 是 也 有 可 能 令 在 磁 盘 缓 冲 区 中 尚 未 写 到 磁 盘 上 的 数 据 被 破 坏 。 热 启 动 的 优 点 是 速 度 比 较 快 。 ) 在 缺 省 情 况 下 , 要 求 键 盘 控 制 器 向 机 器 发 出 可 以 重 新 启 动 的 低 电 位 脉 冲 是 很 困 难 的 , 但 是 至 少 有 一 种 类 型 的 主 板 不 会 这 样 工 作 。 选 项 "reboot=bios" 将 用 BIOS 的 设 置 代 替 跳 线 。

’nosmp’ 和 ’maxcpus=N’
( 该 参 数 只 有 当 __SMP__ 参 数 被 定 义 的 时 候 才 有 效 ) 命 令 行 选 项 "nosmp" 或 "maxcpus=0" 将 会 禁 止 激 活 SMP( 对 称 多 处 理 ) 功 能 , 选 项 "maxcpus=N" 限 制 在 SMP 方 式 下 工 作 的 CPU 最 大 数 目 为 N.

核 心 开 发 者 所 使 用 的 启 动 参 数

’debug’
核 心 信 息 被 传 递 给 核 心 的 日 志 守 护 进 程 klogd 使 得 它 们 能 够 被 记 录 在 磁 盘 中 。 优 先 级 高 于 console_loglevel 的 信 息 也 可 以 在 控 制 台 上 被 显 示 出 来 。 ( 如 果 想 了 解 信 息 优 先 级 , 可 以 去 查 看 <linux/kernel.h>文 件 。 ) 在 缺 省 情 况 下 , 所 有 比 调 试 信 息 级 别 高 的 信 息 都 会 被 写 入 日 志 文 件 。 但 是 这 个 启 动 参 数 的 设 置 , 可 以 使 得 核 心 将 DEBUG( 调 试 信 息 ) 级 别 的 信 息 写 到 日 志 里 。 console loglevel 也 能 够 在 系 统 运 行 时 通 过 使 用 klogd 来 设 置 。 请 看 klogd(8).

’profile=N’
用 来 激 活 一 个 核 心 记 录 程 序 。 如 果 你 需 要 了 解 核 心 在 什 么 地 方 消 耗 其 CPU周 期 , 可 以 通 过 设 置 prof_shift 为 一 个 非 零 值 来 激 活 核 心 记 录 程 序 。 可 以 通 过 在 编 译 内 核 的 时 候 指 定 CONFIG_PROFILE 值 也 可 以 通 过 "profile=" 选 项 来 指 定 prof_shift 的 值 。 当 prof_shift 通 过 以 上 方 式 指 定 为 N, 或 通 过 CONFIG_PROFILE_SHIT 的 方 式 指 定 , 或 者 直 接 使 用 其 缺 省 值 2 的 时 候 , 这 个 值 表 示 记 录 程 序 使 用 prof_shift 个 时 间 间 隔 进 行 记 录 : 每 个 时 间 间 隔 是 一 个 时 钟 滴 答 。 当 系 统 执 行 核 心 代 码 的 时 候 , 一 个 记 数 器 的 值 会 不 断 的 增 加 。

profile[address >> prof_shift]++;

原 始 的 配 置 文 件 可 以 从 /proc/profile. 中 读 到 。 或 者 你 也 可 以 使 用 象 readprofile.c 之 类 的 工 具 来 阅 读 配 置 文 件 。 任 何 写 到 /proc/profile 中 的 操 作 将 清 除 记 数 器 。

’swap=N1,N2,N3,N4,N5,N6,N7,N8’
设 置 控 制 核 心 的 虚 拟 存 储 交 换 算 法 的 8 个 参 数 。 这 8个 参 数 是 max_page_age, page_advance, page_decline, page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight, bufferout_weight。 只 能 用 于 核 心 控 制 。

’buff=N1,N2,N3,N4,N5,N6’
设 置 核 心 缓 存 管 理 的 6 个 参 数 , 分 别 是 max_buff_age, buff_advance, buff_decline, buff_initial_age, bufferout_weight, buffermem_grace。 同 样 也 只 能 用 于 核 心 控 制

使 用 内 存 虚 拟 磁 盘 的 启 动 参 数

( 该 参 数 只 在 核 心 使 用 CONFIG_BLK_DEV_RAM 进 行 编 译 后 才 有 效 ) 在 通 常 情 况 下 , 在 Linux 下 使 用 一 个 内 存 虚 拟 磁 盘 ( RAMDISK) 并 不 是 一 个 好 的 方 法 - 因 为 系 统 会 自 动 、 高 效 的 使 用 可 用 的 内 存 。 但 是 当 用 软 盘 启 动 的 时 候 ( 或 者 当 建 立 一 个 启 动 软 盘 的 时 候 ) , 将 软 盘 的 内 容 读 到 一 个 内 存 虚 拟 磁 盘 中 是 非 常 有 用 的 。 另 外 的 情 况 也 有 可 能 是 有 一 些 模 块 ( 或 者 是 文 件 系 统 又 或 者 是 硬 件 的 ) 必 须 在 主 磁 盘 被 访 问 前 被 调 到 内 存 中 来 。

在 1.3.48 版 本 的 Linux 中 , ramdisk 的 操 作 被 彻 底 的 改 变 了 。 在 1.3.48 以 前 的 版 本 中 , 内 存 是 静 态 分 配 的 , "ramdisk = N" 参 数 提 供 内 存 的 大 小 。 ( 这 些 也 能 够 在 核 心 被 编 译 的 时 候 被 设 置 , 或 者 也 可 以 使 用 rdev(8).来 进 行 设 置 ) 从 1.3.48 开 始 , 内 存 虚 拟 磁 盘 开 始 使 用 高 速 缓 存 , 而 且 可 以 动 态 的 增 加 其 空 间 。 如 果 需 要 了 解 有 关 最 新 的 内 存 虚 拟 磁 盘 设 置 ( 比 如 你 要 了 解 怎 么 使 用 rdev(8) 来 进 行 ramdisk的 设 置 ) 请 查 看 /usr/src/linux/Documentation/ramdisk.txt.

有 关 的 参 数 一 共 有 四 个 , 两 个 是 布 尔 变 量 , 两 个 是 整 型 值 。

’load_ramdisk=N’
如 果 N=1, 载 入 一 个 内 存 虚 拟 磁 盘 。 如 果 N=0, 不 载 入 内 存 虚 拟 磁 盘 ( 这 是 缺 省 值 ) 。

’prompt_ramdisk=N’
如 果 N=1, 需 要 提 示 插 入 软 盘 。 ( 这 是 缺 省 值 ) 如 果 N=0, 没 有 提 示 。 ( 因 此 , 这 个 参 数 永 远 也 不 会 需 要 )

’ramdisk_size=N’ 或 者 ’ramdisk=N’
设 置 内 存 虚 拟 磁 盘 的 最 大 空 间 为 N kB。 缺 省 值 是 4096 kB (4MB)。

’ramdisk_start=N’
设 置 启 动 块 数 值 ( 也 就 是 内 存 虚 拟 磁 盘 从 软 盘 的 多 少 偏 移 量 位 置 开 始 ) 为 N。 由 于 紧 跟 在 内 存 虚 拟 磁 盘 后 面 的 是 核 心 映 象 文 件 , 所 以 这 个 设 置 是 必 要 的 。

’noinitrd’
( 只 有 核 心 在 编 译 时 使 用 了 CONFIG_BLK_DEV_RAM 标 志 和 CONFIG_BLK_DEV_INITRD 标 志 时 才 会 有 效 ) 目 前 , 我 们 基 本 上 可 以 通 过 编 译 核 心 使 其 支 持 使 用 初 始 化 内 存 虚 拟 磁 盘 ( initrd:Initial Ramdisk) 。 当 启 用 initrd 的 时 候 , 启 动 进 程 会 载 入 核 心 和 一 个 已 经 初 始 化 的 内 存 虚 拟 磁 盘 , 然 后 核 心 会 将 initrd 转 变 为 一 个 "普 通 的 "内 存 虚 拟 磁 盘 , 并 将 它 激 活 为 可 读 写 的 根 设 备 。 接 下 来 , 会 被 执 行 /linuxrc, "真 正 的 "根 文 件 系 统 被 激 活 , 而 initrd 文 件 系 统 则 被 转 移 到 /initrd 目 录 下 。 最 后 顺 序 执 行 正 常 的 启 动 程 序 ( 比 如 说 是 /sbin/init 程 序 ) 。 如 果 希 望 得 到 关 于 initrd 的 详 细 的 介 绍 , 可 以 参 考 /usr/src/linux/Documentation/initrd.txt.

自 然 , ’noinitrd’ 参 数 告 诉 核 心 , 尽 管 核 心 是 按 照 使 用 initrd 的 参 数 来 编 译 的 , 但 是 也 不 需 要 使 用 我 们 上 面 描 述 的 过 程 。 但 是 , 仍 然 保 留 initrd 的 所 有 数 据 到 /dev/initrd. 目 录 下 。 ( 该 设 备 只 能 被 使 用 一 次 , 数 据 在 最 后 一 个 使 用 initrd 的 进 程 被 关 闭 后 会 释 放 掉 ) /dev/initrd. )

SCSI设 备 启 动 参 数

关 于 这 个 区 域 的 一 些 符 号 说 明 :

iobase 第 一 个 SCSI主 设 备 占 用 的 I/O端 口 。 它 用 16 进 制 的 数 据 指 定 , 一 般 介 于 0x200 到 0x3ff 之 间 。

irq SCSI 卡 设 置 的 硬 件 中 断 号 。 具 体 的 值 取 决 于 SCSI 卡 的 具 体 要 求 , 一 般 使 用 的 中 断 号 是 5, 7, 9, 10, 11, 12 和 15。 其 他 的 中 断 号 一 般 会 被 一 些 外 设 所 占 用 , 比 如 说 , IDE 接 口 的 硬 盘 , 软 盘 驱 动 器 , 串 口 等 等 。

scsi-id SCSI 适 配 器 在 SCSI 总 线 上 使 用 的 用 来 标 识 自 身 的 识 别 号 码 ( ID) 。 只 有 一 部 分 SCSI 适 配 器 允 许 你 改 动 该 ID 的 值 , 大 部 分 都 是 被 固 化 好 的 。 缺 省 值 一 般 是 7, 可 是 , 在 Seagate 和 Future Domain TMC-950 的 板 卡 上 是 6。

parity 是 否 允 许 SCSI 适 配 器 在 交 换 数 据 的 时 候 使 用 奇 偶 效 验 。 指 定 一 个 非 零 值 , 奇 偶 效 验 会 起 用 , 如 果 指 定 为 零 则 不 会 启 动 奇 偶 效 验 。 同 样 , 不 是 所 有 的 SCSI 适 配 卡 支 持 选 择 奇 偶 效 验 的 启 动 参 数 。

’max_scsi_luns=...’
一 个 SCSI 设 备 能 够 使 用 一 些 包 括 它 自 己 在 内 的 "子 设 备 "。 最 常 用 的 例 子 是 现 在 的 SCSI CD-ROM 设 备 能 够 同 时 处 理 多 张 光 盘 。 每 张 光 盘 使 用 "逻 辑 单 元 号 码 "(LUN)来 确 定 其 位 置 。 当 然 , 大 部 分 设 备 , 比 如 硬 盘 , 磁 带 机 都 只 能 处 理 一 个 设 备 , 因 此 它 们 的 LUN 会 被 设 置 为 0 一 些 设 计 上 有 缺 陷 的 SCSI 设 备 一 旦 发 现 LUN 号 码 不 为 零 时 , 就 可 能 不 再 继 续 工 作 。 因 此 , 如 果 在 编 译 的 时 候 没 有 设 置 CONFIG_SCSI_MULTI_LUN 标 志 , 新 的 核 心 将 使 用 0 作 为 缺 省 值 。

如 果 需 要 在 启 动 的 时 候 指 定 LUN 的 值 , 可 以 使 用 "max_scsi_luns=n" 作 为 启 动 参 数 , 而 n 是 一 个 大 于 1 小 于 8 的 数 值 。 为 了 避 免 上 面 描 述 的 问 题 , 使 用 n=1 可 以 避 免 那 些 设 备 的 造 成 的 错 误 。

SCSI 磁 带 配 置
一 些 SCSI 磁 带 设 备 的 启 动 设 置 能 够 使 用 下 面 的 格 式 来 进 行 :

st=buf_size[,write_threshold[,max_bufs]]

前 面 的 两 个 数 字 指 定 单 元 的 大 小 ( kB) , 缺 省 的 值 buf_size 是 32kB, 最 大 的 值 可 以 指 定 为 16384kB。 write_threshold 是 磁 带 得 到 的 缓 存 区 大 小 , 缺 省 的 是 30kB。 其 最 大 的 缓 存 值 依 据 不 同 的 驱 动 设 备 的 个 数 而 得 到 不 同 的 值 , 缺 省 值 是 两 个 设 备 。 缺 省 的 格 式 可 能 象 下 面 这 样

st=32,30,2

你 能 够 在 核 心 源 码 的 scsi 目 录 下 的 README.st 中 看 到 所 有 的 细 节 。

Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI 配 置
在 这 一 句 中 aha 数 值 代 表 适 配 卡 类 型 , aic 数 值 表 示 适 配 卡 的 SCSI 芯 片 类 型 , 也 包 括 象 Soundblaster-16 这 样 的 SCSI 设 备 。

SCSI 主 设 备 探 测 程 序 将 从 已 经 安 装 好 的 BIOS 中 进 行 查 找 , 如 果 没 有 的 话 , 该 检 测 将 不 会 找 到 你 的 设 备 。 那 么 , 你 就 必 须 使 用 以 下 格 式 的 启 动 参 数 :

aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]

如 果 驱 动 程 序 是 以 调 试 模 式 编 译 的 话 , 第 六 个 值 能 够 被 指 定 设 置 调 试 的 级 别 。

其 他 的 参 数 已 经 在 上 面 描 述 过 了 。 值 得 一 提 的 是 reconnect 参 数 如 果 是 非 零 值 就 能 够 允 许 设 备 "断 连 和 重 新 连 接 "。 下 面 是 一 个 例 子 。

aha152x=0x340,11,7,1

要 注 意 到 的 是 参 数 必 须 按 指 定 的 顺 序 来 设 定 , 这 意 味 着 如 果 你 需 要 指 定 奇 偶 参 数 的 话 你 就 必 须 指 定 其 他 的 所 有 参 数 。

Adaptec aha154x 配 置
aha1542 系 列 的 适 配 卡 上 有 一 个 i82077 软 盘 控 制 器 , aha1540 系 列 的 卡 没 有 。 这 种 卡 叫 做 总 线 主 控 卡 , 它 们 能 够 通 过 参 数 的 设 置 "合 理 "的 与 其 他 设 备 共 享 总 线 。 它 们 的 启 动 参 数 就 象 下 面 这 样 :

aha1542=iobase[,buson,busoff[,dmaspeed]]

通 常 可 用 的 iobase 值 会 是 0x130, 0x134, 0x230, 0x234, 0x330, 0x334 其 中 的 一 个 。 兼 容 的 卡 能 够 允 许 使 用 其 他 值 。

buson, busoff 值 表 示 的 是 该 卡 占 用 ISA 总 线 的 时 间 ( 以 微 秒 计 ) 。 缺 省 值 是 11 微 秒 开 , 4 微 秒 关 , 这 样 其 他 的 卡 ( 比 如 说 基 于 ISA 总 线 的 LANCE 以 太 网 卡 ) 就 能 够 有 机 会 访 问 ISA 总 线 。

dmaspeed 值 代 表 直 接 存 储 访 问 ( DMA) 的 传 输 速 度 ( 以 MB/秒 为 单 位 ) 。 缺 省 值 是 5MB/秒 。 较 新 版 本 的 卡 允 许 你 使 用 软 件 设 置 来 选 择 该 值 , 老 版 本 的 卡 使 用 跳 线 来 设 置 。 如 果 你 的 主 板 支 持 的 话 , 你 能 够 将 该 值 提 高 到 10MB/秒 。 如 果 使 用 5MB/秒 以 上 的 传 输 速 度 , 你 就 应 该 进 行 很 小 心 的 实 验 。

Adaptec aha274x, aha284x, aic7xxx 配 置
这 些 板 卡 能 够 接 受 象 下 面 这 样 格 式 的 参 数 :

aic7xxx=extended,no_reset

extended 值 , 如 果 是 非 零 的 话 , 表 明 大 容 量 磁 盘 的 扩 展 转 换 模 式 可 以 被 使 用 。 而 no_reset 值 如 果 是 非 零 的 话 , 告 诉 驱 动 程 序 在 设 置 SCSI 卡 后 重 新 启 动 时 不 要 重 新 设 置 SCSI 总 线 。

AdvanSys SCSI Hosts configuration (’advansys=’)
AdvanSys 驱 动 程 序 能 够 接 收 ( 最 多 ) 4 个 I/O 地 址 用 于 来 探 测 AdvanSys SCSI 卡 。 要 注 意 的 是 这 些 值 ( 如 果 使 用 了 它 们 ) 并 不 会 对 EISA 总 线 或 者 PCI 总 线 的 检 测 有 任 何 作 用 。 它 们 只 能 用 来 检 测 ISA 总 线 和 VLB 总 线 型 的 卡 。 另 外 , 如 果 驱 动 程 序 是 使 用 调 试 模 式 编 译 的 话 , 调 试 级 别 能 够 通 过 加 入 一 个 0xdeb[value] 参 数 来 设 定 。 value 可 以 是 0-f( 16进 制 ) , 代 表 可 以 得 到 多 达 16 个 级 别 的 调 试 信 息 。

AM53C974

AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset

BusLogic SCSI Hosts 配 置 (’BusLogic=’)

BusLogic=N1,N2,N3,N4,N5,S1,S2,...

作 为 更 深 层 次 的 讨 论 , 我 们 来 分 析 一 下 BusLogic 命 令 行 参 数 , 参 考 一 下 /usr/src/linux/drivers/scsi/BusLogic.c (在 我 看 的 核 心 版 本 中 是 3149-3270行 ). 下 面 的 文 字 是 一 段 精 辟 的 摘 录

参 数 N1-N5 是 整 数 。 参 数 S1 是 字 符 串 。 N1 是 适 配 卡 的 I/O 地 址 。 N2 是 标 记 队 列 深 度 ( Tagged Queue Depth) , 是 为 那 些 支 持 标 记 队 列 ( Tagged Queue) 的 目 标 设 备 而 设 置 的 。 N3 是 总 线 停 滞 时 间 ( 以 秒 计 ) , 这 是 表 示 从 SCSI 适 配 卡 重 新 启 动 SCSI 总 线 到 发 出 一 个 SCSI 指 令 之 间 的 时 间 。 N4 是 区 域 选 项 ( 只 适 合 特 定 的 单 个 适 配 卡 ) N5 是 全 局 选 项 ( 针 对 所 有 的 适 配 卡 )

字 符 串 参 数 用 来 对 于 标 记 队 列 控 制 ( TQ:Default, TQ:Enable, TQ:Disable, TQ:<Per-Target-Spec>) , 出 错 处 理 ( ER:Default, ER:HardReset, ER:BusDeviceReset, ER:None, ER:<Per-Target-Spec>) 和 适 配 卡 检 测 ( NoProbe, NoProbeISA, NoProbePCI) 。

EATA/DMA 配 置
缺 省 的 需 要 检 测 的 I/O 端 口 能 够 使 用 以 下 的 参 数 来 改 变 :

eata=iobase,iobase,....

Future Domain TMC-16x0 配 置

fdomain=iobase,irq[,adapter_id]

Great Valley Products (GVP) SCSI 控 制 器 配 置

gvp11=dma_transfer_bitmask

Future Domain TMC-8xx, TMC-950 配 置

tmc8xx=mem_base,irq

在 这 里 , mem_base 值 是 卡 所 使 用 的 内 存 映 射 的 I/O 区 域 值 。 常 见 的 值 会 是 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。

IN2000 配 置

in2000=S

这 里 S 是 一 个 用 逗 号 分 隔 的 关 键 字 [: 值 ] 可 以 被 识 别 的 关 键 字 ( 有 可 能 伴 随 着 值 ) 是 : ioport:addr, noreset, nosync:x, period:ns, disconnect:x,debug:x, proc:x. 如 果 你 要 了 解 这 些 参 数 的 功 能 的 话 , 请 看 /usr/src/linux/drivers/scsi/in2000.c.

NCR5380 和 NCR53C400 配 置
这 个 启 动 参 数 遵 循 以 下 的 格 式

ncr5380=iobase,irq,dma

或 者

ncr53c400=iobase,irq

如 果 卡 没 有 使 用 中 断 , 那 么 IRQ 值 255( 0xff) 将 被 用 来 屏 蔽 中 断 。 IRQ 值 254 表 示 自 动 检 测 , 更 多 的 细 节 可 以 从 下 面 的 文 档 中 得 到 。 /usr/src/linux/drivers/scsi/README.g_NCR5380.

NCR53C8xx 配 置

ncr53c8xx=S

这 里 S 是 一 个 用 逗 号 分 隔 的 关 键 字 [: 值 ] 可 以 被 识 别 的 关 键 字 ( 有 可 能 伴 随 着 值 ) 是 : mpar (master_parity), spar (scsi_parity),disc (disconnection), specf (special_features), ultra (ultra_scsi),fsn (force_sync_nego), tags (default_tags), sync (default_sync), verb (verbose), debug (debug), burst (burst_max). 如 果 需 要 了 解 这 些 值 的 功 能 , 请 参 考 /usr/src/linux/drivers/scsi/ncr53c8xx.c.

NCR53c406a 配 置

ncr53c406a=iobase[,irq[,fastpio]]

指 定 irq = 0 适 用 于 无 中 断 驱 动 模 式 。 设 置 fastpio = 1 设 置 为 快 速 的 处 理 器 I/O( PIO) 模 式 , 0 是 慢 速 的 处 理 器 I/O( PIO) 模 式 。

IOMEGA PPA3 配 置

ppa=iobase[,speed_high[,speed_low[,nybble]]]

这 里 iobase 的 值 是 并 口 的 地 址 ( 缺 省 值 是 0x378) , speed_high 是 在 数 据 处 理 时 延 迟 时 间 ( 以 微 秒 为 单 位 , 缺 省 值 是 1) , speed_low 是 端 口 其 他 状 态 下 的 延 迟 时 间 ( 以 微 秒 为 单 位 , 缺 省 值 是 6) , nybble 是 一 个 BOOL 值 , 表 示 是 不 是 强 制 使 用 半 个 字 节 ( 4个 位 ) 的 工 作 模 式 , 缺 省 值 是 "假 "。 更 多 细 节 请 参 考 /usr/src/linux/drivers/scsi/README.ppa.

Pro Audio Spectrum 配 置
PAS16 适 配 卡 使 用 NC5380 SCSI 芯 片 , 较 新 的 版 本 支 持 免 跳 线 模 式 。 启 动 参 数 是 下 列 格 式 :

pas16=iobase,irq

不 同 点 是 你 可 以 指 定 IRQ 的 值 是 255, 这 样 你 就 可 让 驱 动 程 序 不 要 使 用 中 断 , 当 然 这 样 会 降 低 性 能 。 通 常 iobase 的 值 是 0x388。

Seagate ST-0x 配 置
如 果 你 的 卡 没 有 在 启 动 的 时 候 被 检 测 到 , 你 需 要 使 用 下 面 格 式 的 启 动 参 数 :

st0x=mem_base,irq

这 里 mem_base 值 是 卡 所 使 用 的 内 存 映 射 的 I/O 区 域 值 。 通 常 的 值 会 是 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。

Trantor T128 配 置
这 种 卡 也 是 使 用 NCR5380 芯 片 组 , 并 且 接 受 以 下 的 选 项 :

t128=mem_base,irq

mem_base 的 值 0xc8000, 0xcc000, 0xdc000, 0xd8000。

UltraStor 14F/34F 配 置
检 测 出 的 缺 省 的 I/O 端 口 列 表 能 够 被

eata=iobase,iobase,....

所 改 变 。

WD7000 配 置

wd7000=irq,dma,iobase

Commodore Amiga A2091/590 SCSI 控 制 器 配 置

wd33c93=S

这 里 S 是 一 个 用 逗 号 分 隔 的 字 符 串 选 项 。 可 以 被 识 别 的 选 项 字 是 : nosync:bitmask, nodma:x, eriod:ns, disconnect:x, debug:x, clock:x, next. 详 细 说 明 请 参 考 /usr/src/linux/drivers/scsi/wd33c93.c.

硬 盘 驱 动 器

IDE 硬 盘 驱 动 器 /光 驱 驱 动 程 序 参 数
IDE 驱 动 程 序 可 以 接 受 的 参 数 有 很 多 , 其 范 围 包 括 从 磁 盘 规 格 到 有 缺 陷 的 控 制 器 芯 片 的 支 持 。 指 定 驱 动 程 序 参 数 的 同 时 需 要 使 用 "hdX=" 的 格 式 来 指 定 驱 动 器 。 X 的 范 围 是 从 "a" 到 "h"。

非 驱 动 器 选 项 使 用 前 缀 "hd=" 来 指 定 。 注 意 如 果 将 驱 动 器 选 项 作 用 于 非 驱 动 器 选 项 也 可 以 工 作 , 而 且 选 项 也 能 够 象 你 所 期 望 的 那 样 被 应 用 。

同 时 还 要 注 意 到 的 是 "hd=" 格 式 也 能 够 用 于 按 照 规 定 的 顺 序 ( 从 a 到 h) 检 索 到 下 一 个 没 有 指 定 的 驱 动 器 。 在 下 面 的 讨 论 中 , 我 们 可 以 看 到 "hd=" 选 项 将 会 被 短 暂 的 引 用 。 需 要 了 解 更 多 细 节 的 话 , 参 考 linux/drivers/block 目 录 下 的 README.ide

’hd=cyls,heads,sects[,wpcom[,irq]]’ 选 项
这 些 选 项 用 来 指 定 磁 盘 的 物 理 参 数 。 前 面 三 个 参 数 是 必 须 的 。 柱 面 /磁 头 /磁 道 三 个 参 数 将 被 fdisk 程 序 所 使 用 。 如 果 是 IDE 的 硬 盘 驱 动 器 , "写 补 偿 "值 会 被 忽 略 掉 。 指 定 的 IRQ 值 是 接 口 程 序 所 使 用 的 , 所 以 其 实 并 不 能 被 称 为 真 正 意 义 上 的 指 定 的 驱 动 器 参 数 。

’hd=serialize’ 选 项
具 有 双 IDE 接 口 的 CMD-640 芯 片 在 设 计 上 是 有 缺 陷 的 。 这 个 缺 陷 是 当 第 二 个 接 口 与 第 一 个 接 口 被 同 时 使 用 时 , 将 会 破 坏 你 的 数 据 。 使 用 这 个 选 项 能 够 使 你 的 接 口 永 远 不 会 同 时 使 用 。

’hd=dtc2278’选 项
这 个 选 项 告 诉 驱 动 程 序 你 拥 有 一 个 DTC-2278D 的 IDE 接 口 。 驱 动 程 序 就 会 试 图 使 用 DTC 的 指 定 操 作 来 激 活 第 二 个 接 口 并 启 动 快 速 传 送 模 式 。

’hd=noprobe’选 项
不 要 检 测 该 硬 盘 驱 动 器 。 例 如 ,

hdb=noprobe hdb=1166,7,17

将 会 屏 蔽 掉 检 测 , 可 是 仍 然 指 定 了 驱 动 器 的 物 理 参 数 , 因 为 这 样 才 能 够 将 驱 动 器 登 记 成 为 一 个 有 效 的 、 可 用 的 块 设 备 。

’hd=nowerr’选 项
一 些 驱 动 器 具 有 WRERR_STAT 位 , 并 且 永 久 有 效 。 这 个 选 项 忽 略 该 位 。

’hd=cdrom’选 项
这 个 选 项 告 诉 IDE 驱 动 程 序 有 一 个 ATAPI 兼 容 的 光 盘 驱 动 器 。 在 大 部 分 情 况 下 光 盘 驱 动 器 会 被 自 动 的 识 别 , 但 是 对 于 不 能 识 别 的 光 盘 驱 动 器 来 说 , 这 个 选 项 是 很 有 用 的 。

标 准 的 ST-506 磁 盘 驱 动 程 序 参 数 (’hd=’)
标 准 的 磁 盘 驱 动 程 序 可 以 接 受 磁 盘 的 物 理 参 数 , 就 象 上 面 的 IDE 设 备 那 样 。 注 意 无 论 怎 样 它 都 只 希 望 接 受 三 个 参 数 ( 柱 面 /磁 头 /磁 道 ) -- 过 多 或 过 少 的 参 数 都 会 被 忽 略 掉 。 当 然 , 它 只 接 受 "hd=" 这 样 的 参 数 , 象 "had=" 参 数 这 样 的 在 这 里 是 无 效 的 。 下 面 是 它 的 格 式 :

hd=cyls,heads,sects

如 果 装 有 两 个 磁 盘 驱 动 器 , 上 面 的 工 作 需 要 重 复 的 进 行 以 配 置 第 二 个 磁 盘 驱 动 器 。

XT 磁 盘 驱 动 程 序 参 数 (’xd=’)
如 果 你 不 幸 使 用 了 一 些 些 老 掉 牙 的 、 8 位 的 和 使 用 惊 人 的 125kB/s 传 输 速 度 的 卡 , 这 些 参 数 会 对 你 有 帮 助 。 如 果 它 们 不 能 被 识 别 的 话 , 你 只 能 使 用 以 下 格 式 的 启 动 参 数 :

xd=type,irq,iobase,dma_chan

type 值 指 定 该 卡 的 制 造 厂 商 , 下 面 是 厂 商 的 值 及 对 应 的 名 字 : 0= 普 通 卡 ; 1=DTC; 2,3,4=Western Digital,5,6,7=Seagate; 8=OMTI. 同 一 厂 家 出 厂 的 不 同 类 型 的 卡 的 区 别 由 BIOS 字 符 串 来 指 定 , 如 果 指 定 type, 这 些 也 就 没 有 用 了 。

函 数 xd_setup() 不 检 查 这 些 值 , 并 且 会 假 设 你 已 经 输 入 了 全 部 的 四 个 值 。 不 要 让 它 失 望 。 这 里 有 一 个 WD1002 控 制 器 示 范 用 法 --假 设 BIOS 被 关 掉 /移 走 了 --使 用 缺 省 的 XT 控 制 参 数

xd=2,5,0x320,3

Syquest’s EZ*可 移 动 磁 盘

ez=iobase[,irq[,rep[,nybble]]]

IBM MCA总 线 设 备

请 同 时 参 考 /usr/src/linux/Documentation/mca.txt.

PS/2 ESDI hard disks
有 可 能 按 下 面 的 方 法 在 启 动 时 指 定 你 所 需 要 的 磁 盘 物 理 参 数 。

ed=cyls,heads,sectors.

对 于 ThinkPad-720, 要 加 上 下 面 的 选 项

tp720=1.

IBM Microchannel SCSI Subsystem 配 置

ibmmcascsi=N

这 里 N 是 子 系 统 的 pun (SCSI ID)

CD-ROMs (Non-SCSI/ATAPI/IDE)

Aztech 接 口
语 法 是 :

aztcd=iobase[,magic_number]

如 果 你 设 置 magic_number 值 为 0x79, 那 么 该 驱 动 程 序 尝 试 在 任 何 一 个 未 知 的 固 件 上 面 执 行 。 其 他 的 值 都 会 被 忽 略 掉 。

MicroSolutions ’backpack’ 光 驱 接 口
语 法 :

bpcd=iobase

CDU-31A 和 CDU-33A Sony 接 口
这 种 光 盘 驱 动 器 的 接 口 会 出 现 在 一 些 Pro Audio Spectrum 声 卡 及 其 他 支 持 Sony 驱 动 接 口 的 卡 上 。 语 法 是 :

cdu31a=iobase,[irq[,is_pas_card]]

指 定 一 个 为 0 的 IRQ 告 诉 驱 动 程 序 该 硬 件 不 支 持 中 断 ( 如 一 些 PAS 卡 ) 。 如 果 你 的 卡 支 持 中 断 , 就 要 使 用 它 们 , 这 样 可 以 减 少 驱 动 程 序 的 CPU 占 用 时 间 。

对 于 is_pas_card 选 项 来 说 , 如 果 使 用 Pro Audio Spectrum 的 卡 则 应 该 输 入 "PAS", 否 则 就 不 需 要 指 定 了 。

CDU-535 Sony 接 口
该 光 盘 驱 动 器 接 口 的 语 法 如 下

sonycd535=iobase[,irq]

如 果 你 要 指 定 IRQ 值 的 话 , 0 可 以 被 当 成 一 个 标 志 位 被 填 到 I/O 地 址 中 。

GoldStar 接 口
该 光 盘 驱 动 器 的 接 口 语 法 是 :

gscd=iobase

ISP16 光 驱 接 口
语 法 :

isp16=[iobase[,irq[,dma[,type]]]]

( 三 个 整 数 值 , 一 个 字 符 串 ) 。 如 果 type 的 值 是 "noisp16" 的 话 , 接 口 不 会 被 配 置 。 其 他 可 以 被 接 受 的 type 值 包 括 : ’Sanyo", ’Sony’, ’Panasonic’ 和 ’Mitsumi’.

Mitsumi标 准 接 口
这 种 光 盘 驱 动 器 接 口 的 语 法 是 :

mcd=iobase,[irq[,wait_value]]

这 里 wait_value 被 用 来 设 置 为 内 部 故 障 的 超 时 时 间 。 能 否 实 现 还 需 要 依 靠 在 编 译 时 的 定 义 而 定 。 Mitsumi FX400 是 一 种 不 使 用 mcd 驱 动 程 序 的 IDE/ATAPI 光 盘 驱 动 器 。 .

Mitsumi XA/MultiSession接 口
这 是 与 我 们 上 面 介 绍 的 一 样 的 硬 件 , 只 不 过 该 驱 动 程 序 拥 有 更 多 的 特 性 。 语 法 :

mcdx=iobase[,irq]

Optics Storage 接 口
语 法 为 :

optcd=iobase

Phillips CM206 接 口
语 法 是 :

cm206=[iobase][,irq]

该 驱 动 程 序 会 假 定 所 给 的 3 到 11 之 间 的 值 是 设 置 的 IRQ 值 , 数 值 在 0x300 到 0x370 之 间 的 值 是 I/O 端 口 号 , 因 此 你 可 以 指 定 一 个 , 或 者 可 以 指 定 两 个 , 且 没 有 特 殊 的 位 置 要 求 。 它 也 接 受 "cm206=auto" 参 数 来 实 现 自 动 检 测 。

The Sanyo 接 口
语 法 是 :

sjcd=iobase[,irq[,dma_channel]]

SoundBlaster Pro 接 口
语 法 是 :

sbpcd=iobase,type

这 里 type 是 下 面 这 些 字 符 串 的 一 种 ( 大 小 写 敏 感 的 ) : ’SoundBlaster’, ’LaserMate’, 或 ’SPEA’. I/O 地 址 是 光 盘 驱 动 器 接 口 的 , 并 不 是 声 卡 的 一 部 分 。

以 太 网 络 设 备

不 同 的 驱 动 程 序 使 用 不 同 的 参 数 , 但 是 至 少 它 们 都 会 要 使 用 一 个 IRQ, 一 个 I/O 端 口 地 址 , 一 个 名 字 。 下 面 是 最 为 普 遍 的 参 数 设 置 格 式 :

ether=irq,iobase[,param_1[,...param_8]],name

第 一 个 非 数 值 的 参 数 被 作 为 名 字 使 用 。 param_n 的 值 ( 如 果 可 以 使 用 的 话 ) 对 于 不 同 的 卡 /驱 动 程 序 来 说 往 往 具 有 不 同 的 含 义 。 典 型 的 param_n 的 值 用 来 指 定 象 共 享 的 内 存 地 址 , 接 口 选 择 , DMA 通 道 等 等 。

该 参 数 最 普 遍 的 用 法 是 强 迫 进 行 第 二 以 太 网 卡 的 检 测 。 因 为 作 为 缺 省 的 情 况 来 说 , 内 核 只 是 检 测 第 一 块 以 太 网 卡 。 下 面 是 实 现 第 二 以 太 网 卡 检 测 的 简 单 方 法 :

ether=0,0,eth1

注 意 这 里 IRQ 和 I/O 的 值 都 是 0, 这 个 表 示 值 需 要 进 行 自 动 检 测 。

以 太 网 的 HowTo 文 件 对 于 多 网 卡 的 使 用 , 网 卡 /驱 动 程 序 的 指 定 , param_n 数 值 的 使 用 都 有 详 细 的 介 绍 。 有 兴 趣 的 读 者 可 以 参 考 该 文 档 中 对 自 己 拥 有 的 卡 的 说 明 。

软 盘 驱 动 器 驱 动 程 序

软 盘 驱 动 程 序 选 项 有 很 多 , 它 们 在 linux/drivers/block 目 录 下 的 README.fd 中 列 举 出 来 。 这 些 信 息 就 是 摘 自 那 个 文 件 。

floppy=mask,allowed_drive_mask
设 置 允 许 进 行 掩 码 设 置 的 驱 动 程 序 将 掩 码 设 置 为 mask。 在 缺 省 情 况 下 , 只 有 每 个 软 盘 控 制 器 的 0 号 和 1 号 单 元 允 许 这 样 做 。 这 样 规 定 的 原 因 是 有 一 些 非 标 准 的 硬 件 ( 华 硕 的 PCI 主 板 ) 在 访 问 2 号 或 者 3 号 单 元 时 , 会 令 键 盘 发 生 问 题 。 该 选 项 差 不 多 已 被 cmos 选 项 所 取 代 了 。

floppy=all_drives
为 所 有 的 软 盘 驱 动 器 设 置 驱 动 器 掩 码 。 如 果 你 在 一 个 软 盘 控 制 器 上 拥 有 两 个 驱 动 器 的 话 , 你 就 可 以 这 么 做 。

floppy=asus_pci
设 置 掩 码 为 只 允 许 0 号 和 1 号 单 元 。 ( 缺 省 值 )

floppy=daring
告 诉 软 盘 驱 动 程 序 你 有 一 个 比 较 好 的 软 盘 控 制 器 。 这 样 的 设 置 可 以 使 你 的 设 备 运 行 得 更 加 有 效 和 顺 利 , 但 是 对 于 某 些 特 定 的 控 制 器 , 这 可 能 会 引 起 错 误 , 也 可 能 会 加 快 某 些 操 作 的 速 度 。

floppy=0,daring
告 诉 软 盘 驱 动 程 序 你 的 软 盘 控 制 器 需 要 谨 慎 的 运 行 。

floppy=one_fdc
告 诉 软 盘 驱 动 程 序 你 只 有 一 个 软 盘 控 制 器 。 ( 缺 省 值 )

floppy=two_fdc or floppy=address,two_fdc
告 诉 软 盘 驱 动 程 序 你 拥 有 两 个 软 盘 控 制 器 。 第 二 个 控 制 器 假 设 位 于 address 值 。 如 果 address 的 值 没 有 给 出 的 话 , 0x370 被 当 成 假 想 位 置 。

floppy=thinkpad
告 诉 软 盘 驱 动 程 序 你 有 一 个 Thinkpad 电 脑 。 Thinkpad 的 磁 盘 变 更 线 路 与 通 常 的 机 器 相 反 。

floppy=0,thinkpad
告 诉 软 盘 驱 动 程 序 你 没 有 一 个 Thinkpad 电 脑 。

floppy=drive,type,cmos
设 置 CMOS 的 类 型 为 type 值 。 条 件 是 驱 动 器 在 掩 码 中 被 置 "允 许 "。 如 果 你 有 两 个 以 上 的 软 盘 驱 动 器 ( 在 实 际 的 CMOS 设 置 中 只 能 设 置 两 个 ) , 或 者 你 的 BIOS 使 用 的 是 非 标 准 的 CMOS 类 型 , 这 是 非 常 有 用 的 。 把 前 面 两 个 软 盘 驱 动 器 的 CMOS 设 置 为 0( 缺 省 值 ) 使 得 软 盘 驱 动 程 序 从 实 际 的 CMOS 设 置 中 读 取 它 们 的 信 息 。

floppy=unexpected_interrupts
当 接 收 到 一 个 异 常 时 显 示 相 应 的 消 息 。 ( 缺 省 行 为 )

floppy=no_unexpected_interrupts or floppy=L40SX
如 果 出 现 异 常 , 也 不 要 提 示 。 IBM L40SX 在 某 些 特 定 的 显 示 模 式 下 需 要 这 个 选 项 。 ( 这 看 起 来 象 是 视 频 和 软 盘 之 间 有 某 种 交 互 关 系 。 异 常 中 断 只 会 影 响 性 能 , 所 以 能 够 被 安 全 的 忽 略 )

声 卡 驱 动 程 序

声 卡 驱 动 程 序 也 能 够 接 受 启 动 参 数 来 替 代 编 译 时 使 用 的 值 。 这 种 方 法 并 不 值 得 推 荐 , 因 为 这 样 会 更 复 杂 。 参 数 说 明 在 /linux/drivers/sound/Readme.Linux 文 件 中 描 叙 。 它 接 受 如 下 格 式 的 启 动 参 数 :

sound=device1[,device2[,device3...[,device10]]]

这 里 每 个 deviceN 是 类 似 于 0xTaaaId 这 样 格 式 的 值 , 其 中 各 字 符 表 示 为 :

T - 设 备 类 型 : 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401。

aaa - 16 进 制 的 I/O 地 址 。

I - 16 进 制 表 示 的 中 断 地 址 。

d - DMA 通 道 号 。

这 样 的 格 式 看 起 来 是 很 混 乱 的 , 你 最 好 在 编 译 的 时 候 就 使 用 你 知 道 的 值 。 使 用 "sound=0" 的 参 数 将 会 完 全 屏 蔽 声 卡 驱 动 程 序 。

ISDN 驱 动 程 序

ICN ISDN 驱 动 程 序
语 法 :

icn=iobase,membase,icn_id1,icn_id2

这 里 icn_id1 和 icn_id2 是 两 个 字 符 串 , 用 来 为 核 心 消 息 提 供 卡 的 名 字 。

PCBIT ISDN 驱 动 程 序
语 法 :

pcbit=membase1,irq1[,membase2,irq2]

这 里 membaseN 是 第 N 块 卡 其 共 享 内 存 的 地 址 , irqN 是 第 N 块 卡 的 中 断 值 。 缺 省 值 是 IRQ 5 和 内 存 地 址 0xD0000。

Teles ISDN 驱 动 程 序
语 法 :

teles=iobase,irq,membase,protocol,teles_id

这 里 iobase 是 卡 的 I/O 端 口 地 址 , membase, irq 的 意 义 与 上 面 的 一 样 , teles_id 是 唯 一 的 ASCII 字 符 串 标 识 。

串 口 驱 动 程 序

RISCom/8 多 串 口 驱 动 程 序 (’riscom8=’)
语 法 :

riscom=iobase1[,iobase2[,iobase3[,iobase4]]]

更 多 的 细 节 请 参 考 /usr/src/linux/Documentation/riscom8.txt.

DigiBoard 驱 动 程 序 (’digi=’)
如 果 该 选 项 被 使 用 , 则 应 该 使 用 6 个 参 数 。 语 法 :

digi=status,type,altpin,numports,iobase,membase

参 数 可 以 是 整 数 值 , 也 可 以 是 字 符 串 值 。 如 果 使 用 了 字 符 串 , 则 iobase 和 membase 参 数 需 要 使 用 16 进 制 的 形 式 。 整 型 参 数 值 按 顺 序 为 : status (允 许 (1) 或 屏 蔽 (0)该 卡 ), type (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)), altpin (允 许 (1)或 屏 蔽 (0) alternate pin排 列 ), numports (该 卡 的 端 口 数 目 ), iobase (该 卡 设 置 的 I/O 端 口 号 (16进 制 )), membase (内 存 窗 口 的 基 地 址 (16进 制 )). 所 以 , 下 面 两 个 不 同 格 式 的 参 数 形 式 其 实 是 一 样 的 :

digi=E,PC/Xi,D,16,200,D0000
digi=1,0,0,16,0x200,851968

更 多 的 细 节 请 参 考 /usr/src/linux/Documentation/digiboard.txt.

Baycom 串 /并 口 无 线 Modem
语 法 :

baycom=iobase,irq,modem

只 有 三 个 参 数 ; 如 果 有 多 张 卡 , 就 使 用 多 个 该 命 令 。 modem 参 数 是 一 个 字 符 串 , 值 是 ser12, ser12*, par96, par96* 中 的 一 个 。 这 里 "*" 代 表 使 用 软 件 DCD。 ser12 和 par96 用 来 选 择 所 支 持 的 modem 类 型 。 更 多 的 细 节 请 参 考 /usr/src/linux/drivers/net/README.baycom.

Soundcard 无 线 Modem 驱 动 程 序
语 法 :

soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode

除 了 最 后 一 个 参 数 以 外 其 他 的 都 是 整 型 值 ; 你 可 能 注 意 到 参 数 中 有 一 个 0, 需 要 该 数 值 是 因 为 在 设 置 代 码 中 有 一 个 错 误 。 模 式 参 数 是 一 个 字 符 串 , 其 语 法 是 hw:modem。 这 里 hw 是 "sbc", "wss", "wssfdx" 中 的 一 个 值 , modem 是 "afsk1200", "fsk9600" 中 的 一 个 值 。

打 印 驱 动 程 序

’lp=’
对 于 1.3.75 版 本 以 后 的 核 心 来 说 , 你 可 以 告 诉 打 印 驱 动 程 序 你 使 用 了 或 没 有 使 用 哪 个 并 行 端 口 。 如 果 你 不 想 让 打 印 驱 动 程 序 取 得 所 有 可 用 的 并 口 , 后 者 是 非 常 有 用 的 , 这 样 其 他 的 驱 动 程 序 ( 比 如 说 PLIP, PPA) 就 能 够 使 用 那 些 端 口 。

参 数 的 格 式 是 多 个 I/O 地 址 及 IRQ 对 。 举 例 来 说 , lp=0x3bc,0,0x378,7 将 使 用 位 于 0x3bc 地 址 的 端 口 , "无 IRQ" (轮 询 IRQ) 模 式 , 然 后 使 用 位 于 0x378 地 址 , IRQ 为 7 的 端 口 。 位 于 地 址 0x278 的 端 口 ( 如 果 有 的 话 ) 不 会 被 检 测 , 因 为 自 动 检 测 模 式 只 发 生 于 没 有 "lp=" 参 数 的 情 况 下 。 如 果 需 要 屏 蔽 打 印 驱 动 程 序 的 话 , 使 用 lp=0 就 可 以 实 现 。

WDT500/501驱 动 程 序
语 法 :

wdt=io,irq

鼠 标 驱 动 程 序

’bmouse=irq’
总 线 型 鼠 标 驱 动 程 序 只 能 接 受 一 个 参 数 , 也 就 是 该 硬 件 需 要 的 IRQ 值 。

’msmouse=irq’
对 于 微 软 兼 容 鼠 标 来 说 参 数 与 前 面 总 线 鼠 标 是 一 样 的 。

ATARI鼠 标 设 置
atamouse=threshold[,y-threshold]

如 果 只 有 一 个 参 数 , 该 参 数 同 时 代 表 x 起 点 坐 标 和 y 起 点 坐 标 。 如 果 有 两 个 参 数 , 则 第 一 个 是 x 起 点 坐 标 , 第 二 个 是 y 起 点 坐 标 。 这 些 值 必 须 是 在 1 到 20 之 间 ( 包 括 20) ; 缺 省 值 是 2。

视 频 设 备

’no-scroll’
该 选 项 告 诉 控 制 台 驱 动 程 序 不 要 使 用 硬 件 滚 动 模 式 ( 滚 动 模 式 在 将 屏 幕 图 象 移 动 到 图 形 储 存 器 中 而 不 是 移 动 数 据 时 非 常 有 效 ) 。 一 些 Braille 机 器 会 需 要 它 的 。

作 者

Linus Torvalds

参 考

klogd(8), lilo.conf(5), lilo(8), mount(8), rdev(8).

该 手 册 页 的 大 部 分 内 容 来 自 Paul Gortmaker 写 的 Boot Parameter HowTo( 1.0.1) 版 本 。 在 该 HowTo 中 还 可 以 找 到 更 多 的 有 关 信 息 。

[中 文 版 维 护 人 ]

billpan <billpan [AT] yeah.net>

[中 文 版 最 新 更 新 ]

2000/11/06

《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。
中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh