The Linux BootPrompt-HowTo 中译版
2005-04-15 11:39:04 来源:WEB开发网核心提示:by Paul Gortmaker. v1.14, 1 February 1998 这份文件是启动提示说明(BootPRompt-Howto), 它整理了所有可以在启动时期传给 linux 核心的启动时期参数(arguments),The Linux BootPrompt-HowTo 中译版, 包含所有核心与设备的
by Paul Gortmaker.
v1.14, 1 February 1998
--------------------------------------------------------------------------------
这份文件是启动提示说明(BootPRompt-Howto), 它整理了所有可以在启动时期传给 linux 核心的启动时期参数(arguments)。 包含所有核心与设备的参数。也包含关於核心如何排序(sorts) 启动时期参数的讨论, 还有一些启动 Linux 核心常用软体概述。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 简介
核心有能力在启动时以`指令列'方式接受有限的参数资讯,类似执行程式时所给予的一些参数(argument list)。通常这是用来提供核心一些它没有办法自己确定的硬体参数资讯,或是避免/变更(override)核心自己侦测所获得的值。
然而,如果你直接把核心映像(kernel image)拷贝到软碟上,(例如 cp zImage /dev/fd0)那麽你将没有机会指定任何参数给核心。所以大部份的 Linux 使用者都使用像是 LILO 或是 loadlin 一类能够把这些参数传给核心,然後启动它的软体。
模组(MODULE)使用者请注意: 典型的启动提示参数只能用於直接编译到核心里的硬体驱动程式。它们对使用模组方式载入的驱动程式没有影响。大部份的发行套件(distributions) 都使用模组。如果你无法确定,可以对照 /etc/conf.modules 的内容查阅 man depmod 以及 man modprobe。
目前这版说明文件涵盖到 v2.0.33 为止的核心。同时也包含部份到 v2.1.84 为止,发展/测试版核心的特性。
这份启动提示说明的作者是:
Paul Gortmaker, gpg109@rsphy1.anu.edu.au
[请注意,特别给非 i386 机器或设备(尤其是 Atari/Amiga)用的启动提示参数目前并没有写进来。]
1.1 宣言与版权
这份文件并非绝对正确的真理。然而它大概是你所能找到最新的资讯。没有人必须对你硬体所发生的事负责,除了你自己以外。如果你的硬体冒烟烧掉了(...这几乎不可能!)我也没有责任。也就是说根据这份文件中所提供的资讯去实行而造成的任何损害作者概不负责。
这份文件的版权 Copyright (C) 1995-1998 属於 Paul Gortmaker。
这份文件可依第二版 GNU 通用公开授权(General Public License)的条件,包括此声明,进行拷贝。细节请参阅随附於 Linux 核心的 linux/COPYING 档案。
如果你想把这份文件集结出版,请与我联络,我会确认你取得的是否为最新的资讯。过去曾经有过时的 Linux 说明文件版本出版,造成发展者为了在新版文件中已有答案的问题想破头壳。
This document is not gospel. However, it is probably the most up to date info that you will be able to find. Nobody is responsible for what happens to your hardware but yourself. If your hardware goes up in smoke (...nearly impossible!) I take no responsibility. ie. THE AUTHOR IS NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN THIS DOCUMENT.
This document is Copyright (C) 1995-1998 by Paul Gortmaker.
This document may be copied according to the conditions of the GNU General Public License, version 2, included herein by reference. See the file linux/COPYING that comes with the Linux kernel for full details.
If you are intending to incorporate this document into a published work, please contact me, and I will make an effort to ensure that you have the most up to date information available. In the past, out of date versions of the Linux howto documents have been published, which caused the developers undue grief from being plagued with questions that were already answered in the up to date versions.
1.2 相关文件
最新版的文件永远是核心的原始程式码本身。等一下!先不要害怕。阅读原始档里的注解不需要懂任何程式设计。例如,如果你要找可以传给 AHA1542 SCSI 驱动程式的参数,那就到 linux/drivers/scsi 目录下去看 aha1542.c 这个档,在前面 100 行里就可以找到一段原文说明此 1542 驱动程式所接受的启动时期参数。
下个绝佳的参考是核心本身随附的任何文件档。目前并不多,大部份可以在 linux/Documentation 目录及其下的子目录中找到。 linux 目录通常可以在 /usr/src/ 下找到。有时候也可以在相关驱动程式目录里找到 README.foo 档案(例如 linux/drivers/XXX/ ,其中的 XXX 可能是 scsi, char, or net)。
如果你已经找到想要使用的启动参数,而现在想知道如何把这些资讯传给核心的话,那就看看你用来启动核心的软体(例如 LILO 或者是 loadlin )所随附的文件。下面有简短的概述,但不能替代启动软体所随附的文件。
1.3 Linux 新闻群组
如果你有关於传递参数给核心这方面的问题,请先读一读这份文件。如果它以及前面所提到的相关文件都没能回答你的问题,那麽你可以试试 Linux 新闻群组。当然,在轻率的贴出你的问题前应该先阅读该新闻群组,因为可能已经有人问过这个问题,或者这可能已经是个常见问题(a FAQ)。张贴之前先快速浏览 linux 常见问题会是个好习惯。你应该能够在邻近这份文件的某处找到常见问题集。
关於如何配置系统的一般性问题应该直接贴到 comp.os.linux.setup 新闻群组。 请你尊重这个有关张贴内容的一般惯例,并且,不要把你的需求交叉张贴(cross-post)到其它群组去。
1.4 新版文件
新版文件可由匿名档案传输服务(anonymous FTP)从 sunsite.unc.edu 这个站取得,在 /pub/Linux/docs/HOWTO/ 目录里。注意,SunSITE 的负载经常很大,所以建议你最好找个 Linux 档案传输映射(mirror)节点取得此文件。有新的资讯以及/或是驱动程式时就会补充资料。如果你现在读的这份拷贝已经有几个月之久,你可能得确认一下是否有新的。
这份文件系使用一套特别为 Linux 说明文件计画修改的 SGML 系统所产生的,有各种不同的输出格式,包括 postscript, dvi, ascii, html, 以及将要出现的 Texinfo。我建议以 html(经由全球资讯网浏览器)或 Postscript/dvi 格式阅读。这两者都包含 ascii 转换过程中失去的交互参考(cross-references)。
如果你想从 sunsite 取得正式的拷贝,位址(URL)在此。 BootPrompt-HOWTO
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 启动提示参数概观
这一节介绍一些可以用来传递启动时期参数给核心本身的软体□例。也给你有关这些参数系如何被处理,启动参数有什麽样的限制,以及它们如何被转送到各个适当设备的观念。
有一点很重要得注意的是在启动参数中不应该使用空白,只有在各别的参数之间可以。单一参数其值的列表(A list of values)是在各值之间以逗号格开的,再一次,没有任何空白。参见下面的□例。
--------------------------------------------------------------------------------
ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1
*RIGHT*
ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1
*WRONG*
--------------------------------------------------------------------------------
2.1 LILO (LInux LOader)
最常用的是 Werner Almesberger 所写的 LILO(LInux LOader) 程式。它有能力启动不同的核心,而且配置资讯存放在一个纯文字档里。大部份的发行套件都附有 LILO 作为预设的启动载入程式(boot-loader)。 LILO 可以一视同仁地启动 DOS, OS/2, Linux, FreeBSD 等等,而且相当有弹性。
在你开机之後,典型的配置会让 LILO 停住并印出 LILO:。然後等个几秒看看使用者有没有输入任何选项,没有的话就启动预设的系统。在 LILO 配置档里典型的系统标签是 linux 以及 backup 和 msdos。如果你想要输入启动参数,可以打在这,在输入你要 LILO 启动的系统之标签後面,像下面这个□例所显示的。
--------------------------------------------------------------------------------
LILO: linux root=/dev/hda1
--------------------------------------------------------------------------------
LILO 随附有绝佳的文件,而且为了这里所讨论的启动参数之使用,当你想要把启动时期参数加到 LILO 配置档里永久使用时 LILO 的 append= 指令就非常重要。只要简单地在 /etc/lilo.conf 档中加入像 append = "foo=bar" 这样的东东即可。可以加在该档的最前面,使它对每一节区(section)都生效,或是加在某 image= 节区里使它对该节区生效。请参阅 LILO 文件里更完整的说明。
2.2 LoadLin
另一个常用的 Linux 载入程式 `LoadLin' 则是一支有能力从 DOS 提示符号(prompt)下启动 Linux 核心(可以给予启动参数)的 DOS 程式,假如某些系统资源可用的话就行。这对使用 DOS 并想从 DOS 下启动进入 Linux 的人而言很好用。
如果你拥有一些需要使用其所提供的 DOS 驱动程式来初使化以进入可用状态 (known state)的硬体那麽它也很有用。一个常见的例子是需要使用 DOS 驱动程式设定(twiddle) 几个神秘的暂存器使它进入声霸卡相容模式的”声霸卡相容”音效卡。启动 DOS 与所附的驱动程式,然後从 DOS 提示符号下使用 LOADLIN.EXE 载入 Linux 以避免重新启动(reboot)会重置(reset)该卡。如此该卡维持在声霸卡相容模式也就能在 Linux 下使用。
还有一些其它程式可以用来启动 Linux。完整的列表请找找在你当地 Linux 档案传输映设节点里的程式,在 system/Linux-boot/ 下。
2.3 ``rdev'' 公用程式
核心本身里面的数个位元组存有少数几个核心启动参数的预设值。在大部份的系统里安装有一支称为 rdev 的公用程式知道这些值在那里,以及如何改变它们。它也能改变另外一些没有相对之核心启动参数的东西,像是预设的显示模式(video mode)。
此 rdev 公用程式通常也另称(aliased to) swapdev, ramsize, vidmode 以及 rootflags。它能够改变五种东西,分别是根目录设备(root device),置换设备(swap device),记忆体磁碟(RAM disk)之参数,预设的显示模式,及根目录设备的存取设定(readonly/readwrite)。
更多有关 rdev 的资讯可以藉由输入 rdev -h 或是参阅其线上说明页 (man rdev)获得。
2.4 核心如何排列参数
大部份的启动参数格式为:
--------------------------------------------------------------------------------
name[=value_1][,value_2]...[,value_11]
--------------------------------------------------------------------------------
其中 `name' 是一个用来唯一识别(unique)相关的值(如果有的话)是要给核心的那个部份的关键字。多个启动参数只是上述格式以空白分隔的列表。注意那个 11 是真实的限制,因为现行的程式码对每个关键字只处理 11 个以逗号分隔的参数。(然而,在非比寻常复杂的情况下你可以重覆使用相同的关键字加入 11 个以上的参数,假如设定函式支援这样搞的话。)同时也要注意,核心把列表分成(splits)最多 10 个的整数参数,後面并跟著一个字串,所以你不能真的给它 11 个整数,除非你自行在驱动程式中将第 11 个参数由字串转换成整数。
大部份排序的动作是在 linux/init/main.c 里面。首先,核心查看参数是否为 `root=', `Ro', `Rw', or `Debug' 这些特别的参数。这些特别参数的意义本文中会进一步说明。
然後它走过(walks)一系列的设定函式(放在 bootsetups 阵列里)看看所指定的参数字串(像是 `foo')是不是与其中的一个设定函式(foo_setup())相关,以设定特定设备或核心的一部份。如果你传给核心 foo=3,4,5,6,bar 这样一行那麽核心会搜寻 bootsetups 阵列看看 `foo' 是否有注册。如果有,那麽它会呼叫与 `foo' 相关联的设定函式(foo_setup())并交给它在核心指令列所给的整数参数 3, 4, 5, and 6,并交给它字串参数 bar。
2.5 设定环境变数
任何不被接受当作上述设定函式的 `foo=bar' 型式之叙述会被解译为要设定的环境变数。一个(没用的?)□例是以 `TERM=vt100' 作为启动参数。
2.6 传递参数给 `init' 程式
任何剩下的,核心不管而且不被解译成环境变数之参数接下来会传给第一个程序(process),通常是 init 程式。最常传给 init 程序的参数是 single 这个字,指示 init 把电脑启动在单人模式(single user mode) 并且不启动所有一般的驻留程式(daemons) 。查阅你系统里安装的 init 版本之线上手册看看它接受那些参数。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 一般无关设备特性的启动参数
有些启动参数并非与任何设备或周边相关。它们乃是与某个核心内部参数相关,像是记忆体的处理,记忆体磁碟的处理,根档案系统的处理以及其它东东。
3.1 根档案系统选项
下列选项皆与核心如何选择及处理根档案系统有关。
`root=' 参数
此参数告诉核心启动时以那个设备作为根档案系统使用。此设定的预设值为建造(bulid)核心时系统的根档案系统设备。例如,如果核心是在一个以 `/dev/hda1' 作为根档案系统分割区的系统上建造的,那麽预设的根档案系统设备就是 `dev/hda1'。要变更此预设值,并选择第二台软碟机作为根档案系统设备的话,可以使用 `root=/dev/fd1'。
可用的根档案系统设备为下列设备其中之一:
(1) /dev/hdaN to /dev/hddN, 这是 ST-506 相容磁碟 `a to d' 上的第 N 个分割区。
(2) /dev/sdaN to /dev/sdeN, 这是 SCSI 相容磁碟 `a to e' 上的第 N 个分割区。
(3) /dev/sdaN to /dev/xdbN, 这是 XT 相容磁碟 `a to b' 上的第 N 个分割区。
(4) /dev/fdN, 这是软碟机号码 N。 N=0 为 DOS 下的 `A:' 磁碟机,而 N=1 则为 `B:'。
(5) /dev/nfs, 这并非真的是个设备,而是一个告诉核心经由网路取得根档案系统的旗标。
上述磁碟设备的另一种数字格式,更为笨拙且更没有可携性的主要/次要(major/minor) 号码也能接受。(例如 /dev/sda3 的主要号码为 8,次要号码为 3,所以你可以使用 root=0x803 作为另一种指定方式。)
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`ro' 参数
当核心启动时它需要有个根档案系统以读取一些基本的东西。这就是挂在根目录的根档案系统。然而,如果根档案系统以可以写入的方式挂上来的话,你就无法在有档案写到一半的情况下确实地检查档案系统的完整性。此 `ro' 选项告诉核心以唯读的方式挂入根档案系统,如此任何档案系统一致性检查程式(fsck) 在执行检查时都可以安全地假设没有档案写到一半的情况。没有任何程式或程序可以写入此档案系统直到它重新以可读写的方式挂入为止。
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`rw' 参数
这与上一个完全相反,它告诉核心以可读取/写入的方式挂入根档案系统。无论如何,预设是以可读写方式挂入根档案系统。不要在以可读写方式挂入的档案系统上执行任何的 `fsck' 程式。
此参数使用的值与上一个储存於核心映像的参数相同,可经由 rdev 存取。
3.2 与记忆体磁碟(RAM Disk)管理有关的选项
下列选项皆与核心如何处理记忆体磁碟设备有关,这种虚拟磁碟设备通常在安装阶段启动机器时使用,或配合使用模组化驱动程式以存取根档案系统的机器上。
`ramdisk_start=' 参数
为了使核心映像能够与压缩的记忆体磁碟映像放在一张软碟内,所以加入这个 `ramdisk_start=' 指令。核心不能够放在压缩过的记忆体磁碟之档案系统映像里,因为它得从最开始的第零磁区开始放置,如此基本输出入系统(BIOS)才能载入启动磁区而核心也才能够开始启动执行。
注意:如果你使用的是没有压缩的记忆体磁碟映像,那麽核心可以是要载入记忆体磁碟之档案系统映像的一部份,且该软碟可以由 LILO 启动,两者也可以如同压缩之映像般为分开的两部份。
如果你使用启动/根(boot/root)两张磁片的方式(核心一张,记忆体磁碟映像放第二张)那麽记忆体磁碟会由第零磁区开始,并使用零作为偏移值(offset)。因为这是预设值,你根本不必真的去使用这个指令。
`load_ramdisk=' 参数
此参数告诉核心是否要载入一份记忆体磁碟映像。 `load_ramdisk=1' 指定核心将软碟载入至记忆体磁碟中。预设值为零,表示核心不应该试著去载入记忆体磁碟。
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`prompt_ramdisk=' 参数
此参数告诉核心是否要给你个提示要求插入含记忆体磁碟映像的磁片。
在只用一张软碟的配置下记忆体磁碟映像与刚刚载入/启动的核心在相同的软碟上故不需要提示。这种情况可以用 `prompt_ramdisk=0'。在使用两张软碟的配置下你需要有个抽换磁片的机会,故可以使用 `prompt_ramdisk=1'。因为这是预设值,所以不必真的去指定它。(轶闻:从前人们习惯使用 `vga=ask' 这个 LILO 选项来暂时停止启动程序以取得抽换启动磁片及根磁片的机会。)
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`ramdisk_size=' 参数
因为记忆体磁碟实际上会依需求动态成长,所以其大小有个上限加以限制以免它用光所有可用的记忆体而坏事。预设值 4096(i.e. 4MB) 应该足够满足大部份的需求。你可以用这个启动参数变更此预设值。
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`ramdisk=' 参数(过气了)
(注意:这个参数是旧的,除了 v1.3.47 版以及更旧的的核心之外不应该使用。应该使用的是前面所述的指令)
这个参数以千位元组(kB)为单位指定记忆体磁碟设备的大小。例如,如果想要把位於一张 1.44MB 软碟上的根档案系统载入至记忆体磁碟设备,可以用:
--------------------------------------------------------------------------------
ramdisk=1440
--------------------------------------------------------------------------------
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`noinitrd'(启始记忆体磁碟)参数
v2.x 及更新的核心有个特性,根档案系统最初是记忆体磁碟,然後核心执行记忆体映像上的 /linuxrc。这个特性典型系用於载入某些挂入真正的根档案系统所需要的模组(例如,载入储存於记忆体磁碟映像里的 SCSI 驱动程式,然後挂入在某 SCSI 磁碟里真正的根档案系统。)
实际的 `noinitrd' 参数决定核心启动之後如何处理 initrd 资料。如果有指定,它可以经由 /dev/initrd 存取,可以在记忆体释放回系统之前读取一次。有关初始之记忆体磁碟的完整细节与使用请参阅 linux/Documentation/initrd.txt。此外,最新版的 LILO 及 LOADLIN 应该会包含其它有用的资讯。
3.3 与记忆体管理有关的参数
下列参数会改变 linux 侦测或处理系统实体及虚拟记忆体的方式。
`mem=' 参数
这个参数有两个目的:原先的目的是指定机器所安装的记忆体数量(如果你想限制 linux 能使用的记忆体数量可以指定一个较小的值)。第二个(很少用)目的则是指定 mem=nopentium 以便告诉 linux 核心不要使用 4MB 分页表(page table)这个效能特性。
在个人电脑规格中,原先定义回传安装记忆体数量的基本输出入呼叫被设计成最多只能回报最多 64MB。(是的,另一个缺乏远见的设计,就像 1024 磁簇的磁碟限制...哎。) Linux 在启动时会使用此基本输出入呼叫以确定安装的记忆体数量。如果你安装的记忆体超过 64MB,可以用这个启动参数告诉 Linux 你有多少记忆体。下面引用 Linus 对 mem= 参数的说明。
”核心会接受任何你所给予的 `mem=xx' 参数,而如果它发现你骗它,那它迟早一定会当的很难看。这个参数指示可以定址的最高记忆体位址,所以,例如 `mem=0x1000000' 表示你有 16MB 的记忆体。对拥有 96MB 的机器而言此值为 `mem=0x6000000'。
注意注意注意:
某些机器可能会使用最上层(top)的记忆体作为基本输出入系统的快取等等一类用途,所以你可能并非实际拥有 96MB 的可定址空间。反之亦然:
某些晶片组会将基本输出入系统涵盖的实体记忆体区域对应(map)到最上层记忆体後面,所以记忆体最上层实际上可能是 96MB + 384kB。如果你告诉 linux 的记忆体比它实际上拥有的还多,那就会出状况:也许不会立刻出事,但最後一定会发生。”
注意,此参数并非一定得是十六进位型态,而且可以使用 `k' 与 `M'(大小写无关)字尾分别指定千位元组以及百万位元组。(`k' 会把你给的值旋转(shift) 10 位元,而 `M' 会旋转 20 位元。)上述警告依然没变,沿上例,一台 96MB 的机器也许可以设 mem=97920k 而无法使用 mem=98304k 或 mem=96M。
`swap=' 参数
这允许使用者调整某些与磁碟置换(swapping)有关的虚拟记忆体参数(VM)。它接受下列八个参数:
--------------------------------------------------------------------------------
MAX_PAGE_AGE
PAGE_ADVANCE
PAGE_DECLINE
PAGE_INITIAL_AGE
AGE_CLUSTER_FRACT
AGE_CLUSTER_MIN
PAGEOUT_WEIGHT
BUFFEROUT_WEIGHT
--------------------------------------------------------------------------------
有兴趣的玩家建议你阅读 linux/mm/swap.c 并注意 /proc/sys/vm 里面的东西。
`buff=' 参数
类似 `swap=' 参数,这允许使用者调整某些与缓冲记忆体(buffer)之管理相关的参数。它接受下列六个参数。
--------------------------------------------------------------------------------
MAX_BUFF_AGE
BUFF_ADVANCE
BUFF_DECLINE
BUFF_INITIAL_AGE
BUFFEROUT_WEIGHT
BUFFERMEM_GRACE
--------------------------------------------------------------------------------
有兴趣的玩家建议你阅读 linux/mm/swap.c 并注意 /proc/sys/vm 里面的东西。
3.4 以网路档案系统(NFS)作为根档案系统使用的参数
藉由透过网路档案系统(NFS: Network FileSystem) 提供根档案系统 Linux 支援无碟(diskless)工作站这样的系统。这些参数系用来告诉无碟工作站要从那一台机器取得其系统。同时要注意 root=/dev/nfs 参数是必需的。有关使用网路档案系统作为根档案系统之细节说明在 linux/Documentation/nfsroot.txt 档案里。你应该阅读这个档案,因为下面只是从那个档案直接拿过来的快速摘要。
`nfsroot=' 参数
这个参数告诉核心以那一台机器,那个目录以及那些个网路档案系统选项作为根档案系统使用。此参数的格式如下:
--------------------------------------------------------------------------------
nfsroot=[:][,]
--------------------------------------------------------------------------------
如果指令列上没有给定 nfsroot 参数,则将使用 `/tftpboot/%s' 预设值。其它选项如下:
-- 指定网路档案系统伺服端的网际网路位址(IP address)。如果没有给定此栏位,则使用由 nfsaddrs 变数(见下面)所决定的值。此参数的用途之一是允许使用不同机器作为反向位址解析协定(RARP) 及网路档案系统伺服端。通常你可以不管它(设为空白)。
-- 伺服端上要作为根挂入的目录名称。如果字串中有个 `%s' 符记(token),此符记将代换为客户端网际网路位址之 ASCII 表示法。
-- 标准的网路档案系统选项。所有选项都以逗号分开。如果没有给定此选项栏位则使用下列的预设值:
port = as given by server portmap daemon
rsize = 1024
wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac
`nfsaddrs=' 参数
这个启动参数设定网路通讯所需的各种网路界面位址。如果没有给定这个参数,则核心会试著使用反向位址解析协定以及/或是启动协定(BOOTP)以找出这些参数。其格式如下:
--------------------------------------------------------------------------------
nfsaddrs=::::::
--------------------------------------------------------------------------------
-- 客户端的网际网路位址。如果没设,此位址将由反向位址解析协定或启动协定来决定。使用何种协定端视配置核心时打开的选项以及 参数而定。如果设定此参数,就不会使用反向位址解析协定或启动协定。
-- 网路档案系统伺服端之网际网路位址。如果使用反向位址解析协定来决定客户端位址并且设定此参数,则只接受从指定之伺服端传来的回应。要使用不同的机器作为反向位址解析与网路档案系统伺服端的话,在此指定你的反向位址解析协定伺服端(保持空白)并在 nfsroot 参数(见上述)中指定你的网路档案系统伺服端。如果此项目空白则使用回答反向位址解析协定或启动协定之伺服端的位址。
-- 闸道(gateway)之网际网路位址,若伺服端位於不同的子网路上时。如果此项目空白则不使用任何闸道并假设伺服端在本地的(local)网路上,除非由启动协定接收到值。
-- 本地网路介面的网路遮罩。如果为空白,则网路遮罩由客户端的网际网路位址导出,除非由启动协定接收到值。
-- 客户端的名称。如果空白,则使用客户端网际网路位址之 ASCII-标记法,或由启动协定接收的值。
-- 要使用的网路设备名称。如果为空白,所有设备都会用来发出反向位址解析请求,启动协定请求由最先找到的设备发出。网路档案系统使用接收到反向位址解析协定或启动协定回应的设备。如果你只有一个设备那你可以不管它。
-- 用以作为自动配置的方法。如果是 `rarp' 或是 `bootp' 则使用所指示的协定。如果此值为 `both' 或空白,若配置核心时有打开这两种协定则都使用。 `none' 表示不使用自动配置。这种情况下你必须指定前述栏位中所有必要的值。
此 参数可以作为 nfsaddrs 的参数单独使用(前面没有任何 `:` 字元),这种情况下会使用自动配置。然而,此种情况不能使用 `none'作为值。
3.5 其它另外的核心启动参数
这些启动参数让使用者调整某些核心内部的参数。
The `debug' Argument
核心经由 printk() 函式传达重要(以及没那麽重要)的讯息给管理者(Operator)。如果讯息很重要, printk() 函式也会显示到主控台(console)上,就如同丢给 klogd() 记录到磁碟上一般。如同记录到磁碟上一般在主控台上显示重要讯息的原因是因为在不幸的状况下(例如磁碟损坏)讯息将无法存入磁碟而漏失。
到底什麽重要什麽不重要其门槛藉由 console_loglevel 变数设定。预设是把任何比 DEBUG(等级 7)重要的东西记录到主控台上去。(这些等级定义在 kernel.h 含入档中)指定 debug 启动参数将使主控台的记录等级设为 10,所以所有核心讯息都会出现在主控台上。
主控台记录等级通常也可以在执行期间经由 klogd() 程式选项设定。查看你系统之安装版本的线上说明页看看该怎麽做。
`init=' 参数
核心启动时预设执行 `init' 程式,这支程式接下来经由执行 getty 程式,跑 `rc' 指令稿(scripts)以及诸如此类的东东为使用者设定电脑。核心首先寻找 /sbin/init ,然後是 /etc/init (depreciated),而最後它会去试 /bin/sh (可能在 /etc/rc )。如果说,例如,如果你的 init 程式坏掉了,只要使用 init=/bin/sh
这个启动参数就能让你在启动时直接跳到解译环境(shell),使你能够换掉坏掉的程式。
`no387' 参数
某些 i387 协同处理器晶片有臭□(bugs),在 32 位元保护模式下会出现。例如,部份早期的 ULSI-387 晶片在执行浮点运算时会死当,这似乎是因为 FRSAV/FRRESTOR 指令的一只□。使用 `no387' 启动参数使 Linux 就算你真的有数值辅助处理器也忽略它的存在。当然编译核心时你必须加入数值模拟支援!如果你有某些能够使用 80287 浮点处理单元(FPU)的古董级 386 机器那这也很有用,因为 linux 无法使用 80287。
`no-hlt' 参数
i386(及其後继者)家族的中央处理器有个 `hlt' 指令用来告诉中央处理器现在□□没事做,直到某个外部设备(键盘,数据机,磁碟等等)呼叫中央处理器执行任务为止。这个指令会使中央处理器进入‘省电’模式,像个死人(zombie)般坐在那里直到有个外部设备叫它起来(经由中断(interrupt) ,通常是)。部份早期的 i486DX-100 晶片处理这个 `hlt' 指令有问题,使用过这个指令後它们不能可靠地回到运作模式。使用 `no-hlt' 这个指令告诉 Linux当无事可做时跑个无穷回圈而不停住你的中央处理器。让有这些晶片的人们能够使用 Linux,然而还是建议有可能的话就换掉这些晶片。
`no-scroll' 参数
启动时使用这个参数可以关闭卷页(scrolling)特性,这个特性使得 Braille 终端机难以使用。
`panic=' 参数
在不太可能发生的核心异常(kernel panic)事件下(像是核心侦测到内部错误,并认为这样的错误严重到应该发出警讯并停止任何作业),
预设的处理方式是就停在那儿直到有人过来并注意到萤幕上的异常警讯然後重新启动机器。
然而如果机器是在无法触及,隔离的地方跑的话也许会希望它能自动重置自己然後回到线上。例如,启动时使用 panic=30 会使核心在发生核心异常 30 秒後试著重新启动自己。若此值为零则使用预设的处理方式,就是一直在那儿等。
注意,这个逾时(timeout)设定也可经由 /proc/sys/kernel/panic 系统控制 (sysctl)介面读取与设定。
`profile=' 参数
核心发展者们可以打开某个选项以得知核心如何使用中央处理器时间以及用在那□,以便最大化效率(efficiency)与效能(performance)。这个选项让你在启动时设定观察变化的计数(the profile shift count)。此值一般设为二。你也可以在编译核心时打开此功能。无论那种情况,你都需要像 readprofile.c 这类可以处理 /proc/profile 输出的工具。
`reboot=' 选项
这个选项控制重置电脑时(典型是经由 /sbin/init 处理的 Control-Alt-Delete 动作) Linux 所做的重新启动之种类。新的 v2.0 核心预设的动作是做‘冷’开机(完全重置,基本输出入系统执行记忆体检查等等)以代替‘暖’开机(没有完全重置,没有记忆体检查)。
改为预设冷开机是为了要在便宜的/烂烂的,暖开机请求没办法重新启动的硬体上工作。可以使用 reboot=w 设为原先的方式(暖开机),其实可以用任何以 w 开头的字来设定。
为什麽这会造成困扰?某些具有记忆体快取的磁碟控制器能够感测到暖开机,并且把所有暂存的资料写到磁碟上。冷开机可能会重设该卡,在快取卡记忆体里面的回写(write-back)资料就会漏失。已经有人回报系统记忆体检查很花时间以及/或是小型电脑智慧介面基本输出入系统 (SCSI BIOSes)冷开机时花较久的时间初始化是使用暖开机的好理由。
`reserve=' 参数
这是用来保护输出入埠区域不要侦测。这个指令的格式是:
reserve=iobase,extent[,iobase,extent]...
在某些机器上也许必须避免设备驱动程式去检查(自动侦测)在某些特殊区域的设备。这可能是因为硬体设计的不良而会使得启动终止(像是某些乙太网路卡),会被误认的硬体,状态会因为较前面的侦测而改变的硬体,或者只是你不想让核心初始化的硬体。
此 reserve 启动时期参数藉由指定一段不要侦测的输出入埠□围以解决此问题。此段区域在核心的输出入埠注册表格当中被视为已经在该处找到设备(名称为 reserved )而保留。注意,绝大部份的机器都不需要此机制。只有真的有问题或特殊情况才会需要用到这东东。
位於指定之区域中的输出入埠乃是靠著在侦测一段输出入区域之前先执行 check_region() 以避免设备侦测。这用於某些遇上 NE2000 会挂掉或者会误认其它设备的驱动程式。
正确的设备驱动程式不应该去侦测保留区域,除非另一个启动参数明确地指示它这样做。这意谓著 reserve 经常与其它启动参数一起使用。如果你指定一段保留区域以保护某特定设备的话,你必须明确地指定此设备的侦测□围,大部份的驱动程式如果有给它们明确的位址就会忽略输出入埠注册表。
例如,此启动列
--------------------------------------------------------------------------------
reserve=0x300,32 blah=0x300
--------------------------------------------------------------------------------
保留 0x300-0x31f 不让除了 `blah' 的设备驱动程式外的所有驱动程式去侦侧。
如同一般启动时期所用的格式,它也有 11 个参数之限制,因此每个 reserve 关键字只能指定 5 个保留区域。如果你有异常复杂的需求,可以使用多重 reserve 指定。
`vga=' 参数
注意,这并不真的是个启动参数。它是由 LILO 解译的选项,与所有其它由核心处理的启动参数并不相同。然而因为它的使用变得如此普遍故值得在此加上一笔。这个选项也可以经由使用 rdev -v 或相同的 vidmode 指令对 vmlinuz 档案作设定。这使得设定程式码能够在真的启动 Linux 核心之前使用视讯(video)基本输出入系统改变预设的显示模式。典型的模式是 80x50, 132x44 等等。使用此选项最好的方式是以 vga=ask 启动,如此在启动核心前会有个列表提示你的显示卡可以使用的各种模式。一旦你从上述列表得知你想使用的号码,以後就可以把它放在 `ask' 的位置。更进一步的资讯请参阅随附於所有新版核心的 linux/Documentation/svga.txt 档案。
注意,新的核心(2.1 版以上)有改变显示模式的设定程式码选项 Video mode selection support,所以如果你想使用这个特性那麽你就得打开这个选项。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 小型电脑智慧介面(SCSI)周边的启动参数
这一节包含用来传递有关小型电脑智慧介面(SCSI)卡(host adapters)及 SCSI 设备之资讯的启动参数说明。
4.1 中层驱动程式的参数
中层驱动程式处理像磁碟,光碟及磁带等等而不深入介面卡的特性。
最大侦测逻辑号码(LUN)数(`max_scsi_luns=')
每个 SCSI 设备本身里面都可以包含一个‘子设备’号码。最常见的例子是那些一次可以放好几张片子的新型 SCSI 光碟机。每张光碟由指定之设备的‘逻辑号码(Logical Unit Number: LUN)’定址。但大部份的设备,像硬碟机,磁带机等等都是单一个的设备,而逻辑号码设为零。
只有一个逻辑编号的设备若轫体写得不好就会出问题。某些设计不良的 SCSI 设备(旧的以及就那麽巧被你碰上的新设备)无法接受不为零的逻辑编号侦测。它们会挂在那,而且有可能把整个 SCSI 汇流排(bus)都带著一起陪葬。
较新的核心有一个配置选项可以让你设定所要侦测之最大逻辑编号。预设只侦测到逻辑编号零以必免上述问题。
在启动时指定要侦测的逻辑号码可以键入 `max_scsi_luns=n' 作为启动参数,其中 n 是介於壹到捌的数字。要避免上述问题可以使用 n=1 以避免这些个烂设备不高兴。
SCSI 磁带驱动程式的参数(`st=')
SCSI 磁带驱动程式的某些启动时期配置可以藉由使用下列参数达成:
--------------------------------------------------------------------------------
st=buf_size[,write_threshold[,max_bufs]]
--------------------------------------------------------------------------------
前面两个数字的单位是千位元组。预设的 buf_size 是 32kB。最多可以指定为 16384kB,大的荒谬。 write_threshold 缓冲区确认送至磁带的值,预设为 30kB。最大缓冲区个数视侦测到的装置数量而定,预设值为二。使用□例如:
--------------------------------------------------------------------------------
st=32,30,2
--------------------------------------------------------------------------------
完整的细节可以在 README.st 档案中找到,位於核心原始程式码结构(tree)的 scsi 目录里。
4.2 SCSI 卡的参数
本节的常见标记:
iobase -- SCSI 卡进驻的第一个输出入埠。以十六进制表示法指定,而且通常落在 0x200 到 0x3ff 之间。
irq -- 介面卡设定使用的硬体中断。其可用的值与介面卡有关,但通常是 5, 7, 9, 10, 11, 12, 以及 15。其它值通常由一般的周边设备使用,像是 IDE 硬碟,软碟,串列埠等等。
dma -- 介面卡使用的直接记忆体存取(Direct Memory access:DMA)通道。典型只用於具汇流排主控(bus-mastering)能力的卡。 PCI 及 VLB 介面卡本即具汇流排主控,且不需要任何 ISA 直接记忆体存取通道。
scsi-id -- 在 SCSI 汇流排上,介面卡用来识别它本身的识别号码。只有某些介面卡允许你改变这个值,大部份则都内定且永久不变。通常预设值是七,但西捷(Seagate)以及 Future Domain TMC-950 卡使用六。
parity -- SCSI 介面卡是否期望所连接的设备交换资讯时提供同位检查码。指定一表示打开同位检查,零则为关闭。同样地,并非所有的介面卡都支援选用同位检查这个启动参数。
Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=')
aha 编号对照卡而 aic 编号对照这些卡上实际的 SCSI 晶片,包含 Soundblaster-16 SCSI。
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。然後你就得使用这种型式的启动参数:
--------------------------------------------------------------------------------
aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]
--------------------------------------------------------------------------------
注意,如果此驱动程式编译时有打开错误侦测,则可以指定第六个值以设定侦错层级。
所有参数都如本节最前面所述,而 reconnect 值如果不为零则允许设备离线/重新连线。使用□例如下:
--------------------------------------------------------------------------------
aha152x=0x340,11,7,1
--------------------------------------------------------------------------------
注意,参数必须依序指定,意谓如果你想指定同位检查,那麽你也得指定 iobase, irq, scsi-id 以及 reconnect 值。
Adaptec aha154x (`aha1542=')
这些是 aha154x 系列的卡。 aha1542 系列的卡板子上有一个 i82077 软碟控制器,而 aha1540 系列的卡没有。
这些卡是汇流排主控卡,而且有可以设定”公平性”的参数,用来与其它设备共用汇流排。其启动参数看起来像下面这样。
--------------------------------------------------------------------------------
aha1542=iobase[,buson,busoff[,dmaspeed]]
--------------------------------------------------------------------------------
可用的 iobase 值通常是: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334 其中之一。仿(Clone)卡可能允许使用其它值。
buson, busoff 的值是该卡占用工业标准架构(ISA)汇流排的毫秒数(microsecond)。预设值是 11us on, and 4us off,如此其它的卡(像是工业标准架构介面的 LANCE 乙太网路卡)就有机会存取工业标准架构汇流排。
dmaspeed 的值是进行直接记忆体存取的速率(以百万位元组每秒为单位)。预设为 5MB/s。新版的卡可以让你从软体配置(soft-configuration)中选择这个值,较旧的卡则使用跳接(jumpers)。假设你的主机板够力的话可以使用 10MB/s。如果使用 5MB/s 以上的值请小心试验。
Adaptec aha274x, aha284x, aic7xxx (`aic7xxx=')
这些卡可以接受此种格式的参数。
--------------------------------------------------------------------------------
aic7xxx=extended,no_reset
--------------------------------------------------------------------------------
如果 extended 的值不为零则表示打开对大容量磁碟的延伸转换(extended translation)。 no_reset 值如果不为零则是告诉驱动程式启动时,设定介面卡的时候不要重置 SCSI 汇流排。
AdvanSys SCSI Host Adaptors (`advansys=')
AdvanSys 驱动程式最多能接受四个输出入位址以侦测 AdvanSys SCSI 卡。注意,这些值(若使用的话)完全不会影响 EISA 或是 PCI 的侦测。它们仅用来侦测 ISA 以及 VLB 介面卡。还有,如果此驱动程式编译时有打开错误侦测的话,那麽错误侦测的输出输出层级可以藉由加入 0xdeb[0-f] 参数来设定。
Always IN2000 介面卡 (`in2000=')
跟其它 SCSI 卡的启动参数不同, IN2000 驱动程式使用由美国标准交换码(ASCII) 所组成的前置(prefix)字串代表大部份的整数参数。这是一份支援列表:
ioport:addr -- 其中 addr 是卡(通常没有唯读记忆体)的输出入位址。
noreset -- 没有选用的参数。这避免启动时期的 SCSI 汇流排重置动作。
nosync:x -- x 是个位元遮罩(bitmask),其中前面七个位元对应到七个 SCSI 设备(第零个位元是第零号设备,馀类推)。
设定其中的位元以避免对该设备进行同步(sync)协商(negotiation)。驱动程式预设是关闭所有设备之同步。
period:ns -- ns 是以奈秒(nanoseconds)为单位之最小 SCSI 资料传输时间区段 (period)。预设为 500; 可接受的值是 250 到 1000。
disconnect:x -- x = 0 即绝不允许离线,2 即一定可以离线。 x = 1 则为’适当’时可离线,这是预设值,而且是一般情况的最佳选择。
debug:x 如果定义了 `DEBUGGING_ON' 则 x 就是设定不同错误侦测输出的位元遮罩-参见 in2000.h 中定义的 DB_xxx。
proc:x -- 如果定义了 `PROC_INTERFACE' 则 x 就是决定 /proc 介面运作方式及功能的位元遮罩-参见 in2000.h 中定义的 PR_xxx。
下面列出一些使用□例:
--------------------------------------------------------------------------------
in2000=ioport:0x220,noreset
in2000=period:250,disconnect:2,nosync:0x03
in2000=debug:0x1e
in2000=proc:3
--------------------------------------------------------------------------------
使用 AMD AM53C974 的硬体 (`AM53C974=')
与其它驱动程式不同,这一个不使用启动参数来传达输出入埠,硬体中断或直接记忆体存取通道。(既然 Amd53C974 是个 PCI 设备,其实也不需要作这些设定。)取而代之的是用来传达介面卡与设备间传输模式与传输率的参数。这最好用□例来解释:
--------------------------------------------------------------------------------
AM53C974=7,2,8,15
--------------------------------------------------------------------------------
这会被解释成这样:‘对於 SCSI-ID 7 的控制器与 SCSI-ID 2 的设备间之通讯,使用最大 8MHz 之同步模式传输率。应协商 15 位元组的偏移值。’ 详细资料可在 linux/drivers/scsi/README.AM53C974 档案里找到。
BusLogic SCSI 介面卡与 v1.2 的核心 (`buslogic=')
在旧版的核心中, buslogic 驱动程式只接受一个参数,就是输出入位址。它能接受下列值:0x130, 0x140, 0x230, 0x234, 0x330, 0x334。
BusLogic SCSI 介面卡与 v2.x 的核心 (`BusLogic=')
在 v2.x 核心中,BusLogic 驱动程式接受许多参数。(注意上面的大小写;是大写的 B 以及 L!!! )。下面的细节是直接从 v2.0 核心中的 Leonard N. Zubkoff's 驱动程式拿过来的。
这个 BusLogic 驱动程式的核心命令列是由 "BusLogic" 驱动程式识别字,加上各个以逗号格开的选用性整数序列,後面跟著各个选用性的字串序列所组成。每行命令列都用於一张 BusLogic 卡,在使用多张 BusLogic 卡的系统上可以使用多个命令列来设定。
第一个整数指定介面卡所在的 I/O 位址。如果不指定则预设值为零,表示把这个参数设为预设侦测顺序中找到的第一张 BusLogic 卡。如果在命令列上指定了任何的 I/O 位址参数,预设侦测顺序就会被忽略。
第二个整数指定用於支援伫列运作(Tagged Queuing)的目标设备之伫列深度。伫列深度是容许同时送出的 SCSI 指令数。如果没有指定则预设值为零,表示使用根据介面卡的总伫列深度及数目,种类,速度,以及侦测目标设备的能力所自动判断的值。对於需要使用 ISA 错误缓冲区(Bounce Buffers)的介面卡,伫列深度自动设为 BusLogic_TaggedQueueDepth_BB 以避免 DMA 错误缓冲记忆体的过载。不支援伫列运作的目标设备使用 BusLogic_UntaggedQueueDepth 定义的伫列深度。
第三个整数指定汇流排停置(Settle)时间,以秒为单位。这乃是重置介面卡使 SCSI 汇流排重置到发出 SCSI 指令之间的时间。如果没有指定则预设值为零,表示使用 BusLogic_DefaultBusSettleTime 的值。
第四个整数指定区域选项。如果没有指定则预设值为零。注意,区域选项只用於特定的介面卡。
第五个整数指定全域选项。如果没有指定,预设值为零。注意,全域选项应用於所有的介面卡。
字串选项用来提供对伫列运作,错误回复,以及介面卡侦测之控制。
伫列运作的指定以 "TQ:" 开头,可以明确地指定是否允许有此支援的目标设备使用伫列运作。下面是可用的指定选项:
TQ:Default -- 伫列运作的允许与否以 BusLogic 卡的轫体版本以及伫列深度的值是否允许多重指令作为判断基础。
TQ:Enable -- 对所有接在这张卡上的目标设备打开伫列运作,忽略介面卡轫体版本所加诸的限制。
TQ:Disable -- 对所有接在这张卡上的目标设备关闭伫列运作。
TQ:<每个目标的设定> -- 各别控置对每个目标设备的伫列运作。 <每个目标的设定>是由 "Y", "N", and "X" 字元组成的串列。 "Y" 打开伫列运作,"N" 关闭伫列运作,而 "X" 接受以轫体版本为基础的预设值。第一个字元代表目标设备 0,第二个代表设备 1,依此类推;如果 "Y", "N" and "X" 字元串列并未涵盖所有的目标设备,未指定的字元将被假设为 "X"。
注意,明确地指定要使用伫列运作可能会出问题;这主要是方便用来关闭对某些没能正确实作此功能之目标设备的伫列运作。
错误回复策略的指定以 "ER:" 开头,可以明确地指定因 SCSI 指令失败,无法成功完成而呼叫 ResetCommand 时执行的错误回复动作。下面是可用的指定选项。
ER:Default -- 错误回复依 SCSI 子系统的建议选择强制重置(Hard Reset)与汇流排设备重置其中之一。
ER:HardReset -- 错误回复将会启始介面卡的强制重置,这也会引起 SCSI 汇流排的重置。
ER:BusDeviceReset -- 错误回复将送出汇流排设备重置讯息给引起错误的目标设备。
如果该目标设备再次造成错误回复而且送出汇流排设备重置讯息之後该目标设备没有一次成功完成 SCSI 指令的话,则尝试进行强置重置。
ER:None -- 错误回复将被冻结。这个选项应该只用於 SCSI 汇流排重置或汇流排设备重置会使目标设备无法回复的情况。
ER:<每个目标的设定> -- 错误回复将对每个目标设备进行各别控制。 <每个目标的设定>是由 "D", "H", "B", and "N" 字元所组成的串列。 "D" 选择预设值,"H" 选择强置重置,"B" 选择汇流排设备重置,而 "N"选择不重置。第一个字元代表目标设备 0,第二个代表设备 1,依此类推;如果 "D", "H" , "B" and "N" 字元串列并未涵盖所有的目标设备,未指定的字元将被假设为 "X"。
介面卡侦测的指定包含下列字串:
NoProbe -- 不执行任何一种侦测,因此不会侦测到 BusLogic 介面卡。
NoProbeISA -- 不侦测标准 ISA I/O 位址,因此只会侦测到 PCI 介面卡。
NoSortPCI -- 依 PCI BIOS 所提供的顺序列举 PCI 介面卡,忽略任何 AutoSCSI "Use Bus And Device # For PCI Scanning Seq." 选项的设定。
EATA SCSI 介面卡 (`eata=')
新的 v2.0 核心之 EATA 驱动程式能接受一个启动参数指定所要侦测的输出入位址。格式为:
--------------------------------------------------------------------------------
eata=iobase1[,iobase2][,iobase3]...[,iobaseN]
--------------------------------------------------------------------------------
此驱动程式会依所列顺序侦测这些位址。
Future Domain TMC-8xx, TMC-950 (`tmc8xx=')
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。或者,如果 BIOS 的签章(signature)字串不被认可那麽也会找不到。不管是那一种情况,你都得使用这种型式的启动参数:
--------------------------------------------------------------------------------
tmc8xx=mem_base,irq
--------------------------------------------------------------------------------
mem_base 的值是界面卡使用的记忆体对映(memory mapped)输出入区域的值。此值通常会是下列其中之一: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
Future Domain TMC-16xx, TMC-3260, AHA-2920 (`fdomain=')
这个驱动程式根据一份已知基本输出入系统唯读记忆体签章列表侦测这些介面卡。完整的列表请参见 linux/drivers/scsi/fdomain.c,该档前面有许多资讯。如果此驱动程式不认得你的基本输出入系统,你可以使用这种格式变更:
--------------------------------------------------------------------------------
fdomain=iobase,irq[,scsi_id]
--------------------------------------------------------------------------------
IOMEGA Parallel Port / ZIP drive (`ppa=')
这个驱动程式用於 IOMEGA ZIP 磁碟附的 IOMEGA 并列埠 SCSI 卡。它也可以配合原先的 IOMEGA PPA3 设备使用。此驱动程式的启动参数格式为:
--------------------------------------------------------------------------------
ppa=iobase,speed_high,speed_low,nybble
--------------------------------------------------------------------------------
除了 iobase 之外其馀皆为选用值。如果你想改变这三个选用参数中的任何一个,建议你读读 linux/drivers/scsi/README.ppa 中有关它们控制些什麽的细节。
NCR5380 based controllers (`ncr5380=')
跟你的介面卡有关, 5380 的型式可以是输出入对应或记忆体对应。(低於 0x400 的位址意谓著输出入对应,但 PCI 以及 EISA 硬体使用 0x3ff 以上的输出入位址。)不管是那一种情况,你都是指定位址,硬体中断以及直接记忆体存取通道的值。输出入对应介面卡的□例像是: ncr5380=0x350,5,3。如果该卡不使用中断,那麽 255(0xff)这个硬体中断值会关闭中断的使用。 254 这个应体中断值表自动侦测。更细节的资讯可以在 linux/drivers/scsi/README.g_NCR5380 这个档案里找到。
NCR53c400 based controllers (`ncr53c400=')
标准 53c400 的支援是由与上述标准 5380 之支援相同的驱动程式所提供。启动参数与上述完全相同,除了 53c400 不使用直接记忆体存取之外。
NCR53c406a based controllers (`ncr53c406a=')
此驱动程式使用这种格式的启动参数:
--------------------------------------------------------------------------------
ncr53c406a=PORTBASE,IRQ,FASTPIO
--------------------------------------------------------------------------------
其中 IRQ 以及 FASTPIO 参数为选用项。中断值零关闭中断之使用。使用一与 FASTPIO 参数启用 insl 以及 outsl 指令以取代一个位元组的 inb 以及 outb 指令。此驱动程式也可以由编译时期选项设定使用直接记忆体存取。
Pro Audio Spectrum (`pas16=')
PAS16 使用 NCR5380 SCSI 晶片,新款还支援无跳接配置。启动参数的格式为:
--------------------------------------------------------------------------------
pas16=iobase,irq
--------------------------------------------------------------------------------
唯一的不同是你可以指定 255 这个硬体中断值,这会告诉驱动程式不要使用中断,然效能会降低。 iobase 通常是 0x388。
Seagate ST-0x (`st0x=')
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。或者,如果 BIOS 的签章字串不被认可那麽也会找不到。不管是那一种情况,你都得使用这种型式的启动参数:
--------------------------------------------------------------------------------
st0x=mem_base,irq
--------------------------------------------------------------------------------
mem_base 的值是界面卡使用的记忆体对映(memory mapped)输出入区域的值。此值通常会是下列其中之一: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
Trantor T128 (`t128=')
这些介面卡也是以 NCR5380 晶片为基础,接受下列选项:
--------------------------------------------------------------------------------
t128=mem_base,irq
--------------------------------------------------------------------------------
The valid values for mem_base are as follows: 0xcc000, 0xc8000, 0xdc000, 0xd8000. 可用於 mem_base 的值如下: 0xcc000, 0xc8000, 0xdc000, 0xd8000。
Ultrastor SCSI cards (`u14-34f=')
注意,此卡有两个互相独立的驱动程式,名为 CONFIG_SCSI_U14_34F 者使用 u14-34f.c 而 CONFIG_SCSI_ULTRASTORE 使用 ultrastor.c。 u14-34f 这一个(新的 v2.0 核心用它)接受一个格式如下的启动参数:
--------------------------------------------------------------------------------
u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]
--------------------------------------------------------------------------------
此驱动程式会依所列顺序侦测这些位址。
Western Digital WD7000 cards (`wd7000=')
这个驱动程式寻找它所知道的基本输出入系统唯读记忆体字串来侦测 wd7000 并且知道数个标准的配置设定。如果它没能用正确的值动起来,或不认得你的基本输出入系统版本,那麽你可以使用这种格式的启动参数。
--------------------------------------------------------------------------------
wd7000=irq,dma,iobase
--------------------------------------------------------------------------------
4.3 不接受启动参数的 SCSI 卡
目前为止,下列 SCSI 介面卡不使用任何启动时期参数。在某些情况下,你可以直接编辑驱动程式本身把值写死(hard-wire)进去,如果真的必要的话。
Adaptec aha1740 (EISA probing),
NCR53c7xx,8xx (PCI, both drivers)
Qlogic Fast (0x230, 0x330)
Qlogic ISP (PCI)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5. 硬碟机
这一节列出所有与标准 MFM/RLL, ST-506, XT, 以及 IDE 磁碟机相关的启动参数。注意,IDE 以及先前的 ST-506 硬碟驱动程式都接受 `hd=' 选项。
5.1 IDE 磁碟/光碟驱动程式参数
IDE 驱动程式接受几个参数,涵盖□围从磁碟规格(geometry)到先进或不良之控制器的支援。底下是所有可用之启动参数的摘要。要知道完整的细节,你真的应该去查阅在 linux/Documentation 目录下的 ide.txt 档,这个摘要是从中摘录出来的。
--------------------------------------------------------------------------------
"hdx=" 从 "a" 到 "h" 所有的 "x" 都承认,像是 "hdc" 。
"idex=" 从 "0" 到 "3" 所有的 "x" 都承认,像是 "ide1"。
"hdx=noprobe" : 也许的确有个磁碟在那儿,但不要去侦测
"hdx=none" : 这里没有磁碟,忽略 cmos 且不要去侦测
"hdx=nowerr" : 忽略这个磁碟的 WRERR_STAT 位元
"hdx=cdrom" : 这里有个磁碟,而且是个光碟机
"hdx=cyl,head,sect" : 这里有个磁碟,并指定磁碟规格
"hdx=autotune" : 驱动程式将试著把介面速度调到支援之
最快可程式化输出入(PIO) 模式
,此磁碟能接受才行。并非所有
晶片组种类都有完整支援,并且
很可能使旧的/奇怪的 IDE 磁
碟出问题。
"idex=noprobe" : 不要尝试存取/使用这个介面
"idex=base" : 在指定的位址侦测介面,其中 "base"
通常是 0x1f0 或是 0x170 且
假设 "ctl" 是 "base"+0x206
"idex=base,ctl" : 指定 base 以及 ctl
"idex=base,ctl,irq" : 指定 base, ctl, 以及 irq 数值
"idex=autotune" : 驱动程式将试著把介面速度调到支援之
最快可程式化输出入(PIO) 模式
,此磁碟能接受才行。并非所有
晶片组种类都有完整支援,并且
很可能使旧的/奇怪的 IDE 磁
碟出问题。
"idex=noautotune" : 驱动程式将不会试著调整介面速度。除
了 cmd640 之外,这是大部份晶
v1.14, 1 February 1998
--------------------------------------------------------------------------------
这份文件是启动提示说明(BootPRompt-Howto), 它整理了所有可以在启动时期传给 linux 核心的启动时期参数(arguments)。 包含所有核心与设备的参数。也包含关於核心如何排序(sorts) 启动时期参数的讨论, 还有一些启动 Linux 核心常用软体概述。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 简介
核心有能力在启动时以`指令列'方式接受有限的参数资讯,类似执行程式时所给予的一些参数(argument list)。通常这是用来提供核心一些它没有办法自己确定的硬体参数资讯,或是避免/变更(override)核心自己侦测所获得的值。
然而,如果你直接把核心映像(kernel image)拷贝到软碟上,(例如 cp zImage /dev/fd0)那麽你将没有机会指定任何参数给核心。所以大部份的 Linux 使用者都使用像是 LILO 或是 loadlin 一类能够把这些参数传给核心,然後启动它的软体。
模组(MODULE)使用者请注意: 典型的启动提示参数只能用於直接编译到核心里的硬体驱动程式。它们对使用模组方式载入的驱动程式没有影响。大部份的发行套件(distributions) 都使用模组。如果你无法确定,可以对照 /etc/conf.modules 的内容查阅 man depmod 以及 man modprobe。
目前这版说明文件涵盖到 v2.0.33 为止的核心。同时也包含部份到 v2.1.84 为止,发展/测试版核心的特性。
这份启动提示说明的作者是:
Paul Gortmaker, gpg109@rsphy1.anu.edu.au
[请注意,特别给非 i386 机器或设备(尤其是 Atari/Amiga)用的启动提示参数目前并没有写进来。]
1.1 宣言与版权
这份文件并非绝对正确的真理。然而它大概是你所能找到最新的资讯。没有人必须对你硬体所发生的事负责,除了你自己以外。如果你的硬体冒烟烧掉了(...这几乎不可能!)我也没有责任。也就是说根据这份文件中所提供的资讯去实行而造成的任何损害作者概不负责。
这份文件的版权 Copyright (C) 1995-1998 属於 Paul Gortmaker。
这份文件可依第二版 GNU 通用公开授权(General Public License)的条件,包括此声明,进行拷贝。细节请参阅随附於 Linux 核心的 linux/COPYING 档案。
如果你想把这份文件集结出版,请与我联络,我会确认你取得的是否为最新的资讯。过去曾经有过时的 Linux 说明文件版本出版,造成发展者为了在新版文件中已有答案的问题想破头壳。
This document is not gospel. However, it is probably the most up to date info that you will be able to find. Nobody is responsible for what happens to your hardware but yourself. If your hardware goes up in smoke (...nearly impossible!) I take no responsibility. ie. THE AUTHOR IS NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN THIS DOCUMENT.
This document is Copyright (C) 1995-1998 by Paul Gortmaker.
This document may be copied according to the conditions of the GNU General Public License, version 2, included herein by reference. See the file linux/COPYING that comes with the Linux kernel for full details.
If you are intending to incorporate this document into a published work, please contact me, and I will make an effort to ensure that you have the most up to date information available. In the past, out of date versions of the Linux howto documents have been published, which caused the developers undue grief from being plagued with questions that were already answered in the up to date versions.
1.2 相关文件
最新版的文件永远是核心的原始程式码本身。等一下!先不要害怕。阅读原始档里的注解不需要懂任何程式设计。例如,如果你要找可以传给 AHA1542 SCSI 驱动程式的参数,那就到 linux/drivers/scsi 目录下去看 aha1542.c 这个档,在前面 100 行里就可以找到一段原文说明此 1542 驱动程式所接受的启动时期参数。
下个绝佳的参考是核心本身随附的任何文件档。目前并不多,大部份可以在 linux/Documentation 目录及其下的子目录中找到。 linux 目录通常可以在 /usr/src/ 下找到。有时候也可以在相关驱动程式目录里找到 README.foo 档案(例如 linux/drivers/XXX/ ,其中的 XXX 可能是 scsi, char, or net)。
如果你已经找到想要使用的启动参数,而现在想知道如何把这些资讯传给核心的话,那就看看你用来启动核心的软体(例如 LILO 或者是 loadlin )所随附的文件。下面有简短的概述,但不能替代启动软体所随附的文件。
1.3 Linux 新闻群组
如果你有关於传递参数给核心这方面的问题,请先读一读这份文件。如果它以及前面所提到的相关文件都没能回答你的问题,那麽你可以试试 Linux 新闻群组。当然,在轻率的贴出你的问题前应该先阅读该新闻群组,因为可能已经有人问过这个问题,或者这可能已经是个常见问题(a FAQ)。张贴之前先快速浏览 linux 常见问题会是个好习惯。你应该能够在邻近这份文件的某处找到常见问题集。
关於如何配置系统的一般性问题应该直接贴到 comp.os.linux.setup 新闻群组。 请你尊重这个有关张贴内容的一般惯例,并且,不要把你的需求交叉张贴(cross-post)到其它群组去。
1.4 新版文件
新版文件可由匿名档案传输服务(anonymous FTP)从 sunsite.unc.edu 这个站取得,在 /pub/Linux/docs/HOWTO/ 目录里。注意,SunSITE 的负载经常很大,所以建议你最好找个 Linux 档案传输映射(mirror)节点取得此文件。有新的资讯以及/或是驱动程式时就会补充资料。如果你现在读的这份拷贝已经有几个月之久,你可能得确认一下是否有新的。
这份文件系使用一套特别为 Linux 说明文件计画修改的 SGML 系统所产生的,有各种不同的输出格式,包括 postscript, dvi, ascii, html, 以及将要出现的 Texinfo。我建议以 html(经由全球资讯网浏览器)或 Postscript/dvi 格式阅读。这两者都包含 ascii 转换过程中失去的交互参考(cross-references)。
如果你想从 sunsite 取得正式的拷贝,位址(URL)在此。 BootPrompt-HOWTO
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 启动提示参数概观
这一节介绍一些可以用来传递启动时期参数给核心本身的软体□例。也给你有关这些参数系如何被处理,启动参数有什麽样的限制,以及它们如何被转送到各个适当设备的观念。
有一点很重要得注意的是在启动参数中不应该使用空白,只有在各别的参数之间可以。单一参数其值的列表(A list of values)是在各值之间以逗号格开的,再一次,没有任何空白。参见下面的□例。
--------------------------------------------------------------------------------
ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1
*RIGHT*
ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1
*WRONG*
--------------------------------------------------------------------------------
2.1 LILO (LInux LOader)
最常用的是 Werner Almesberger 所写的 LILO(LInux LOader) 程式。它有能力启动不同的核心,而且配置资讯存放在一个纯文字档里。大部份的发行套件都附有 LILO 作为预设的启动载入程式(boot-loader)。 LILO 可以一视同仁地启动 DOS, OS/2, Linux, FreeBSD 等等,而且相当有弹性。
在你开机之後,典型的配置会让 LILO 停住并印出 LILO:。然後等个几秒看看使用者有没有输入任何选项,没有的话就启动预设的系统。在 LILO 配置档里典型的系统标签是 linux 以及 backup 和 msdos。如果你想要输入启动参数,可以打在这,在输入你要 LILO 启动的系统之标签後面,像下面这个□例所显示的。
--------------------------------------------------------------------------------
LILO: linux root=/dev/hda1
--------------------------------------------------------------------------------
LILO 随附有绝佳的文件,而且为了这里所讨论的启动参数之使用,当你想要把启动时期参数加到 LILO 配置档里永久使用时 LILO 的 append= 指令就非常重要。只要简单地在 /etc/lilo.conf 档中加入像 append = "foo=bar" 这样的东东即可。可以加在该档的最前面,使它对每一节区(section)都生效,或是加在某 image= 节区里使它对该节区生效。请参阅 LILO 文件里更完整的说明。
2.2 LoadLin
另一个常用的 Linux 载入程式 `LoadLin' 则是一支有能力从 DOS 提示符号(prompt)下启动 Linux 核心(可以给予启动参数)的 DOS 程式,假如某些系统资源可用的话就行。这对使用 DOS 并想从 DOS 下启动进入 Linux 的人而言很好用。
如果你拥有一些需要使用其所提供的 DOS 驱动程式来初使化以进入可用状态 (known state)的硬体那麽它也很有用。一个常见的例子是需要使用 DOS 驱动程式设定(twiddle) 几个神秘的暂存器使它进入声霸卡相容模式的”声霸卡相容”音效卡。启动 DOS 与所附的驱动程式,然後从 DOS 提示符号下使用 LOADLIN.EXE 载入 Linux 以避免重新启动(reboot)会重置(reset)该卡。如此该卡维持在声霸卡相容模式也就能在 Linux 下使用。
还有一些其它程式可以用来启动 Linux。完整的列表请找找在你当地 Linux 档案传输映设节点里的程式,在 system/Linux-boot/ 下。
2.3 ``rdev'' 公用程式
核心本身里面的数个位元组存有少数几个核心启动参数的预设值。在大部份的系统里安装有一支称为 rdev 的公用程式知道这些值在那里,以及如何改变它们。它也能改变另外一些没有相对之核心启动参数的东西,像是预设的显示模式(video mode)。
此 rdev 公用程式通常也另称(aliased to) swapdev, ramsize, vidmode 以及 rootflags。它能够改变五种东西,分别是根目录设备(root device),置换设备(swap device),记忆体磁碟(RAM disk)之参数,预设的显示模式,及根目录设备的存取设定(readonly/readwrite)。
更多有关 rdev 的资讯可以藉由输入 rdev -h 或是参阅其线上说明页 (man rdev)获得。
2.4 核心如何排列参数
大部份的启动参数格式为:
--------------------------------------------------------------------------------
name[=value_1][,value_2]...[,value_11]
--------------------------------------------------------------------------------
其中 `name' 是一个用来唯一识别(unique)相关的值(如果有的话)是要给核心的那个部份的关键字。多个启动参数只是上述格式以空白分隔的列表。注意那个 11 是真实的限制,因为现行的程式码对每个关键字只处理 11 个以逗号分隔的参数。(然而,在非比寻常复杂的情况下你可以重覆使用相同的关键字加入 11 个以上的参数,假如设定函式支援这样搞的话。)同时也要注意,核心把列表分成(splits)最多 10 个的整数参数,後面并跟著一个字串,所以你不能真的给它 11 个整数,除非你自行在驱动程式中将第 11 个参数由字串转换成整数。
大部份排序的动作是在 linux/init/main.c 里面。首先,核心查看参数是否为 `root=', `Ro', `Rw', or `Debug' 这些特别的参数。这些特别参数的意义本文中会进一步说明。
然後它走过(walks)一系列的设定函式(放在 bootsetups 阵列里)看看所指定的参数字串(像是 `foo')是不是与其中的一个设定函式(foo_setup())相关,以设定特定设备或核心的一部份。如果你传给核心 foo=3,4,5,6,bar 这样一行那麽核心会搜寻 bootsetups 阵列看看 `foo' 是否有注册。如果有,那麽它会呼叫与 `foo' 相关联的设定函式(foo_setup())并交给它在核心指令列所给的整数参数 3, 4, 5, and 6,并交给它字串参数 bar。
2.5 设定环境变数
任何不被接受当作上述设定函式的 `foo=bar' 型式之叙述会被解译为要设定的环境变数。一个(没用的?)□例是以 `TERM=vt100' 作为启动参数。
2.6 传递参数给 `init' 程式
任何剩下的,核心不管而且不被解译成环境变数之参数接下来会传给第一个程序(process),通常是 init 程式。最常传给 init 程序的参数是 single 这个字,指示 init 把电脑启动在单人模式(single user mode) 并且不启动所有一般的驻留程式(daemons) 。查阅你系统里安装的 init 版本之线上手册看看它接受那些参数。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 一般无关设备特性的启动参数
有些启动参数并非与任何设备或周边相关。它们乃是与某个核心内部参数相关,像是记忆体的处理,记忆体磁碟的处理,根档案系统的处理以及其它东东。
3.1 根档案系统选项
下列选项皆与核心如何选择及处理根档案系统有关。
`root=' 参数
此参数告诉核心启动时以那个设备作为根档案系统使用。此设定的预设值为建造(bulid)核心时系统的根档案系统设备。例如,如果核心是在一个以 `/dev/hda1' 作为根档案系统分割区的系统上建造的,那麽预设的根档案系统设备就是 `dev/hda1'。要变更此预设值,并选择第二台软碟机作为根档案系统设备的话,可以使用 `root=/dev/fd1'。
可用的根档案系统设备为下列设备其中之一:
(1) /dev/hdaN to /dev/hddN, 这是 ST-506 相容磁碟 `a to d' 上的第 N 个分割区。
(2) /dev/sdaN to /dev/sdeN, 这是 SCSI 相容磁碟 `a to e' 上的第 N 个分割区。
(3) /dev/sdaN to /dev/xdbN, 这是 XT 相容磁碟 `a to b' 上的第 N 个分割区。
(4) /dev/fdN, 这是软碟机号码 N。 N=0 为 DOS 下的 `A:' 磁碟机,而 N=1 则为 `B:'。
(5) /dev/nfs, 这并非真的是个设备,而是一个告诉核心经由网路取得根档案系统的旗标。
上述磁碟设备的另一种数字格式,更为笨拙且更没有可携性的主要/次要(major/minor) 号码也能接受。(例如 /dev/sda3 的主要号码为 8,次要号码为 3,所以你可以使用 root=0x803 作为另一种指定方式。)
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`ro' 参数
当核心启动时它需要有个根档案系统以读取一些基本的东西。这就是挂在根目录的根档案系统。然而,如果根档案系统以可以写入的方式挂上来的话,你就无法在有档案写到一半的情况下确实地检查档案系统的完整性。此 `ro' 选项告诉核心以唯读的方式挂入根档案系统,如此任何档案系统一致性检查程式(fsck) 在执行检查时都可以安全地假设没有档案写到一半的情况。没有任何程式或程序可以写入此档案系统直到它重新以可读写的方式挂入为止。
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`rw' 参数
这与上一个完全相反,它告诉核心以可读取/写入的方式挂入根档案系统。无论如何,预设是以可读写方式挂入根档案系统。不要在以可读写方式挂入的档案系统上执行任何的 `fsck' 程式。
此参数使用的值与上一个储存於核心映像的参数相同,可经由 rdev 存取。
3.2 与记忆体磁碟(RAM Disk)管理有关的选项
下列选项皆与核心如何处理记忆体磁碟设备有关,这种虚拟磁碟设备通常在安装阶段启动机器时使用,或配合使用模组化驱动程式以存取根档案系统的机器上。
`ramdisk_start=' 参数
为了使核心映像能够与压缩的记忆体磁碟映像放在一张软碟内,所以加入这个 `ramdisk_start=
注意:如果你使用的是没有压缩的记忆体磁碟映像,那麽核心可以是要载入记忆体磁碟之档案系统映像的一部份,且该软碟可以由 LILO 启动,两者也可以如同压缩之映像般为分开的两部份。
如果你使用启动/根(boot/root)两张磁片的方式(核心一张,记忆体磁碟映像放第二张)那麽记忆体磁碟会由第零磁区开始,并使用零作为偏移值(offset)。因为这是预设值,你根本不必真的去使用这个指令。
`load_ramdisk=' 参数
此参数告诉核心是否要载入一份记忆体磁碟映像。 `load_ramdisk=1' 指定核心将软碟载入至记忆体磁碟中。预设值为零,表示核心不应该试著去载入记忆体磁碟。
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`prompt_ramdisk=' 参数
此参数告诉核心是否要给你个提示要求插入含记忆体磁碟映像的磁片。
在只用一张软碟的配置下记忆体磁碟映像与刚刚载入/启动的核心在相同的软碟上故不需要提示。这种情况可以用 `prompt_ramdisk=0'。在使用两张软碟的配置下你需要有个抽换磁片的机会,故可以使用 `prompt_ramdisk=1'。因为这是预设值,所以不必真的去指定它。(轶闻:从前人们习惯使用 `vga=ask' 这个 LILO 选项来暂时停止启动程序以取得抽换启动磁片及根磁片的机会。)
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`ramdisk_size=' 参数
因为记忆体磁碟实际上会依需求动态成长,所以其大小有个上限加以限制以免它用光所有可用的记忆体而坏事。预设值 4096(i.e. 4MB) 应该足够满足大部份的需求。你可以用这个启动参数变更此预设值。
请参阅 linux/Documentation/ramdisk.txt 档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
`ramdisk=' 参数(过气了)
(注意:这个参数是旧的,除了 v1.3.47 版以及更旧的的核心之外不应该使用。应该使用的是前面所述的指令)
这个参数以千位元组(kB)为单位指定记忆体磁碟设备的大小。例如,如果想要把位於一张 1.44MB 软碟上的根档案系统载入至记忆体磁碟设备,可以用:
--------------------------------------------------------------------------------
ramdisk=1440
--------------------------------------------------------------------------------
这是少数几个在核心中存有预设值,所以可以用 rdev 公用程式改变的核心启动参数。
`noinitrd'(启始记忆体磁碟)参数
v2.x 及更新的核心有个特性,根档案系统最初是记忆体磁碟,然後核心执行记忆体映像上的 /linuxrc。这个特性典型系用於载入某些挂入真正的根档案系统所需要的模组(例如,载入储存於记忆体磁碟映像里的 SCSI 驱动程式,然後挂入在某 SCSI 磁碟里真正的根档案系统。)
实际的 `noinitrd' 参数决定核心启动之後如何处理 initrd 资料。如果有指定,它可以经由 /dev/initrd 存取,可以在记忆体释放回系统之前读取一次。有关初始之记忆体磁碟的完整细节与使用请参阅 linux/Documentation/initrd.txt。此外,最新版的 LILO 及 LOADLIN 应该会包含其它有用的资讯。
3.3 与记忆体管理有关的参数
下列参数会改变 linux 侦测或处理系统实体及虚拟记忆体的方式。
`mem=' 参数
这个参数有两个目的:原先的目的是指定机器所安装的记忆体数量(如果你想限制 linux 能使用的记忆体数量可以指定一个较小的值)。第二个(很少用)目的则是指定 mem=nopentium 以便告诉 linux 核心不要使用 4MB 分页表(page table)这个效能特性。
在个人电脑规格中,原先定义回传安装记忆体数量的基本输出入呼叫被设计成最多只能回报最多 64MB。(是的,另一个缺乏远见的设计,就像 1024 磁簇的磁碟限制...哎。) Linux 在启动时会使用此基本输出入呼叫以确定安装的记忆体数量。如果你安装的记忆体超过 64MB,可以用这个启动参数告诉 Linux 你有多少记忆体。下面引用 Linus 对 mem= 参数的说明。
”核心会接受任何你所给予的 `mem=xx' 参数,而如果它发现你骗它,那它迟早一定会当的很难看。这个参数指示可以定址的最高记忆体位址,所以,例如 `mem=0x1000000' 表示你有 16MB 的记忆体。对拥有 96MB 的机器而言此值为 `mem=0x6000000'。
注意注意注意:
某些机器可能会使用最上层(top)的记忆体作为基本输出入系统的快取等等一类用途,所以你可能并非实际拥有 96MB 的可定址空间。反之亦然:
某些晶片组会将基本输出入系统涵盖的实体记忆体区域对应(map)到最上层记忆体後面,所以记忆体最上层实际上可能是 96MB + 384kB。如果你告诉 linux 的记忆体比它实际上拥有的还多,那就会出状况:也许不会立刻出事,但最後一定会发生。”
注意,此参数并非一定得是十六进位型态,而且可以使用 `k' 与 `M'(大小写无关)字尾分别指定千位元组以及百万位元组。(`k' 会把你给的值旋转(shift) 10 位元,而 `M' 会旋转 20 位元。)上述警告依然没变,沿上例,一台 96MB 的机器也许可以设 mem=97920k 而无法使用 mem=98304k 或 mem=96M。
`swap=' 参数
这允许使用者调整某些与磁碟置换(swapping)有关的虚拟记忆体参数(VM)。它接受下列八个参数:
--------------------------------------------------------------------------------
MAX_PAGE_AGE
PAGE_ADVANCE
PAGE_DECLINE
PAGE_INITIAL_AGE
AGE_CLUSTER_FRACT
AGE_CLUSTER_MIN
PAGEOUT_WEIGHT
BUFFEROUT_WEIGHT
--------------------------------------------------------------------------------
有兴趣的玩家建议你阅读 linux/mm/swap.c 并注意 /proc/sys/vm 里面的东西。
`buff=' 参数
类似 `swap=' 参数,这允许使用者调整某些与缓冲记忆体(buffer)之管理相关的参数。它接受下列六个参数。
--------------------------------------------------------------------------------
MAX_BUFF_AGE
BUFF_ADVANCE
BUFF_DECLINE
BUFF_INITIAL_AGE
BUFFEROUT_WEIGHT
BUFFERMEM_GRACE
--------------------------------------------------------------------------------
有兴趣的玩家建议你阅读 linux/mm/swap.c 并注意 /proc/sys/vm 里面的东西。
3.4 以网路档案系统(NFS)作为根档案系统使用的参数
藉由透过网路档案系统(NFS: Network FileSystem) 提供根档案系统 Linux 支援无碟(diskless)工作站这样的系统。这些参数系用来告诉无碟工作站要从那一台机器取得其系统。同时要注意 root=/dev/nfs 参数是必需的。有关使用网路档案系统作为根档案系统之细节说明在 linux/Documentation/nfsroot.txt 档案里。你应该阅读这个档案,因为下面只是从那个档案直接拿过来的快速摘要。
`nfsroot=' 参数
这个参数告诉核心以那一台机器,那个目录以及那些个网路档案系统选项作为根档案系统使用。此参数的格式如下:
--------------------------------------------------------------------------------
nfsroot=[
--------------------------------------------------------------------------------
如果指令列上没有给定 nfsroot 参数,则将使用 `/tftpboot/%s' 预设值。其它选项如下:
port = as given by server portmap daemon
rsize = 1024
wsize = 1024
timeo = 7
retrans = 3
acregmin = 3
acregmax = 60
acdirmin = 30
acdirmax = 60
flags = hard, nointr, noposix, cto, ac
`nfsaddrs=' 参数
这个启动参数设定网路通讯所需的各种网路界面位址。如果没有给定这个参数,则核心会试著使用反向位址解析协定以及/或是启动协定(BOOTP)以找出这些参数。其格式如下:
--------------------------------------------------------------------------------
nfsaddrs=
--------------------------------------------------------------------------------
此
3.5 其它另外的核心启动参数
这些启动参数让使用者调整某些核心内部的参数。
The `debug' Argument
核心经由 printk() 函式传达重要(以及没那麽重要)的讯息给管理者(Operator)。如果讯息很重要, printk() 函式也会显示到主控台(console)上,就如同丢给 klogd() 记录到磁碟上一般。如同记录到磁碟上一般在主控台上显示重要讯息的原因是因为在不幸的状况下(例如磁碟损坏)讯息将无法存入磁碟而漏失。
到底什麽重要什麽不重要其门槛藉由 console_loglevel 变数设定。预设是把任何比 DEBUG(等级 7)重要的东西记录到主控台上去。(这些等级定义在 kernel.h 含入档中)指定 debug 启动参数将使主控台的记录等级设为 10,所以所有核心讯息都会出现在主控台上。
主控台记录等级通常也可以在执行期间经由 klogd() 程式选项设定。查看你系统之安装版本的线上说明页看看该怎麽做。
`init=' 参数
核心启动时预设执行 `init' 程式,这支程式接下来经由执行 getty 程式,跑 `rc' 指令稿(scripts)以及诸如此类的东东为使用者设定电脑。核心首先寻找 /sbin/init ,然後是 /etc/init (depreciated),而最後它会去试 /bin/sh (可能在 /etc/rc )。如果说,例如,如果你的 init 程式坏掉了,只要使用 init=/bin/sh
这个启动参数就能让你在启动时直接跳到解译环境(shell),使你能够换掉坏掉的程式。
`no387' 参数
某些 i387 协同处理器晶片有臭□(bugs),在 32 位元保护模式下会出现。例如,部份早期的 ULSI-387 晶片在执行浮点运算时会死当,这似乎是因为 FRSAV/FRRESTOR 指令的一只□。使用 `no387' 启动参数使 Linux 就算你真的有数值辅助处理器也忽略它的存在。当然编译核心时你必须加入数值模拟支援!如果你有某些能够使用 80287 浮点处理单元(FPU)的古董级 386 机器那这也很有用,因为 linux 无法使用 80287。
`no-hlt' 参数
i386(及其後继者)家族的中央处理器有个 `hlt' 指令用来告诉中央处理器现在□□没事做,直到某个外部设备(键盘,数据机,磁碟等等)呼叫中央处理器执行任务为止。这个指令会使中央处理器进入‘省电’模式,像个死人(zombie)般坐在那里直到有个外部设备叫它起来(经由中断(interrupt) ,通常是)。部份早期的 i486DX-100 晶片处理这个 `hlt' 指令有问题,使用过这个指令後它们不能可靠地回到运作模式。使用 `no-hlt' 这个指令告诉 Linux当无事可做时跑个无穷回圈而不停住你的中央处理器。让有这些晶片的人们能够使用 Linux,然而还是建议有可能的话就换掉这些晶片。
`no-scroll' 参数
启动时使用这个参数可以关闭卷页(scrolling)特性,这个特性使得 Braille 终端机难以使用。
`panic=' 参数
在不太可能发生的核心异常(kernel panic)事件下(像是核心侦测到内部错误,并认为这样的错误严重到应该发出警讯并停止任何作业),
预设的处理方式是就停在那儿直到有人过来并注意到萤幕上的异常警讯然後重新启动机器。
然而如果机器是在无法触及,隔离的地方跑的话也许会希望它能自动重置自己然後回到线上。例如,启动时使用 panic=30 会使核心在发生核心异常 30 秒後试著重新启动自己。若此值为零则使用预设的处理方式,就是一直在那儿等。
注意,这个逾时(timeout)设定也可经由 /proc/sys/kernel/panic 系统控制 (sysctl)介面读取与设定。
`profile=' 参数
核心发展者们可以打开某个选项以得知核心如何使用中央处理器时间以及用在那□,以便最大化效率(efficiency)与效能(performance)。这个选项让你在启动时设定观察变化的计数(the profile shift count)。此值一般设为二。你也可以在编译核心时打开此功能。无论那种情况,你都需要像 readprofile.c 这类可以处理 /proc/profile 输出的工具。
`reboot=' 选项
这个选项控制重置电脑时(典型是经由 /sbin/init 处理的 Control-Alt-Delete 动作) Linux 所做的重新启动之种类。新的 v2.0 核心预设的动作是做‘冷’开机(完全重置,基本输出入系统执行记忆体检查等等)以代替‘暖’开机(没有完全重置,没有记忆体检查)。
改为预设冷开机是为了要在便宜的/烂烂的,暖开机请求没办法重新启动的硬体上工作。可以使用 reboot=w 设为原先的方式(暖开机),其实可以用任何以 w 开头的字来设定。
为什麽这会造成困扰?某些具有记忆体快取的磁碟控制器能够感测到暖开机,并且把所有暂存的资料写到磁碟上。冷开机可能会重设该卡,在快取卡记忆体里面的回写(write-back)资料就会漏失。已经有人回报系统记忆体检查很花时间以及/或是小型电脑智慧介面基本输出入系统 (SCSI BIOSes)冷开机时花较久的时间初始化是使用暖开机的好理由。
`reserve=' 参数
这是用来保护输出入埠区域不要侦测。这个指令的格式是:
reserve=iobase,extent[,iobase,extent]...
在某些机器上也许必须避免设备驱动程式去检查(自动侦测)在某些特殊区域的设备。这可能是因为硬体设计的不良而会使得启动终止(像是某些乙太网路卡),会被误认的硬体,状态会因为较前面的侦测而改变的硬体,或者只是你不想让核心初始化的硬体。
此 reserve 启动时期参数藉由指定一段不要侦测的输出入埠□围以解决此问题。此段区域在核心的输出入埠注册表格当中被视为已经在该处找到设备(名称为 reserved )而保留。注意,绝大部份的机器都不需要此机制。只有真的有问题或特殊情况才会需要用到这东东。
位於指定之区域中的输出入埠乃是靠著在侦测一段输出入区域之前先执行 check_region() 以避免设备侦测。这用於某些遇上 NE2000 会挂掉或者会误认其它设备的驱动程式。
正确的设备驱动程式不应该去侦测保留区域,除非另一个启动参数明确地指示它这样做。这意谓著 reserve 经常与其它启动参数一起使用。如果你指定一段保留区域以保护某特定设备的话,你必须明确地指定此设备的侦测□围,大部份的驱动程式如果有给它们明确的位址就会忽略输出入埠注册表。
例如,此启动列
--------------------------------------------------------------------------------
reserve=0x300,32 blah=0x300
--------------------------------------------------------------------------------
保留 0x300-0x31f 不让除了 `blah' 的设备驱动程式外的所有驱动程式去侦侧。
如同一般启动时期所用的格式,它也有 11 个参数之限制,因此每个 reserve 关键字只能指定 5 个保留区域。如果你有异常复杂的需求,可以使用多重 reserve 指定。
`vga=' 参数
注意,这并不真的是个启动参数。它是由 LILO 解译的选项,与所有其它由核心处理的启动参数并不相同。然而因为它的使用变得如此普遍故值得在此加上一笔。这个选项也可以经由使用 rdev -v 或相同的 vidmode 指令对 vmlinuz 档案作设定。这使得设定程式码能够在真的启动 Linux 核心之前使用视讯(video)基本输出入系统改变预设的显示模式。典型的模式是 80x50, 132x44 等等。使用此选项最好的方式是以 vga=ask 启动,如此在启动核心前会有个列表提示你的显示卡可以使用的各种模式。一旦你从上述列表得知你想使用的号码,以後就可以把它放在 `ask' 的位置。更进一步的资讯请参阅随附於所有新版核心的 linux/Documentation/svga.txt 档案。
注意,新的核心(2.1 版以上)有改变显示模式的设定程式码选项 Video mode selection support,所以如果你想使用这个特性那麽你就得打开这个选项。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 小型电脑智慧介面(SCSI)周边的启动参数
这一节包含用来传递有关小型电脑智慧介面(SCSI)卡(host adapters)及 SCSI 设备之资讯的启动参数说明。
4.1 中层驱动程式的参数
中层驱动程式处理像磁碟,光碟及磁带等等而不深入介面卡的特性。
最大侦测逻辑号码(LUN)数(`max_scsi_luns=')
每个 SCSI 设备本身里面都可以包含一个‘子设备’号码。最常见的例子是那些一次可以放好几张片子的新型 SCSI 光碟机。每张光碟由指定之设备的‘逻辑号码(Logical Unit Number: LUN)’定址。但大部份的设备,像硬碟机,磁带机等等都是单一个的设备,而逻辑号码设为零。
只有一个逻辑编号的设备若轫体写得不好就会出问题。某些设计不良的 SCSI 设备(旧的以及就那麽巧被你碰上的新设备)无法接受不为零的逻辑编号侦测。它们会挂在那,而且有可能把整个 SCSI 汇流排(bus)都带著一起陪葬。
较新的核心有一个配置选项可以让你设定所要侦测之最大逻辑编号。预设只侦测到逻辑编号零以必免上述问题。
在启动时指定要侦测的逻辑号码可以键入 `max_scsi_luns=n' 作为启动参数,其中 n 是介於壹到捌的数字。要避免上述问题可以使用 n=1 以避免这些个烂设备不高兴。
SCSI 磁带驱动程式的参数(`st=')
SCSI 磁带驱动程式的某些启动时期配置可以藉由使用下列参数达成:
--------------------------------------------------------------------------------
st=buf_size[,write_threshold[,max_bufs]]
--------------------------------------------------------------------------------
前面两个数字的单位是千位元组。预设的 buf_size 是 32kB。最多可以指定为 16384kB,大的荒谬。 write_threshold 缓冲区确认送至磁带的值,预设为 30kB。最大缓冲区个数视侦测到的装置数量而定,预设值为二。使用□例如:
--------------------------------------------------------------------------------
st=32,30,2
--------------------------------------------------------------------------------
完整的细节可以在 README.st 档案中找到,位於核心原始程式码结构(tree)的 scsi 目录里。
4.2 SCSI 卡的参数
本节的常见标记:
iobase -- SCSI 卡进驻的第一个输出入埠。以十六进制表示法指定,而且通常落在 0x200 到 0x3ff 之间。
irq -- 介面卡设定使用的硬体中断。其可用的值与介面卡有关,但通常是 5, 7, 9, 10, 11, 12, 以及 15。其它值通常由一般的周边设备使用,像是 IDE 硬碟,软碟,串列埠等等。
dma -- 介面卡使用的直接记忆体存取(Direct Memory access:DMA)通道。典型只用於具汇流排主控(bus-mastering)能力的卡。 PCI 及 VLB 介面卡本即具汇流排主控,且不需要任何 ISA 直接记忆体存取通道。
scsi-id -- 在 SCSI 汇流排上,介面卡用来识别它本身的识别号码。只有某些介面卡允许你改变这个值,大部份则都内定且永久不变。通常预设值是七,但西捷(Seagate)以及 Future Domain TMC-950 卡使用六。
parity -- SCSI 介面卡是否期望所连接的设备交换资讯时提供同位检查码。指定一表示打开同位检查,零则为关闭。同样地,并非所有的介面卡都支援选用同位检查这个启动参数。
Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=')
aha 编号对照卡而 aic 编号对照这些卡上实际的 SCSI 晶片,包含 Soundblaster-16 SCSI。
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。然後你就得使用这种型式的启动参数:
--------------------------------------------------------------------------------
aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]
--------------------------------------------------------------------------------
注意,如果此驱动程式编译时有打开错误侦测,则可以指定第六个值以设定侦错层级。
所有参数都如本节最前面所述,而 reconnect 值如果不为零则允许设备离线/重新连线。使用□例如下:
--------------------------------------------------------------------------------
aha152x=0x340,11,7,1
--------------------------------------------------------------------------------
注意,参数必须依序指定,意谓如果你想指定同位检查,那麽你也得指定 iobase, irq, scsi-id 以及 reconnect 值。
Adaptec aha154x (`aha1542=')
这些是 aha154x 系列的卡。 aha1542 系列的卡板子上有一个 i82077 软碟控制器,而 aha1540 系列的卡没有。
这些卡是汇流排主控卡,而且有可以设定”公平性”的参数,用来与其它设备共用汇流排。其启动参数看起来像下面这样。
--------------------------------------------------------------------------------
aha1542=iobase[,buson,busoff[,dmaspeed]]
--------------------------------------------------------------------------------
可用的 iobase 值通常是: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334 其中之一。仿(Clone)卡可能允许使用其它值。
buson, busoff 的值是该卡占用工业标准架构(ISA)汇流排的毫秒数(microsecond)。预设值是 11us on, and 4us off,如此其它的卡(像是工业标准架构介面的 LANCE 乙太网路卡)就有机会存取工业标准架构汇流排。
dmaspeed 的值是进行直接记忆体存取的速率(以百万位元组每秒为单位)。预设为 5MB/s。新版的卡可以让你从软体配置(soft-configuration)中选择这个值,较旧的卡则使用跳接(jumpers)。假设你的主机板够力的话可以使用 10MB/s。如果使用 5MB/s 以上的值请小心试验。
Adaptec aha274x, aha284x, aic7xxx (`aic7xxx=')
这些卡可以接受此种格式的参数。
--------------------------------------------------------------------------------
aic7xxx=extended,no_reset
--------------------------------------------------------------------------------
如果 extended 的值不为零则表示打开对大容量磁碟的延伸转换(extended translation)。 no_reset 值如果不为零则是告诉驱动程式启动时,设定介面卡的时候不要重置 SCSI 汇流排。
AdvanSys SCSI Host Adaptors (`advansys=')
AdvanSys 驱动程式最多能接受四个输出入位址以侦测 AdvanSys SCSI 卡。注意,这些值(若使用的话)完全不会影响 EISA 或是 PCI 的侦测。它们仅用来侦测 ISA 以及 VLB 介面卡。还有,如果此驱动程式编译时有打开错误侦测的话,那麽错误侦测的输出输出层级可以藉由加入 0xdeb[0-f] 参数来设定。
Always IN2000 介面卡 (`in2000=')
跟其它 SCSI 卡的启动参数不同, IN2000 驱动程式使用由美国标准交换码(ASCII) 所组成的前置(prefix)字串代表大部份的整数参数。这是一份支援列表:
ioport:addr -- 其中 addr 是卡(通常没有唯读记忆体)的输出入位址。
noreset -- 没有选用的参数。这避免启动时期的 SCSI 汇流排重置动作。
nosync:x -- x 是个位元遮罩(bitmask),其中前面七个位元对应到七个 SCSI 设备(第零个位元是第零号设备,馀类推)。
设定其中的位元以避免对该设备进行同步(sync)协商(negotiation)。驱动程式预设是关闭所有设备之同步。
period:ns -- ns 是以奈秒(nanoseconds)为单位之最小 SCSI 资料传输时间区段 (period)。预设为 500; 可接受的值是 250 到 1000。
disconnect:x -- x = 0 即绝不允许离线,2 即一定可以离线。 x = 1 则为’适当’时可离线,这是预设值,而且是一般情况的最佳选择。
debug:x 如果定义了 `DEBUGGING_ON' 则 x 就是设定不同错误侦测输出的位元遮罩-参见 in2000.h 中定义的 DB_xxx。
proc:x -- 如果定义了 `PROC_INTERFACE' 则 x 就是决定 /proc 介面运作方式及功能的位元遮罩-参见 in2000.h 中定义的 PR_xxx。
下面列出一些使用□例:
--------------------------------------------------------------------------------
in2000=ioport:0x220,noreset
in2000=period:250,disconnect:2,nosync:0x03
in2000=debug:0x1e
in2000=proc:3
--------------------------------------------------------------------------------
使用 AMD AM53C974 的硬体 (`AM53C974=')
与其它驱动程式不同,这一个不使用启动参数来传达输出入埠,硬体中断或直接记忆体存取通道。(既然 Amd53C974 是个 PCI 设备,其实也不需要作这些设定。)取而代之的是用来传达介面卡与设备间传输模式与传输率的参数。这最好用□例来解释:
--------------------------------------------------------------------------------
AM53C974=7,2,8,15
--------------------------------------------------------------------------------
这会被解释成这样:‘对於 SCSI-ID 7 的控制器与 SCSI-ID 2 的设备间之通讯,使用最大 8MHz 之同步模式传输率。应协商 15 位元组的偏移值。’ 详细资料可在 linux/drivers/scsi/README.AM53C974 档案里找到。
BusLogic SCSI 介面卡与 v1.2 的核心 (`buslogic=')
在旧版的核心中, buslogic 驱动程式只接受一个参数,就是输出入位址。它能接受下列值:0x130, 0x140, 0x230, 0x234, 0x330, 0x334。
BusLogic SCSI 介面卡与 v2.x 的核心 (`BusLogic=')
在 v2.x 核心中,BusLogic 驱动程式接受许多参数。(注意上面的大小写;是大写的 B 以及 L!!! )。下面的细节是直接从 v2.0 核心中的 Leonard N. Zubkoff's 驱动程式拿过来的。
这个 BusLogic 驱动程式的核心命令列是由 "BusLogic" 驱动程式识别字,加上各个以逗号格开的选用性整数序列,後面跟著各个选用性的字串序列所组成。每行命令列都用於一张 BusLogic 卡,在使用多张 BusLogic 卡的系统上可以使用多个命令列来设定。
第一个整数指定介面卡所在的 I/O 位址。如果不指定则预设值为零,表示把这个参数设为预设侦测顺序中找到的第一张 BusLogic 卡。如果在命令列上指定了任何的 I/O 位址参数,预设侦测顺序就会被忽略。
第二个整数指定用於支援伫列运作(Tagged Queuing)的目标设备之伫列深度。伫列深度是容许同时送出的 SCSI 指令数。如果没有指定则预设值为零,表示使用根据介面卡的总伫列深度及数目,种类,速度,以及侦测目标设备的能力所自动判断的值。对於需要使用 ISA 错误缓冲区(Bounce Buffers)的介面卡,伫列深度自动设为 BusLogic_TaggedQueueDepth_BB 以避免 DMA 错误缓冲记忆体的过载。不支援伫列运作的目标设备使用 BusLogic_UntaggedQueueDepth 定义的伫列深度。
第三个整数指定汇流排停置(Settle)时间,以秒为单位。这乃是重置介面卡使 SCSI 汇流排重置到发出 SCSI 指令之间的时间。如果没有指定则预设值为零,表示使用 BusLogic_DefaultBusSettleTime 的值。
第四个整数指定区域选项。如果没有指定则预设值为零。注意,区域选项只用於特定的介面卡。
第五个整数指定全域选项。如果没有指定,预设值为零。注意,全域选项应用於所有的介面卡。
字串选项用来提供对伫列运作,错误回复,以及介面卡侦测之控制。
伫列运作的指定以 "TQ:" 开头,可以明确地指定是否允许有此支援的目标设备使用伫列运作。下面是可用的指定选项:
TQ:Default -- 伫列运作的允许与否以 BusLogic 卡的轫体版本以及伫列深度的值是否允许多重指令作为判断基础。
TQ:Enable -- 对所有接在这张卡上的目标设备打开伫列运作,忽略介面卡轫体版本所加诸的限制。
TQ:Disable -- 对所有接在这张卡上的目标设备关闭伫列运作。
TQ:<每个目标的设定> -- 各别控置对每个目标设备的伫列运作。 <每个目标的设定>是由 "Y", "N", and "X" 字元组成的串列。 "Y" 打开伫列运作,"N" 关闭伫列运作,而 "X" 接受以轫体版本为基础的预设值。第一个字元代表目标设备 0,第二个代表设备 1,依此类推;如果 "Y", "N" and "X" 字元串列并未涵盖所有的目标设备,未指定的字元将被假设为 "X"。
注意,明确地指定要使用伫列运作可能会出问题;这主要是方便用来关闭对某些没能正确实作此功能之目标设备的伫列运作。
错误回复策略的指定以 "ER:" 开头,可以明确地指定因 SCSI 指令失败,无法成功完成而呼叫 ResetCommand 时执行的错误回复动作。下面是可用的指定选项。
ER:Default -- 错误回复依 SCSI 子系统的建议选择强制重置(Hard Reset)与汇流排设备重置其中之一。
ER:HardReset -- 错误回复将会启始介面卡的强制重置,这也会引起 SCSI 汇流排的重置。
ER:BusDeviceReset -- 错误回复将送出汇流排设备重置讯息给引起错误的目标设备。
如果该目标设备再次造成错误回复而且送出汇流排设备重置讯息之後该目标设备没有一次成功完成 SCSI 指令的话,则尝试进行强置重置。
ER:None -- 错误回复将被冻结。这个选项应该只用於 SCSI 汇流排重置或汇流排设备重置会使目标设备无法回复的情况。
ER:<每个目标的设定> -- 错误回复将对每个目标设备进行各别控制。 <每个目标的设定>是由 "D", "H", "B", and "N" 字元所组成的串列。 "D" 选择预设值,"H" 选择强置重置,"B" 选择汇流排设备重置,而 "N"选择不重置。第一个字元代表目标设备 0,第二个代表设备 1,依此类推;如果 "D", "H" , "B" and "N" 字元串列并未涵盖所有的目标设备,未指定的字元将被假设为 "X"。
介面卡侦测的指定包含下列字串:
NoProbe -- 不执行任何一种侦测,因此不会侦测到 BusLogic 介面卡。
NoProbeISA -- 不侦测标准 ISA I/O 位址,因此只会侦测到 PCI 介面卡。
NoSortPCI -- 依 PCI BIOS 所提供的顺序列举 PCI 介面卡,忽略任何 AutoSCSI "Use Bus And Device # For PCI Scanning Seq." 选项的设定。
EATA SCSI 介面卡 (`eata=')
新的 v2.0 核心之 EATA 驱动程式能接受一个启动参数指定所要侦测的输出入位址。格式为:
--------------------------------------------------------------------------------
eata=iobase1[,iobase2][,iobase3]...[,iobaseN]
--------------------------------------------------------------------------------
此驱动程式会依所列顺序侦测这些位址。
Future Domain TMC-8xx, TMC-950 (`tmc8xx=')
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。或者,如果 BIOS 的签章(signature)字串不被认可那麽也会找不到。不管是那一种情况,你都得使用这种型式的启动参数:
--------------------------------------------------------------------------------
tmc8xx=mem_base,irq
--------------------------------------------------------------------------------
mem_base 的值是界面卡使用的记忆体对映(memory mapped)输出入区域的值。此值通常会是下列其中之一: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
Future Domain TMC-16xx, TMC-3260, AHA-2920 (`fdomain=')
这个驱动程式根据一份已知基本输出入系统唯读记忆体签章列表侦测这些介面卡。完整的列表请参见 linux/drivers/scsi/fdomain.c,该档前面有许多资讯。如果此驱动程式不认得你的基本输出入系统,你可以使用这种格式变更:
--------------------------------------------------------------------------------
fdomain=iobase,irq[,scsi_id]
--------------------------------------------------------------------------------
IOMEGA Parallel Port / ZIP drive (`ppa=')
这个驱动程式用於 IOMEGA ZIP 磁碟附的 IOMEGA 并列埠 SCSI 卡。它也可以配合原先的 IOMEGA PPA3 设备使用。此驱动程式的启动参数格式为:
--------------------------------------------------------------------------------
ppa=iobase,speed_high,speed_low,nybble
--------------------------------------------------------------------------------
除了 iobase 之外其馀皆为选用值。如果你想改变这三个选用参数中的任何一个,建议你读读 linux/drivers/scsi/README.ppa 中有关它们控制些什麽的细节。
NCR5380 based controllers (`ncr5380=')
跟你的介面卡有关, 5380 的型式可以是输出入对应或记忆体对应。(低於 0x400 的位址意谓著输出入对应,但 PCI 以及 EISA 硬体使用 0x3ff 以上的输出入位址。)不管是那一种情况,你都是指定位址,硬体中断以及直接记忆体存取通道的值。输出入对应介面卡的□例像是: ncr5380=0x350,5,3。如果该卡不使用中断,那麽 255(0xff)这个硬体中断值会关闭中断的使用。 254 这个应体中断值表自动侦测。更细节的资讯可以在 linux/drivers/scsi/README.g_NCR5380 这个档案里找到。
NCR53c400 based controllers (`ncr53c400=')
标准 53c400 的支援是由与上述标准 5380 之支援相同的驱动程式所提供。启动参数与上述完全相同,除了 53c400 不使用直接记忆体存取之外。
NCR53c406a based controllers (`ncr53c406a=')
此驱动程式使用这种格式的启动参数:
--------------------------------------------------------------------------------
ncr53c406a=PORTBASE,IRQ,FASTPIO
--------------------------------------------------------------------------------
其中 IRQ 以及 FASTPIO 参数为选用项。中断值零关闭中断之使用。使用一与 FASTPIO 参数启用 insl 以及 outsl 指令以取代一个位元组的 inb 以及 outb 指令。此驱动程式也可以由编译时期选项设定使用直接记忆体存取。
Pro Audio Spectrum (`pas16=')
PAS16 使用 NCR5380 SCSI 晶片,新款还支援无跳接配置。启动参数的格式为:
--------------------------------------------------------------------------------
pas16=iobase,irq
--------------------------------------------------------------------------------
唯一的不同是你可以指定 255 这个硬体中断值,这会告诉驱动程式不要使用中断,然效能会降低。 iobase 通常是 0x388。
Seagate ST-0x (`st0x=')
侦测这些 SCSI 卡的程式码寻找从卡上安装进来的基本输出入系统,如果没有,就找不到你的卡。或者,如果 BIOS 的签章字串不被认可那麽也会找不到。不管是那一种情况,你都得使用这种型式的启动参数:
--------------------------------------------------------------------------------
st0x=mem_base,irq
--------------------------------------------------------------------------------
mem_base 的值是界面卡使用的记忆体对映(memory mapped)输出入区域的值。此值通常会是下列其中之一: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。
Trantor T128 (`t128=')
这些介面卡也是以 NCR5380 晶片为基础,接受下列选项:
--------------------------------------------------------------------------------
t128=mem_base,irq
--------------------------------------------------------------------------------
The valid values for mem_base are as follows: 0xcc000, 0xc8000, 0xdc000, 0xd8000. 可用於 mem_base 的值如下: 0xcc000, 0xc8000, 0xdc000, 0xd8000。
Ultrastor SCSI cards (`u14-34f=')
注意,此卡有两个互相独立的驱动程式,名为 CONFIG_SCSI_U14_34F 者使用 u14-34f.c 而 CONFIG_SCSI_ULTRASTORE 使用 ultrastor.c。 u14-34f 这一个(新的 v2.0 核心用它)接受一个格式如下的启动参数:
--------------------------------------------------------------------------------
u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]
--------------------------------------------------------------------------------
此驱动程式会依所列顺序侦测这些位址。
Western Digital WD7000 cards (`wd7000=')
这个驱动程式寻找它所知道的基本输出入系统唯读记忆体字串来侦测 wd7000 并且知道数个标准的配置设定。如果它没能用正确的值动起来,或不认得你的基本输出入系统版本,那麽你可以使用这种格式的启动参数。
--------------------------------------------------------------------------------
wd7000=irq,dma,iobase
--------------------------------------------------------------------------------
4.3 不接受启动参数的 SCSI 卡
目前为止,下列 SCSI 介面卡不使用任何启动时期参数。在某些情况下,你可以直接编辑驱动程式本身把值写死(hard-wire)进去,如果真的必要的话。
Adaptec aha1740 (EISA probing),
NCR53c7xx,8xx (PCI, both drivers)
Qlogic Fast (0x230, 0x330)
Qlogic ISP (PCI)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
5. 硬碟机
这一节列出所有与标准 MFM/RLL, ST-506, XT, 以及 IDE 磁碟机相关的启动参数。注意,IDE 以及先前的 ST-506 硬碟驱动程式都接受 `hd=' 选项。
5.1 IDE 磁碟/光碟驱动程式参数
IDE 驱动程式接受几个参数,涵盖□围从磁碟规格(geometry)到先进或不良之控制器的支援。底下是所有可用之启动参数的摘要。要知道完整的细节,你真的应该去查阅在 linux/Documentation 目录下的 ide.txt 档,这个摘要是从中摘录出来的。
--------------------------------------------------------------------------------
"hdx=" 从 "a" 到 "h" 所有的 "x" 都承认,像是 "hdc" 。
"idex=" 从 "0" 到 "3" 所有的 "x" 都承认,像是 "ide1"。
"hdx=noprobe" : 也许的确有个磁碟在那儿,但不要去侦测
"hdx=none" : 这里没有磁碟,忽略 cmos 且不要去侦测
"hdx=nowerr" : 忽略这个磁碟的 WRERR_STAT 位元
"hdx=cdrom" : 这里有个磁碟,而且是个光碟机
"hdx=cyl,head,sect" : 这里有个磁碟,并指定磁碟规格
"hdx=autotune" : 驱动程式将试著把介面速度调到支援之
最快可程式化输出入(PIO) 模式
,此磁碟能接受才行。并非所有
晶片组种类都有完整支援,并且
很可能使旧的/奇怪的 IDE 磁
碟出问题。
"idex=noprobe" : 不要尝试存取/使用这个介面
"idex=base" : 在指定的位址侦测介面,其中 "base"
通常是 0x1f0 或是 0x170 且
假设 "ctl" 是 "base"+0x206
"idex=base,ctl" : 指定 base 以及 ctl
"idex=base,ctl,irq" : 指定 base, ctl, 以及 irq 数值
"idex=autotune" : 驱动程式将试著把介面速度调到支援之
最快可程式化输出入(PIO) 模式
,此磁碟能接受才行。并非所有
晶片组种类都有完整支援,并且
很可能使旧的/奇怪的 IDE 磁
碟出问题。
"idex=noautotune" : 驱动程式将不会试著调整介面速度。除
了 cmd640 之外,这是大部份晶
Tags:The Linux BootPrompt
编辑录入:爽爽 [复制链接] [打 印][]
更多精彩
赞助商链接