byPaulGortmaker.
/ I3 o. k% h' z3 P5 E5 g- lv1.14,1February1998
( s3 d7 z& g% q. \1 F7 J4 ~) k
3 l* L( M+ S Q! N4 ^. D7 c8 H4 ?# L g! c# l5 f* a& q; {5 x
--------------------------------------------------------------------------------
. }/ T t: Q- y( `# \2 }& b0 s这份文件是启动提示说明(BootPrompt-Howto),它整理了所有可以在启动时期传给
Linux核心的启动时期参数(arguments)。包含所有核心与设备的参数。也包含关於核心如何排序(sorts)启动时期参数的讨论,还有一些启动
Linux核心常用软体概述。
( o+ ~( L2 ]9 r--------------------------------------------------------------------------------
: r( f4 Z2 F% r& B% |
8 B/ s2 g: E0 O1 I1 _# y0 c+ a3 n* c4 P& B2 ?: p$ K9 a
--------------------------------------------------------------------------------
! h$ e a" B' P0 m+ z* q" T/ l, ~' T" b' d6 [
1.简介
! I" n; f* z6 U3 } A2 h6 c: F
; e' B: i7 r) l$ q' ^8 g核心有能力在启动时以`指令列'方式接受有限的参数资讯,
类似执行程式时所给予的一些参数(argumentlist)。通常这是用来提供核心一些它没有办法自己确定的硬体参数资讯,或是避免/变更(override)核心自己侦测所获得的值。
& y7 R3 @9 [1 m2 q7 W8 D! j
v! t& e- s5 J7 W2 j然而,如果你直接把核心映像(kernelimage)拷贝到软碟上,(例如cpzImage/dev/fd0)那麽你将没有机会指定任何参数给核心。所以大部份的Linux使用者都使用像是LILO或是loadlin一类能够把这些参数传给核心,然後启动它的软体。
( `3 M8 j, t' J; R
" E. ]% t9 q& _7 y7 p模组(MODULE)使用者请注意:典型的启动提示参数只能用於直接编译到核心里的硬体
驱动程式。它们对使用模组方式载入的
驱动程式没有影响。大部份的发行套件(distributions)都使用模组。如果你无法确定,可以对照/etc/conf.modules的内容查阅mandepmod以及manmodprobe。
7 v* K- ~+ h5 {
# \2 y4 [4 c. u8 T9 a+ I
目前这版说明文件涵盖到v2.0.33为止的核心。同时也包含部份到v2.1.84为止,发展/
测试版核心的特性。
/ S+ B R r4 G" {+ _7 D- _
/ N# z5 v! X! K4 F1 b% X
这份启动提示说明的作者是:
# U) {. b1 b6 _8 G
4 B; S q5 @# K% B0 {
9 p4 Q% z. T+ v- G3 b
PaulGortmaker,gpg109@rsphy1.anu.edu.au
; s8 ?- m5 @! z# R/ V[请注意,特别给非i386
机器或设备(尤其是Atari/Amiga)用的启动提示参数目前并没有写进来。]
. X4 u; h. @# v+ u {, O: ?) h3 o
- G7 V) w0 ^. M9 @: n7 r, Z: a* E7 }
1.1宣言与
版权( h$ \1 i$ B* }4 O
# g4 ?/ w6 A5 M. T
这份文件并非绝对正确的
真理。然而它大概是你所能找到最新的资讯。没有人必须对你硬体所发生的事负责,除了你自己以外。如果你的硬体冒烟烧掉了(...这几乎不可能!)我也没有责任。也就是说根据这份文件中所提供的资讯去实行而造成的任何损害作者概不负责。
' I2 D% N, l6 @) m! Q& e2 T. q6 o1 [ {! X
这份文件的版权Copyright(C)1995-1998属於PaulGortmaker。
/ @4 n1 V1 h. E; O e, V6 B: \! p
/ L. O2 ^9 ]# h* O这份文件可依第二版GNU通用公开授权(GeneralPublicLicense)的条件,包括此声明,进行拷贝。细节请参阅随附於Linux核心的linux/COPYING档案。
& ~5 ? V$ {3 s4 f
8 D* j" V6 E- M ]0 T3 O如果你想把这份文件集结出版,请与我联络,我会确认你取得的是否为最新的资讯。过去曾经有过时的Linux说明文件版本出版,造成发展者为了在新版文件中已有答案的问题想破头壳。
5 Z8 Z+ g/ l4 y7 M, J) S1 n6 e8 \9 n
9 Y2 w$ p1 A6 n/ g$ @/ E" J6 yThisdocumentisnotgospel.However,itisprobablythemostuptodateinfothatyouwillbeabletofind.Nobodyisresponsibleforwhathappenstoyourhardwarebutyourself.Ifyourhardwaregoesupinsmoke(...nearlyimpossible!)Itakenoresponsibility.ie.THEAUTHORISNOTRESPONSIBLEFORANYDAMAGESINCURREDDUETOACTIONSTAKENBASEDONTHEINFORMATIONINCLUDEDINTHISDOCUMENT.
, i4 m$ v ]6 L* n" f3 i
[color=#FFFFFF']
# b g1 ~4 x; z; v) k
7 h6 b+ j8 O! t0 D/ Y$ [
* |$ R4 P$ J# z1 m2 s& R9 a+ H
ThisdocumentisCopyright(C)1995-1998byPaulGortmaker.
& w2 B4 z7 A' M
" ^0 P8 ?( N% I- y$ J: M0 c! Z
ThisdocumentmaybecopiedaccordingtotheconditionsoftheGNUGeneralPublicLicense,version2,includedhereinbyreference.Seethefilelinux/COPYINGthatcomeswiththeLinuxkernelforfulldetails.
" ^6 z1 g" I- U6 c m+ r
1 `; y" Q+ `- c* H& b: c V, mIfyouareintendingtoincorporatethisdocumentintoapublishedwork,pleasecontactme,andIwillmakeanefforttoensurethatyouhavethemostuptodateinformationavailable.Inthepast,outofdateversionsoftheLinuxhowtodocumentshavebeenpublished,whichcausedthedevelopersunduegrieffrombeingplaguedwithquestionsthatwerealreadyansweredintheuptodateversions.
! S5 O- R- Y% \1 H8 }0 J" [ h% R
" A$ s1 C1 m$ @) @+ V; R
6 F" ?3 h% p( k( e7 @' T
1.2相关文件
5 ^1 @- F% ]- T' i8 [: L1 l* S, L7 p- S- a( v, k# |
最新版的文件永远是核心的原始程式码本身。等一下!先不要害怕。阅读原始档里的注解不需要懂任何程式设计。例如,如果你要找可以传给AHA1542SCSI驱动程式的参数,那就到linux/drivers/scsi目录下去看aha1542.c这个档,在前面100行里就可以找到一段原文说明此1542驱动程式所接受的启动时期参数。
# R& n3 G4 N5 F4 r6 {
5 f+ d* g7 m& B& A# O0 Z下个绝佳的参考是核心本身随附的任何文件档。目前并不多,大部份可以在linux/Documentation目录及其下的子目录中找到。linux目录通常可以在/usr/src/下找到。有时候也可以在相关驱动程式目录里找到README.foo档案(例如linux/drivers/XXX/,其中的XXX可能是scsi,char,ornet)。
3 K7 o& E( A) O# Q8 Z) }+ l$ `; Z, p
如果你已经找到想要使用的启动参数,而现在想知道如何把这些资讯传给核心的话,那就看看你用来启动核心的软体(例如LILO或者是loadlin)所随附的文件。下面有简短的概述,但不能替代启动软体所随附的文件。
+ U) d# ~5 z5 [$ `" N
7 h' n/ W1 i% D% m
7 h, V& V3 L( a X3 \ a1.3Linux
新闻群组
: y$ t E: h3 ?8 D# o' y
; l. x. c" U& J6 u2 k: L
如果你有关於传递参数给核心这方面的问题,请先读一读这份文件。如果它以及前面所提到的相关文件都没能回答你的问题,那麽你可以试试Linux新闻群组。当然,在轻率的贴出你的问题前应该先阅读该新闻群组,因为可能已经有人问过这个问题,或者这可能已经是个常见问题(aFAQ)。张贴之前先快速浏览linux常见问题会是个好
习惯。你应该能够在邻近这份文件的某处找到常见问题集。
9 B7 e) B0 X6 ~
0 [# t( d) |8 t0 i9 O9 f
关於如何配置
系统的一般性问题应该直接贴到comp.os.linux.setup新闻群组。请你尊重这个有关张贴内容的一般惯例,并且,不要把你的
需求交叉张贴(cross-post)到其它群组去。
# q; I; ]. e* F; `: _/ N
; H3 [! ~9 }% o2 m [& [9 N4 \
- Q- j4 x- G7 E7 S2 u9 A- R# N1.4新版文件
6 J/ b% x% W& `: i8 [' m" _% w5 s6 i6 J7 ] i! j3 Y+ i7 V; U
新版文件可由匿名档案传输服务(anonymous
FTP)从sunsite.unc.edu这个站取得,在/pub/Linux/docs/HOWTO/目录里。注意,SunSITE的负载经常很大,所以建议你最好找个Linux档案传输映射(mirror)节点取得此文件。有新的资讯以及/或是驱动程式时就会补充资料。如果你现在读的这份拷贝已经有几个月之久,你可能得确认一下是否有新的。
4 m! {/ d* q o- Z/ _ X
( r& T* n+ I- F; R: {4 a! C
这份文件系使用一套特别为Linux说明文件计画修改的SGML系统所产生的,有各种不同的输出格式,包括postscript,dvi,ascii,html,以及将要出现的Texinfo。我建议以html(经由全球资讯网
浏览器)或Postscript/dvi格式阅读。这两者都包含ascii转换过程中失去的交互参考(cross-references)。
& o; c% W$ z5 |# O" u* C5 b+ h! d D/ {4 u; F7 y; T9 o
如果你想从sunsite取得正式的拷贝,位址(
URL)在此。BootPrompt-HOWTO
) X3 l% e! q z4 `( T2 G. l4 J9 C
: d5 i5 r2 z. M: ~% m* w1 K$ o3 i- n$ F# U8 `# e/ `0 v
6 L: i) E6 E" a1 T0 I--------------------------------------------------------------------------------
* e2 I7 F' x9 U) f' l* F, @1 ^! w; S" |" d; O
--------------------------------------------------------------------------------
5 u7 g/ t$ G% ]7 R6 j
- v& O; @& }: K) o3 D5 c2.启动提示参数概观
+ {# v0 | r5 D0 ^9 G) {
& o- S0 @6 U5 Z6 i这一节介绍一些可以用来传递启动时期参数给核心本身的软体□例。也给你有关这些参数系如何被处理,启动参数有什麽样的限制,以及它们如何被转送到各个适当设备的观念。
+ x( H9 J. W3 W/ m3 A# b' c2 y; U& Z6 R' r' M
有一点很重要得注意的是在启动参数中不应该使用空白,只有在各别的参数之间可以。单一参数其值的列表(Alistofvalues)是在各值之间以逗号格开的,再一次,没有任何空白。参见下面的□例。
- a3 q R; U& c5 k
8 ?" J3 c4 @& R3 l; {8 _7 u8 g
$ p6 r4 N9 o# R) F! C N" A6 l" s
7 ^- q4 y# I) M- Z5 O--------------------------------------------------------------------------------
9 ~: ~* n9 Y* E9 f+ } ?2 h
7 m+ C4 y7 e, _# O( ~4 U
ether=9,0x300,0xd0000,0xd4000,eth0root=/dev/hda1
0 d% b1 m f+ P, p0 m) l. ]*RIGHT*
1 u& F0 ~$ B! X4 l1 ]. z4 b
ether=9,0x300,0xd0000,0xd4000,eth0root=/dev/hda1
8 X ^- e& H! o2 B$ o$ \4 M8 s, v( l; I*WRONG*
1 F$ y" j. |% s# _: |" |
8 @$ y9 h6 Z0 v3 f0 d" P# h9 u
$ V& s$ D# M$ h. V
--------------------------------------------------------------------------------
* \1 S9 }# k/ X. j& z1 ~
- Z+ f; g( Q! M7 t# B6 |3 y+ C6 ]/ b2 L$ b n! o
2.1LILO(LInuxLOader)
' h! N. D# ]4 M# z# e' [$ }8 E
$ G" T5 K: H; b2 m5 m( ?
最常用的是WernerAlmesberger所写的LILO(LInuxLOader)程式。它有能力启动不同的核心,而且配置资讯存放在一个纯文字档里。大部份的发行套件都附有LILO作为预设的启动载入程式(boot-loader)。LILO可以一视同仁地启动DOS,OS/2,Linux,FreeBSD等等,而且相当有弹性。
1 Q& u! L6 x- l9 V% i$ h& K, ^" T4 Z; h+ x v8 c
在你开机之後,典型的配置会让LILO停住并印出LILO:。然後等个几秒看看使用者有没有输入任何选项,没有的话就启动预设的系统。在LILO配置档里典型的系统标签是linux以及backup和msdos。如果你想要输入启动参数,可以打在这,在输入你要LILO启动的系统之标签後面,像下面这个□例所显示的。
/ l7 ?- T- C$ G C" n6 ]. X* f
. I4 R( D5 f& o! G( [. ^) `$ ]8 O; v
* ^% b7 }3 `2 c9 _--------------------------------------------------------------------------------
5 Z. t8 V3 ]: B$ _
) ?0 U, J* Q. S; u* W( HLILO:linuxroot=/dev/hda1
! \$ ~0 h' s( M! y4 U5 c6 A1 O5 N! |- m
$ ~/ U z. b# Y" C. |: V+ ~; ~--------------------------------------------------------------------------------
" D6 s5 r2 W. U/ T+ _+ M" T. _6 B# P2 D3 o
LILO随附有绝佳的文件,而且为了这里所讨论的启动参数之使用,当你想要把启动时期参数加到LILO配置档里永久使用时LILO的append=指令就非常重要。只要简单地在/etc/lilo.conf档中加入像append="foo=bar"这样的东东即可。可以加在该档的最前面,使它对每一节区(section)都生效,或是加在某image=节区里使它对该节区生效。请参阅LILO文件里更完整的说明。
8 i& ~0 N4 w) l- V& J- x
- ^' s, D+ u' {7 F* `( I0 W) ^/ u, ?+ [8 [6 L9 u
2.2LoadLin
$ d$ k: k( T7 c, g7 E% s
) y) B! |: g. s, G. @7 r! A+ P另一个常用的Linux载入程式`LoadLin'则是一支有能力从DOS提示符号(prompt)下启动Linux核心(可以给予启动参数)的DOS程式,假如某些系统资源可用的话就行。这对使用DOS并想从DOS下启动进入Linux的人而言很好用。
, f" r5 q. T/ Y2 p
2 A# b4 J" D* f0 p, W9 Y9 x' E如果你拥有一些需要使用其所提供的DOS驱动程式来初使化以进入可用状态(knownstate)的硬体那麽它也很有用。一个常见的例子是需要使用DOS驱动程式设定(twiddle)几个
神秘的暂存器使它进入声霸卡相容模式的”声霸卡相容”音效卡。启动DOS与所附的驱动程式,然後从DOS提示符号下使用LOADLIN.EXE载入Linux以避免重新启动(reboot)会重置(reset)该卡。如此该卡维持在声霸卡相容模式也就能在Linux下使用。
8 ?4 l3 o! Z( _) M: X: L( ~
# [% ~( n T4 W* g) M
还有一些其它程式可以用来启动Linux。完整的列表请找找在你当地Linux档案传输映设节点里的程式,在system/Linux-boot/下。
5 t) H! O1 W7 z& K4 [. F) s) B
+ c: [/ E, p- n$ B. u2 Q
2 D/ B3 ?. ]7 ~- y
2.3``rdev''公用程式
7 Z; _( H# S4 f, L; \: G1 |5 d D
# K6 O+ I# p( c" D! }3 k核心本身里面的数个位元组存有少数几个核心启动参数的预设值。在大部份的系统里安装有一支称为rdev的公用程式知道这些值在那里,以及如何改变它们。它也能改变另外一些没有相对之核心启动参数的东西,像是预设的显示模式(videomode)。
( O6 o5 r9 T) F; x" C
! l1 c& O4 j! l* ?0 D此rdev公用程式通常也另称(aliasedto)swapdev,ramsize,vidmode以及rootflags。它能够改变五种东西,分别是根目录设备(rootdevice),置换设备(swapdevice),记忆体磁碟(RAMdisk)之参数,预设的显示模式,及根目录设备的存取设定(readonly/readwrite)。
( f% `% A8 N8 s" @6 y
& L' j6 Y8 z$ B4 R
更多有关rdev的资讯可以藉由输入rdev-h或是参阅其线上说明页(manrdev)获得。
4 f! a: q* o1 L) c; G K
+ G6 Y! L8 O: J: k# A/ ]* p' _$ a; }: d \6 X: `- H- R2 ^7 ~, e: \
2.4核心如何排列参数
) K9 J( h- O. j* T
7 x+ g- F- p1 N7 P大部份的启动参数格式为:
1 {( Q( u" M, }
/ M9 t) n4 t, [. ^4 g Z+ ]# ]. }; s% Q) D' u
* x4 n7 P% R- j7 l3 x. t--------------------------------------------------------------------------------
( a8 e k8 W2 A; j6 ?& a
9 q. I% K3 [9 s) U
name[=value_1][,value_2]...[,value_11]
. Q6 y+ r1 |& _; }+ s9 ?7 q. M+ c: ?' m
3 C% f( e: Z5 W4 o5 h8 S
--------------------------------------------------------------------------------
+ Z- l) b5 `* ^! x) Y
. _( |( c8 a' x$ {3 i, y$ t
其中`name'是一个用来唯一识别(unique)相关的值(如果有的话)是要给核心的那个部份的关键字。多个启动参数只是上述格式以空白分隔的列表。注意那个11是真实的限制,因为现行的程式码对每个关键字只处理11个以逗号分隔的参数。(然而,在非比寻常复杂的情况下你可以重覆使用相同的关键字加入11个以上的参数,假如设定函式支援这样搞的话。)同时也要注意,核心把列表分成(splits)最多10个的整数参数,後面并跟著一个字串,所以你不能真的给它11个整数,除非你自行在驱动程式中将第11个参数由字串转换成整数。
+ q# M x( N! {( l8 F! _7 s9 z, o0 A- k, g" i* ]
大部份排序的
动作是在linux/init/main.c里面。首先,核心查看参数是否为`root=',`Ro',`Rw',or`Debug'这些特别的参数。这些特别参数的意义本文中会进一步说明。
+ p! }7 c$ m7 \. h8 g* \. Q# L3 z# ~, C! w* ]8 t2 Q7 ?# z* l/ P% Q& i
然後它走过(walks)一系列的设定函式(放在bootsetups阵列里)看看所指定的参数字串(像是`foo')是不是与其中的一个设定函式(foo_setup())相关,以设定特定设备或核心的一部份。如果你传给核心foo=3,4,5,6,bar这样一行那麽核心会搜寻bootsetups阵列看看`foo'是否有注册。如果有,那麽它会呼叫与`foo'相关联的设定函式(foo_setup())并交给它在核心指令列所给的整数参数3,4,5,and6,并交给它字串参数bar。
& j1 W; P/ O. L8 ?& h[color=#FFFFFF']
- s2 ?8 S, h5 }6 Y6 m7 r# M2 N+ A/ R
9 L+ N% V7 \2 X9 ~9 L
/ |7 S3 o; N8 L/ O1 g p
\+ Z0 n6 r; y2.5设定
环境变数
+ i- b! _5 V$ v4 J4 j% ]
1 o' ?! o2 R7 _* _* n" A+ ]
任何不被接受当作上述设定函式的`foo=bar'型式之叙述会被解译为要设定的环境变数。一个(没用的?)□例是以`TERM=vt100'作为启动参数。
3 R, p& J; l& `1 k0 i. x* v. g$ z3 C
# z, s3 E' e+ O2.6传递参数给`init'程式
% o; e& B- I) |& ?) k y+ Y3 j9 A) j+ M, ~ ]2 r
任何剩下的,核心不管而且不被解译成环境变数之参数接下来会传给第一个
程序(process),通常是init程式。最常传给init程序的参数是single这个字,指示init把
电脑启动在单人模式(singleusermode)并且不启动所有一般的驻留程式(daemons)。查阅你系统里安装的init版本之线上手册看看它接受那些参数。
3 B, O" A$ a) `* Y) M
/ ~5 E3 q% ?, {( g- a, o
% j! N; Y$ J8 _. l
, |- g! ], K+ j8 }9 R1 y* }--------------------------------------------------------------------------------
5 U" N, n$ X1 C* l6 c
--------------------------------------------------------------------------------
& \1 M6 d) f2 Q3 L. {$ v$ H8 N) ~( b# A* O& W
3.一般无关设备特性的启动参数
9 R1 Q+ D. n( V7 u' Q
U o, p* v, B2 c; Z有些启动参数并非与任何设备或周边相关。它们乃是与某个核心内部参数相关,像是记忆体的处理,记忆体磁碟的处理,根档案系统的处理以及其它东东。
}" e" A2 S5 ]8 T
1 Y- L' @' t$ P' }4 K
% I( `) H5 o2 R3.1根档案系统选项
9 m$ R k! G$ d2 B
$ G' w5 }- R' ]. k6 `/ l
下列选项皆与核心如何选择及处理根档案系统有关。
; n1 r+ @) r S3 G( E' R! z% J9 u# O' n8 Q% U. t4 Y
3 U1 |" E% K _2 c
`root='参数
1 h0 @6 Z0 j- A- q5 k& s
- [$ i, \/ |% f! E. m Z! M此参数告诉核心启动时以那个设备作为根档案系统使用。此设定的预设值为建造(bulid)核心时系统的根档案系统设备。例如,如果核心是在一个以`/dev/hda1'作为根档案系统分割区的系统上建造的,那麽预设的根档案系统设备就是`dev/hda1'。要变更此预设值,并选择第二台软碟机作为根档案系统设备的话,可以使用`root=/dev/fd1'。
2 O/ e0 c0 T+ O; C% e
9 |5 F7 M0 X$ E+ n4 f可用的根档案系统设备为下列设备其中之一:
2 F3 d4 N! J2 f; l9 d; \% X
: M6 l+ g' }( n& C& w(1)/dev/hdaNto/dev/hddN,这是ST-506相容磁碟`atod'上的第N个分割区。
- s4 [9 a" {6 @. A/ C+ G) r. k3 o
# Q2 j4 c. b) h6 m(2)/dev/sdaNto/dev/sdeN,这是SCSI相容磁碟`atoe'上的第N个分割区。
( r3 L% ?0 ^. ?( s8 D( M' I
. M( f# Y9 [9 M' ]- [( x$ X
(3)/dev/sdaNto/dev/xdbN,这是XT相容磁碟`atob'上的第N个分割区。
; k, N8 a3 E6 V& O! j1 ^" G' B1 M; m: F: J, u
(4)/dev/fdN,这是软碟机号码N。N=0为DOS下的`A:'磁碟机,而N=1则为`B:'。
) H F7 Q3 d9 a: f8 j3 ][color=#FFFFFF']
$ a& H6 g4 g# Q; h7 B5 `" p6 @ D' o5 }. ]$ x3 S" ~) _
5 b6 C% h4 {5 s1 }$ ?5 x(5)/dev/nfs,这并非真的是个设备,而是一个告诉核心经由网路取得根档案系统的旗标。
& i) R! \9 ]& R9 K2 H0 m9 c/ P9 p
上述磁碟设备的另一种数字格式,更为笨拙且更没有可携性的主要/次要(major/minor)号码也能接受。(例如/dev/sda3的主要号码为8,次要号码为3,所以你可以使用root=0x803作为另一种指定方式。)
: w- Q& l3 {9 R1 [
- ]! T1 l5 Q! Q9 w& t+ v- Q) z这是少数几个在核心中存有预设值,所以可以用rdev公用程式改变的核心启动参数。
1 g" t7 K! f3 L# z; J/ G; T* w
3 @: `9 l( N0 O. \! L& ]
; y7 _+ [/ y) f3 i, d, i
`ro'参数
; B; i& q7 A X7 v! i+ D
( c0 ^) v6 B) a2 N* V4 P
当核心启动时它需要有个根档案系统以读取一些基本的东西。这就是挂在根目录的根档案系统。然而,如果根档案系统以可以写入的方式挂上来的话,你就无法在有档案写到一半的情况下确实地检查档案系统的完整性。此`ro'选项告诉核心以唯读的方式挂入根档案系统,如此任何档案系统一致性检查程式(fsck)在执行检查时都可以
安全地假设没有档案写到一半的情况。没有任何程式或程序可以写入此档案系统直到它重新以可读写的方式挂入为止。
7 ?& A: @' ^5 i5 k
$ e" w& ~. L D$ w这是少数几个在核心中存有预设值,所以可以用rdev公用程式改变的核心启动参数。
* o1 a; g }* d+ r. {4 C7 p( O, F
3 K: H; M, o% T1 \
8 x" R4 w0 z1 j: B# m) F`rw'参数
5 Z, D8 j" C5 `9 z6 P' P j7 J8 k6 ]4 N
4 Q' n3 \4 J1 Z这与上一个完全相反,它告诉核心以可读取/写入的方式挂入根档案系统。无论如何,预设是以可读写方式挂入根档案系统。不要在以可读写方式挂入的档案系统上执行任何的`fsck'程式。
T- }% @- h1 a$ U \/ `) O5 e
5 B; S; }' M* `2 X; R此参数使用的值与上一个储存於核心映像的参数相同,可经由rdev存取。
, {# K/ ?; c! \9 }, f1 o' p
1 u) g) `" u" m+ `; [5 M, l" J4 r% V2 Y/ P
3.2与记忆体磁碟(RAMDisk)
管理有关的选项
' x! i8 B8 C3 F' y/ `) \' \4 n! {" P
2 Z0 M3 i# W) g* o# X4 S* p! F下列选项皆与核心如何处理记忆体磁碟设备有关,这种虚拟磁碟设备通常在安装阶段启动机器时使用,或配合使用模组化驱动程式以存取根档案系统的机器上。
" y2 B/ w' H# P7 M* c9 z* Q2 S7 H' l% x4 E1 |
7 m/ Q2 C2 E7 a7 ^`ramdisk_start='参数
7 v, V' m( w# x, M$ q, C( B+ x- z
为了使核心映像能够与压缩的记忆体磁碟映像放在一张软碟内,所以加入这个`ramdisk_start='指令。核心不能够放在压缩过的记忆体磁碟之档案系统映像里,因为它得从最开始的第零磁区开始放置,如此基本输出入系统(BIOS)才能载入启动磁区而核心也才能够开始启动执行。
3 ^, n0 K* T9 |9 ?" N. ~' A( j; H1 Z3 F* y
. B1 w* q' j. X6 d: Z
注意:如果你使用的是没有压缩的记忆体磁碟映像,那麽核心可以是要载入记忆体磁碟之档案系统映像的一部份,且该软碟可以由LILO启动,两者也可以如同压缩之映像般为分开的两部份。
w2 Z$ ]& [: A! t
2 l2 A5 Q9 d( O, N1 D2 w/ I, n如果你使用启动/根(boot/root)两张磁片的方式(核心一张,记忆体磁碟映像放第二张)那麽记忆体磁碟会由第零磁区开始,并使用零作为偏移值(offset)。因为这是预设值,你根本不必真的去使用这个指令。
6 K1 c0 K3 n# G' c0 y/ n
4 y' H! C a a( w& a$ l* r9 m8 Q4 o. _1 Z: v0 Z1 L* a9 O2 l1 U
`load_ramdisk='参数
0 y" M7 u, n( ?, L7 v1 O- n
: _ A6 V. s) N* w此参数告诉核心是否要载入一份记忆体磁碟映像。`load_ramdisk=1'指定核心将软碟载入至记忆体磁碟中。预设值为零,表示核心不应该试著去载入记忆体磁碟。
& s; h9 r. r% {* o( ~3 u. X0 N
# y" O, u5 ?6 z. O; r. t. `请参阅linux/Documentation/ramdisk.txt档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由`rdev'来设定及储存这些个参数。
/ P' _9 e+ ]4 s
. d- j! j0 q1 Y& O! _4 L
8 p4 Y/ e9 R+ p" v' ~`prompt_ramdisk='参数
; l6 j. i4 N+ g! C. U9 m- j, ^
+ {6 U5 r8 @( ]; w' \! Q B此参数告诉核心是否要给你个提示要求插入含记忆体磁碟映像的磁片。
# `- r+ p( Q# f7 e, w' F* t
9 K% K1 I- Q: b在只用一张软碟的配置下记忆体磁碟映像与刚刚载入/启动的核心在相同的软碟上故不需要提示。这种情况可以用`prompt_ramdisk=0'。在使用两张软碟的配置下你需要有个抽换磁片的机会,故可以使用`prompt_ramdisk=1'。因为这是预设值,所以不必真的去指定它。(轶闻:从前人们习惯使用`vga=ask'这个LILO选项来暂时停止启动程序以取得抽换启动磁片及根磁片的机会。)
, r* ?" L5 X+ }7 j$ K9 ^1 I& h7 S8 y0 p
请参阅linux/Documentation/ramdisk.txt档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由`rdev'来设定及储存这些个参数。
6 D0 V* n9 @2 i! p1 G
7 r7 Z* l1 ~4 _
4 ?& W5 A/ G- Y/ y! h2 P- m`ramdisk_size='参数
R( C/ ]8 M# u" Q
4 |3 C+ l6 [" l$ [6 I
因为记忆体磁碟实际上会依需求动态成长,所以其大小有个上限加以限制以免它用光所有可用的记忆体而坏事。预设值4096(i.e.4MB)应该足够满足大部份的需求。你可以用这个启动参数变更此预设值。
5 m+ W9 _; r: `, k- t& ^1 v E6 p
% q. N' O. }1 @2 n请参阅linux/Documentation/ramdisk.txt档案中新的启动参数与如何使用它们的完整叙述。它同时也说明如何藉由`rdev'来设定及储存这些个参数。
7 \+ `- S9 y, ?+ W( P+ E A! p ~. G4 q
( K: `1 s, D4 i6 @" }8 W7 l
`ramdisk='参数(过气了)
! p( w+ ~% f8 b
: q" G1 a$ q* q(注意:这个参数是旧的,除了v1.3.47版以及更旧的的核心之外不应该使用。应该使用的是前面所述的指令)
9 C# N/ \7 l, m [* K
( {) a7 s5 x- M/ t4 z# E这个参数以千位元组(kB)为单位指定记忆体磁碟设备的大小。例如,如果想要把位於一张1.44MB软碟上的根档案系统载入至记忆体磁碟设备,可以用:
7 z3 D" g* x, Y( i' ^9 |) S
4 c2 ?, ] R, @; Y9 T/ A3 v
9 h, |6 X- u- g3 Y, ^* `! e1 {5 H- x% Q3 _) J8 R7 i
--------------------------------------------------------------------------------
& b# k1 S$ l. r, W6 k# e
) G- O8 Z X6 X2 A3 M* e$ s. C" d
ramdisk=1440
& T" ~* ]# v5 T, m% M
6 V; r1 g, e e. \% r4 q( e4 A" d4 l4 ^, l G0 `9 U ]
--------------------------------------------------------------------------------
% d& N! T6 O4 {1 G/ f5 l1 k1 Y2 o7 j! q( |
这是少数几个在核心中存有预设值,所以可以用rdev公用程式改变的核心启动参数。
4 G' t: e) m* b! F6 V. w; E
[color=#FFFFFF']
9 `2 k5 d4 b+ M6 H$ ^% x3 f
2 `" G- k5 _+ b" W
% k! V- Z( g7 O D. I& @/ w5 I! J, f% a$ d% V
`noinitrd'(启始记忆体磁碟)参数
x- W. N- A+ F) w3 w3 i1 ^$ N) O3 z I- w( o4 k. G
v2.x及更新的核心有个特性,根档案系统最初是记忆体磁碟,然後核心执行记忆体映像上的/linuxrc。这个特性典型系用於载入某些挂入真正的根档案系统所需要的模组(例如,载入储存於记忆体磁碟映像里的SCSI驱动程式,然後挂入在某SCSI磁碟里真正的根档案系统。)
- \' k: ]+ |: \
' h* K ~, E5 ~* y8 |% r7 ]' h
实际的`noinitrd'参数决定核心启动之後如何处理initrd资料。如果有指定,它可以经由/dev/initrd存取,可以在记忆体释放回系统之前读取一次。有关初始之记忆体磁碟的完整细节与使用请参阅linux/Documentation/initrd.txt。此外,最新版的LILO及LOADLIN应该会包含其它有用的资讯。
% e7 Q* m, {0 W4 H2 k* L: |+ x( R, V7 H
& w! B7 ]. g" @1 g3.3与记忆体管理有关的参数
! w& |* c7 ?. \1 h; x/ p# ?' h }
下列参数会改变linux侦测或处理系统实体及虚拟记忆体的方式。
$ K$ w6 U. o6 ]4 l( ` e4 D% G
; E2 e, V3 `6 A8 ? N
- |7 K( k' Y. E& H4 M1 i`mem='参数
& [# n% k% H* y' s8 a" H1 E9 C0 ?
5 Q1 n( D+ P r- } 这个参数有两个目的:原先的目的是指定机器所安装的记忆体数量(如果你想限制linux能使用的记忆体数量可以指定一个较小的值)。第二个(很少用)目的则是指定mem=nopentium以便告诉linux核心不要使用4MB分页表(pagetable)这个效能特性。
3 X9 f4 ?4 i6 D2 _# m* |, C
[color=#FFFFFF']
" d* a/ ^8 s' Y& j% i" F( i; |% m$ P% ?1 w" M
7 X& m/ [, q! H% w/ `6 R
在个人电脑规格中,原先定义回传安装记忆体数量的基本输出入呼叫被设计成最多只能回报最多64MB。(是的,另一个缺乏远见的设计,就像1024磁簇的磁碟限制...哎。)Linux在启动时会使用此基本输出入呼叫以确定安装的记忆体数量。如果你安装的记忆体超过64MB,可以用这个启动参数告诉Linux你有多少记忆体。下面引用Linus对mem=参数的说明。
9 c) g. R$ r& b: K1 [; H1 ~/ x: y% I
”核心会接受任何你所给予的`mem=xx'参数,而如果它发现你骗它,那它迟早一定会当的很难看。这个参数指示可以定址的最高记忆体位址,所以,例如`mem=0x1000000'表示你有16MB的记忆体。对拥有96MB的机器而言此值为`mem=0x6000000'。
9 l6 X6 ]- K+ R9 N
1 l6 A4 ]$ N, T% R( N+ E- X! f
注意注意注意:
. |1 Z' R/ {- a0 ^9 u
& J/ g1 G+ K' g: ~# v3 i% n( y% p9 S某些机器可能会使用最上层(top)的记忆体作为基本输出入系统的快取等等一类用途,所以你可能并非实际拥有96MB的可定址
空间。反之亦然:
6 J5 e8 C& c V S! @+ e+ k) ?
7 Z7 S0 m7 c9 S$ K& z: n$ m
某些晶片组会将基本输出入系统涵盖的实体记忆体区域对应(map)到最上层记忆体後面,所以记忆体最上层实际上可能是96MB384kB。如果你告诉linux的记忆体比它实际上拥有的还多,那就会出状况:也许不会立刻出事,但最後一定会发生。”
3 q! k( Q9 V- p! \# ]! ^6 e* f
7 u0 k; C; Z6 y注意,此参数并非一定得是十六进位型态,而且可以使用`k'与`M'(大小写无关)字尾分别指定千位元组以及百万位元组。(`k'会把你给的值旋转(shift)10位元,而`M'会旋转20位元。)上述警告依然没变,沿上例,一台96MB的机器也许可以设mem=97920k而无法使用mem=98304k或mem=96M。
7 n" A' _8 u- {1 B" C& t, o, N6 |
0 g! Y5 q/ P: C+ a1 C9 K' f9 {- q
- R/ y1 a2 G$ k0 t/ i% l; d6 x
`swap='参数
% }& u; x6 H0 f7 S; |: M& O
6 [: Z* ]$ J( q这允许使用者调整某些与磁碟置换(swapping)有关的虚拟记忆体参数(VM)。它接受下列八个参数:
% N r7 R- _3 k M5 @5 m# j: O
- z( u' B" O5 k; B
, T1 I+ d% s* |/ f, E2 u* l# q- O
2 ?1 B2 y# M! c& Z" k--------------------------------------------------------------------------------
$ }4 v$ [, n& S- t6 b) t
, \# R& w8 u/ j) p9 Y! K
MAX_PAGE_AGE
- z! R$ v- R: R, m
PAGE_ADVANCE
) U0 z1 }" |- I/ ]# wPAGE_DECLINE
& n, `( K& d$ G# s) MPAGE_INITIAL_AGE
1 e# ~9 z5 n* }, |. R" q9 e( G% ]AGE_CLUSTER_FRACT
9 F) n* p* w8 C$ \ C; XAGE_CLUSTER_MIN
6 g4 O% Z6 V: F' KPAGEOUT_WEIGHT
( C7 Y' K% f" J$ |; U% }7 S5 ZBUFFEROUT_WEIGHT
L2 I# w+ y1 }4 T! O3 Y$ F- l/ `6 E* c: r* X+ c
7 k( H+ L4 `' ?
--------------------------------------------------------------------------------
! x! K4 j, \/ r) w
' D% E* {, p! G/ T0 E V有兴趣的玩家建议你阅读linux/mm/swap.c并注意/proc/sys/vm里面的东西。
) |# [5 k" J' |* t F; K* e# q
2 [. o! C0 |1 H% W( A c8 x
( ]$ [1 _7 ` `3 G; V7 p8 C7 g`buff='参数
: r4 s- l+ h' `6 w$ l' k0 V4 o, s
' o/ d& m6 q, ^+ C( h
类似`swap='参数,这允许使用者调整某些与缓冲记忆体(buffer)之管理相关的参数。它接受下列六个参数。
+ n* z P7 n" m/ Q" c' J/ S9 }
, v# t9 ]$ q0 Z+ y6 R
( b5 n/ K8 A2 W! K
* R; Z' j1 S7 W; _--------------------------------------------------------------------------------
; @( ]. u9 A5 _ ]* |5 E
5 q; X; ]. M0 J! u" e* E; nMAX_BUFF_AGE
5 Y' G. {- f7 ^7 K/ l- LBUFF_ADVANCE
& M/ a9 [; Q$ `- `' F
BUFF_DECLINE
1 u0 M" g1 |9 `9 @7 O# xBUFF_INITIAL_AGE
/ }5 p$ P3 q9 [; j0 l* l m
BUFFEROUT_WEIGHT
$ [1 y6 D0 H" z
BUFFERMEM_GRACE
2 u- \9 K5 P6 `, @ z* i# r
/ }* L2 @% d$ H
5 s3 a$ x& y; H) U$ Y--------------------------------------------------------------------------------
( q# J5 X% N* M
& U3 r% T8 I5 S! {2 r! Q$ R
有兴趣的玩家建议你阅读linux/mm/swap.c并注意/proc/sys/vm里面的东西。
" ^- w# X7 M& z$ u9 L) s
2 R3 Y! ?+ _3 P" x; H1 e) F8 H5 m
2 m- P+ e6 O" J s9 m. [ U7 r2 R3.4以网路档案系统(NFS)作为根档案系统使用的参数
3 S+ ~# ]. Y# c4 U$ D- q9 ?4 _
3 u4 A" b" a' z C/ J6 P- r藉由透过网路档案系统(NFS:NetworkFile
System)提供根档案系统Linux支援无碟(diskless)工作站这样的系统。这些参数系用来告诉无碟工作站要从那一台机器取得其系统。同时要注意root=/dev/nfs参数是必需的。有关使用网路档案系统作为根档案系统之细节说明在linux/Documentation/nfsroot.txt档案里。你应该阅读这个档案,因为下面只是从那个档案直接拿过来的快速摘要。
) g; |) s0 J2 G; r7 a* L1 [- B: V* i9 G" w7 w {
8 k, F! t+ [* r) d
`nfsroot='参数
0 L/ c( ]) R, u& n2 ?. a4 f9 d, ^! I' Q" z4 b& p% K& }
这个参数告诉核心以那一台机器,那个目录以及那些个网路档案系统选项作为根档案系统使用。此参数的格式如下:
2 L8 ^5 n- \6 O! v2 S' ?3 E" F5 t
+ ^6 x8 q! l$ M: L8 \( @1 I1 y; E4 |/ k, S+ d
/ n3 G2 u& R, R9 P
--------------------------------------------------------------------------------
' L1 |. _ k, v9 b- I; s
K. X3 [6 Z9 Q) q" @* [# znfsroot=[:][,]
+ H- R0 Q5 S8 b8 W0 v5 \! \2 ?
8 B8 l: |& j4 a; O% V" I
9 l& J# ^1 C7 n: u. W--------------------------------------------------------------------------------
' \6 q( H, M& G$ M+ z( B' X" A1 T
如果指令列上没有给定nfsroot参数,则将使用`/tftpboot/%s'预设值。其它选项如下:
; k O6 B# ]& U& L/ K8 J7 E. D' `8 y6 O; G I
--指定网路档案系统伺服端的网际网路位址(IPaddress)。如果没有给定此栏位,则使用由nfsaddrs变数(见下面)所决定的值。此参数的用途之一是允许使用不同机器作为反向位址解析协定(RARP)及网路档案系统伺服端。通常你可以不管它(设为空白)。
{/ V* @% X! C- M! w5 @' D* U
; {1 I, {( M7 m& b, I3 P9 t+ Z--伺服端上要作为根挂入的目录名称。如果字串中有个`%s'符记(token),此符记将代换为客户端网际网路位址之ASCII表示法。
3 F# `+ B y6 j& D9 e8 t* W
* H: B/ G$ t- X P8 g5 l6 s--
标准的网路档案系统选项。所有选项都以逗号分开。如果没有给定此选项栏位则使用下列的预设值:
* ~7 G5 v3 K7 y9 `3 g- S
6 t- I/ H- u" p1 y; u
% s% z* w# \- Q3 }- a! gport=asgivenbyserverportmapdaemon
$ y" u8 w$ @% I6 h9 arsize=1024
8 y1 e1 Q. k% S2 a+ ?' d/ n" P3 bwsize=1024
& p0 E* S+ E+ ktimeo=7
n& W. C0 R% l& |& H2 b$ q
retrans=3
! q& p' O. g" ^4 U, D: X$ ]acregmin=3
+ Y+ X" \: H/ ~* i7 w( j
acregmax=60
7 I0 u5 q' ~; r; m! S
acdirmin=30
+ z- B$ L- ^0 {3 E: {
acdirmax=60
6 G) m& V$ }0 }flags=hard,nointr,noposix,cto,ac
5 _9 }/ e; U. v; ?6 O
+ n3 o; a+ H/ P/ `
2 a' d7 e, K' ?`nfsaddrs='参数
7 D' ?/ w# X! Y; B$ ]7 u. z% L. h0 b. n: w' B2 B9 C
这个启动参数设定网路通讯所需的各种网路界面位址。如果没有给定这个参数,则核心会试著使用反向位址解析协定以及/或是启动协定(BOOTP)以找出这些参数。其格式如下:
3 o! K& M% i# f* r ]$ C; C. O$ i8 a0 [4 u
2 S# R9 e6 r3 E) e6 a/ s& I* \) y* U4 _$ l
--------------------------------------------------------------------------------
; O2 v, m7 k' u' f! R$ Y6 j# w8 Y; Q
) v4 V0 k8 g t( Y
nfsaddrs=::::::
- T/ t; O" N1 [+ j. z
$ Q' l! C1 P3 X- Y5 ]1 V
- N; y7 |7 A6 c--------------------------------------------------------------------------------
/ }4 a- \9 f$ W) i, p+ e* g$ V h1 [ G' K$ ~# j
--客户端的网际网路位址。如果没设,此位址将由反向位址解析协定或启动协定来决定。使用何种协定端视配置核心时打开的选项以及参数而定。如果设定此参数,就不会使用反向位址解析协定或启动协定。
$ e5 _: s* Y1 g6 S0 o& m
- t* l! e6 C( T! R. @7 E; E: C. g! ~--网路档案系统伺服端之网际网路位址。如果使用反向位址解析协定来决定客户端位址并且设定此参数,则只接受从指定之伺服端传来的回应。要使用不同的机器作为反向位址解析与网路档案系统伺服端的话,在此指定你的反向位址解析协定伺服端(保持空白)并在nfsroot参数(见上述)中指定你的网路档案系统伺服端。如果此项目空白则使用回答反向位址解析协定或启动协定之伺服端的位址。
/ K1 w/ y/ w, q5 g( z, X; D
+ I; K6 U$ L" l
--闸道(gateway)之网际网路位址,若伺服端位於不同的子网路上时。如果此项目空白则不使用任何闸道并假设伺服端在本地的(local)网路上,除非由启动协定接收到值。
" D5 W& P' a; N' Q1 _, p: q( \# D- A2 }2 u
--本地网路介面的网路遮罩。如果为空白,则网路遮罩由客户端的网际网路位址导出,除非由启动协定接收到值。
+ v B3 ]7 o" A% y- r# C Q7 x+ Z
[% Q/ A v( X: S% F/ g9 ]+ r6 U--客户端的名称。如果空白,则使用客户端网际网路位址之ASCII-标记法,或由启动协定接收的值。
' u3 @1 o& f4 Z- P
& C, r3 [% P$ _+ w7 n2 K--要使用的网路设备名称。如果为空白,所有设备都会用来发出反向位址解析请求,启动协定请求由最先找到的设备发出。网路档案系统使用接收到反向位址解析协定或启动协定回应的设备。如果你只有一个设备那你可以不管它。
. ~( Q/ ~% g, p" E1 [2 _- d+ U6 t, ^- E; [
--用以作为自动配置的方法。如果是`rarp'或是`bootp'则使用所指示的协定。如果此值为`both'或空白,若配置核心时有打开这两种协定则都使用。`none'表示不使用自动配置。这种情况下你必须指定前述栏位中所有必要的值。
8 s+ G8 ?) I! t8 `
5 ]! G0 J4 R. g( [) p; r
此参数可以作为nfsaddrs的参数单独使用(前面没有任何`:`字元),这种情况下会使用自动配置。然而,此种情况不能使用`none'作为值。
; I2 w1 \0 X4 M0 E2 t, `
, a0 G$ i+ i* @' c$ `- c9 a; D: b8 F/ x- J z6 j
3.5其它另外的核心启动参数
3 y4 m* D2 e: G
. F, E- l* w+ v- O1 \( c+ `这些启动参数让使用者调整某些核心内部的参数。
- s0 s5 j2 u- H/ t6 p" m
+ O! f8 Y0 b! v0 `$ Q
' Y0 [* G& g3 o/ n: rThe`debug'Argument
0 B) {) k9 Q$ H3 i
- `9 f, L, f" X+ o; i2 ]核心经由printk()函式传达重要(以及没那麽重要)的讯息给管理者(operator)。如果讯息很重要,printk()函式也会显示到主控台(console)上,就如同丢给klogd()记录到磁碟上一般。如同记录到磁碟上一般在主控台上显示重要讯息的原因是因为在不幸的状况下(例如磁碟损坏)讯息将无法存入磁碟而漏失。
4 ^) T2 v5 a, F, S7 B- {3 Y9 p, X7 c$ h% ]: d+ t
到底什麽重要什麽不重要其门槛藉由console_loglevel变数设定。预设是把任何比DEBUG(等级7)重要的东西记录到主控台上去。(这些等级定义在kernel.h含入档中)指定debug启动参数将使主控台的记录等级设为10,所以所有核心讯息都会出现在主控台上。
5 q- v5 v" U( R, N$ s
) f+ }& g6 x' m0 {0 a5 C& z. E1 H主控台记录等级通常也可以在执行期间经由klogd()程式选项设定。查看你系统之安装版本的线上说明页看看该怎麽做。
6 q/ ]2 F9 B; D1 b: z' c6 ?
. q% t5 A( ?3 \& z3 J4 j& G, m; m
3 m4 i F, x% f4 o# {5 l! o) u`init='参数
$ }; F+ F+ M* r& R: P
% N5 u/ S5 E, C5 f7 Q$ @核心启动时预设执行`init'程式,这支程式接下来经由执行getty程式,跑`rc'指令稿(scripts)以及诸如此类的东东为使用者设定电脑。核心首先寻找/sbin/init,然後是/etc/init(depreciated),而最後它会去试/bin/sh(可能在/etc/rc)。如果说,例如,如果你的init程式坏掉了,只要使用init=/bin/sh
5 }% t7 B' D8 S
+ q/ A6 d2 B0 ]: A. e
这个启动参数就能让你在启动时直接跳到解译环境(
shell),使你能够换掉坏掉的程式。
k5 C2 Y. F4 i6 `: v
, A$ N- E. o1 d0 k- G5 h% R
- Q5 B: A6 E! ^: ^0 S`no387'参数
# r+ v& L$ S& g# X+ D
, J* w) Z8 ?, M. Y& ~- P3 ]; f
某些i387协同
处理器晶片有臭□(bugs),在32位元保护模式下会出现。例如,部份早期的ULSI-387晶片在执行浮点运算时会死当,这似乎是因为FRSAV/FRRESTOR指令的一只□。使用`no387'启动参数使Linux就算你真的有数值辅助处理器也忽略它的存在。当然编译核心时你必须加入数值模拟支援!如果你有某些能够使用80287浮点处理单元(FPU)的古董级386机器那这也很有用,因为linux无法使用80287。
+ ]/ R2 ]- h: w8 H% L [7 @
) G- R/ |- s4 u$ d% p' y7 |
' V/ D% L( B7 L) b
`no-hlt'参数
9 L0 W# A$ K% ^. V# d
* _9 X! }# V r) _/ a0 ti386(及其後继者)家族的中央处理器有个`hlt'指令用来告诉中央处理器现在□□没事做,直到某个外部设备(
键盘,
数据机,磁碟等等)呼叫中央处理器执行任务为止。这个指令会使中央处理器进入‘省电’模式,像个死人(zombie)般坐在那里直到有个外部设备叫它起来(经由中断(interrupt),通常是)。部份早期的i486DX-100晶片处理这个`hlt'指令有问题,使用过这个指令後它们不能可靠地回到运作模式。使用`no-hlt'这个指令告诉Linux当无事可做时跑个无穷回圈而不停住你的中央处理器。让有这些晶片的人们能够使用Linux,然而还是建议有可能的话就换掉这些晶片。
6 G7 q6 e9 ~2 t% [/ {
8 O9 f# c0 j' n& ]
! m( T3 y* g3 ~& K! J7 f`no-scroll'参数
6 ~8 \6 K8 @/ O% s4 |# p8 g* B8 {
. S0 P/ I$ b4 |2 u启动时使用这个参数可以关闭卷页(scrolling)特性,这个特性使得Braille终端机难以使用。
6 c' ^! l* q" K6 y/ D
3 e R# s0 d3 c1 t# F8 y: J0 f
3 `7 p' I! x" M9 ~
`panic='参数
! O ~$ U$ M" U; i% y# M
* l7 n: w& Z1 R8 o6 { W+ V) Z
在不太可能发生的核心异常(kernelpanic)事件下(像是核心侦测到内部错误,并认为这样的错误严重到应该发出警讯并停止任何作业),
( b @6 e q3 F( |, c7 P" C& `
0 h }0 U; K& h& c/ j5 {+ e# F$ X& x' \1 c预设的处理方式是就停在那儿直到有人过来并注意到萤幕上的异常警讯然後重新启动机器。
9 Z! o! c1 Y7 M/ a) ?1 F
4 x) ]8 L( D( @/ v然而如果机器是在无法触及,隔离的地方跑的话也许会希望它能自动重置自己然後回到线上。例如,启动时使用panic=30会使核心在发生核心异常30秒後试著重新启动自己。若此值为零则使用预设的处理方式,就是一直在那儿等。
& U7 f# t+ \" D- i; v) X" d
3 x/ a7 s+ q4 V0 |+ S; ~4 i$ r+ s注意,这个逾时(timeout)设定也可经由/proc/sys/kernel/panic系统控制(sysctl)介面读取与设定。
4 m8 o) M2 e1 b# r9 p* {; z; H0 Y9 j# L% U. ?/ ~
. v. @, B( F/ s
`profile='参数
- i7 X P' `' Z) b0 K1 l; U$ k! o( l% C2 q" Q
核心发展者们可以打开某个选项以得知核心如何使用中央处理器
时间以及用在那□,以便最大化效率(efficiency)与效能(performance)。这个选项让你在启动时设定观察变化的计数(theprofileshiftcount)。此值一般设为二。你也可以在编译核心时打开此
功能。无论那种情况,你都需要像readprofile.c这类可以处理/proc/profile输出的工具。
) t6 i2 Y! X5 J1 u3 W( ~% n2 {9 [* N- {2 D d7 r
9 m/ U0 e5 w8 H/ [& Z5 t: m`reboot='选项
/ [% r% P2 s+ ?$ n3 R
( V# G& O: r! M5 y9 U* Z这个选项控制重置电脑时(典型是经由/sbin/init处理的Control-Alt-Delete动作)Linux所做的重新启动之种类。新的v2.0核心预设的动作是做‘冷’开机(完全重置,基本输出入系统执行记忆体检查等等)以代替‘暖’开机(没有完全重置,没有记忆体检查)。
' B" n: w5 f5 n0 A/ [
+ ^# z5 J4 Y# f7 @8 f改为预设冷开机是为了要在便宜的/烂烂的,暖开机请求没办法重新启动的硬体上工作。可以使用reboot=w设为原先的方式(暖开机),其实可以用任何以w开头的字来设定。
$ r/ X, C( _" O
/ h! B6 F) K; e" O* {; n; [为什麽这会造成困扰?某些具有记忆体快取的磁碟控制器能够感测到暖开机,并且把所有暂存的资料写到磁碟上。冷开机可能会重设该卡,在快取卡记忆体里面的回写(write-back)资料就会漏失。已经有人回报系统记忆体检查很花时间以及/或是小型电脑智慧介面基本输出入系统(SCSIBIOSes)冷开机时花较久的时间初始化是使用暖开机的好理由。
* n$ Q/ O. i. [' R( b" I- O- j4 Q: R
- D, ], u P9 b# }# a`reserve='参数
: R( z# h, R8 [5 ~' g. k
' |. A" {3 l- \' R! e这是用来保护输出入埠区域不要侦测。这个指令的格式是:
8 e, V5 i$ A; h, ~: u
# F/ F' ?3 V; C! Y# ~: m |! d
4 k& f p/ Z0 {7 C9 h. {: Q- I5 ureserve=iobase,extent[,iobase,extent]...
, ^& V: B6 \7 S. @
在某些机器上也许必须避免设备驱动程式去检查(自动侦测)在某些特殊区域的设备。这可能是因为硬体设计的不良而会使得启动终止(像是某些乙太网路卡),会被误认的硬体,状态会因为较前面的侦测而改变的硬体,或者只是你不想让核心初始化的硬体。
9 ] n# u) @5 v/ d0 L
9 W$ q) N5 V' o4 A; Q' Y9 M% i1 J' i此reserve启动时期参数藉由指定一段不要侦测的输出入埠□围以解决此问题。此段区域在核心的输出入埠注册表格当中被视为已经在该处找到设备(名称为reserved)而保留。注意,绝大部份的机器都不需要此机制。只有真的有问题或特殊情况才会需要用到这东东。
# Q& W9 G! T! s- h
$ V6 y E& J* S7 Z位於指定之区域中的输出入埠乃是靠著在侦测一段输出入区域之前先执行check_region()以避免设备侦测。这用於某些遇上NE2000会挂掉或者会误认其它设备的驱动程式。
% F8 Q" ~7 Q5 i/ X/ `$ `+ y
3 N$ A2 s3 s6 U( ?5 y% m正确的设备驱动程式不应该去侦测保留区域,除非另一个启动参数明确地指示它这样做。这意谓著reserve经常与其它启动参数一起使用。如果你指定一段保留区域以保护某特定设备的话,你必须明确地指定此设备的侦测□围,大部份的驱动程式如果有给它们明确的位址就会忽略输出入埠注册表。
* M. L5 U! M9 C7 Q% o k, H
8 E2 k! \+ `& i6 V6 {3 U( Z5 p4 X例如,此启动列
1 o# R' ^ E* V, V; X$ b* S" p6 n7 h* h6 ?' W# }6 @' k7 k Q
" x. ^7 a7 U0 J: ?' c9 H {
; w/ C5 B! R) |! i" s
--------------------------------------------------------------------------------
4 s! d% {1 ?# a6 a- z8 ?$ w; e4 S% n' M
8 [$ @- N3 r) f) R4 j& w1 lreserve=0x300,32blah=0x300
( s, p( O# F3 w
$ Y( f) m/ H0 S' g' x' P+ X% \) j3 t+ E
--------------------------------------------------------------------------------
2 M1 @( p3 \7 H' z- ?
) ~6 F4 e. T% E6 X/ J& y
保留0x300-0x31f不让除了`blah'的设备驱动程式外的所有驱动程式去侦侧。
: `, T; ^ L# o+ g% e1 e9 y# i. p' \4 b0 ^
如同一般启动时期所用的格式,它也有11个参数之限制,因此每个reserve关键字只能指定5个保留区域。如果你有异常复杂的需求,可以使用多重reserve指定。
# l4 W' t' z% _- U! |
# q( O1 M J" F) `
& E4 O8 K/ d9 m+ z n K
`vga='参数
# V% |+ j2 a0 `- S% t" Q/ t1 P
5 O% o/ m6 F3 A9 s注意,这并不真的是个启动参数。它是由LILO解译的选项,与所有其它由核心处理的启动参数并不相同。然而因为它的使用变得如此普遍故值得在此加上一笔。这个选项也可以经由使用rdev-v或相同的vidmode指令对vmlinuz档案作设定。这使得设定程式码能够在真的启动Linux核心之前使用视讯(video)基本输出入系统改变预设的显示模式。典型的模式是80x50,132x44等等。使用此选项最好的方式是以vga=ask启动,如此在启动核心前会有个列表提示你的显示卡可以使用的各种模式。一旦你从上述列表得知你想使用的号码,以後就可以把它放在`ask'的位置。更进一步的资讯请参阅随附於所有新版核心的linux/Documentation/svga.txt档案。
( Y5 V3 p! L( O0 ^9 X2 y
$ D7 `- i. `1 ?& s注意,新的核心(2.1版以上)有改变显示模式的设定程式码选项Videomodeselectionsupport,所以如果你想使用这个特性那麽你就得打开这个选项。
$ R# Y9 y$ e, R* r" _0 C- P$ [/ s. c5 P Q$ W x
, E! e f6 u% p2 x: G) J% T+ Q0 W7 G3 F. N
--------------------------------------------------------------------------------
# t+ |5 A7 H3 Z. s. x% W
! {6 L( f; w& v0 W--------------------------------------------------------------------------------
3 C$ e7 U% ]/ _
3 R) B" b# v1 y! u( ]( s4.小型电脑智慧介面(SCSI)周边的启动参数
u! y/ i9 z2 _% r/ z* }% @0 G2 ^1 l
, K& W( S# S# m
这一节包含用来传递有关小型电脑智慧介面(SCSI)卡(hostadapters)及SCSI设备之资讯的启动参数说明。
% V7 v% o- `# \; F& A- `' E, Y
4 f2 l3 t6 c }) \0 e
; W4 _7 Y5 G- V' ]0 |% P X1 f4.1中层驱动程式的参数
% N; k1 V; d2 U, \8 h1 f
; {2 A/ w' d! ^9 y: L7 P6 I
中层驱动程式处理像磁碟,光碟及磁带等等而不深入介面卡的特性。
6 {7 h9 A# ~# U* H
! C$ e4 g9 N' x! r* ^5 x: P* ~* ~7 w, M1 s2 t1 {" \
最大侦测
逻辑号码(LUN)数(`max_scsi_luns=')
y: z. C4 \5 K
4 W& ?. B7 W, H, w每个SCSI设备本身里面都可以包含一个‘子设备’号码。最常见的例子是那些一次可以放好几张片子的新型SCSI光碟机。每张光碟由指定之设备的‘逻辑号码(LogicalUnitNumber
' o& [4 y0 G+ B; e) s0 K2 H
% ?- S0 R* Q* K$ i" f1 UUN)’定址。但大部份的设备,像硬碟机,磁带机等等都是单一个的设备,而逻辑号码设为零。
# W: }& U( e. `/ x1 u' W$ R[color=#FFFFFF']
* x" {7 w; r9 U& x% M
, a7 D# Y+ z, T! S& B' U! t* U' A# B; p; x6 D$ I) r9 Z( w, h
只有一个逻辑编号的设备若轫体写得不好就会出问题。某些设计不良的SCSI设备(旧的以及就那麽巧被你碰上的新设备)无法接受不为零的逻辑编号侦测。它们会挂在那,而且有可能把整个SCSI汇流排(bus)都带著一起陪葬。
& o6 `4 a3 _' n) Z8 {4 [- T& _
+ q5 O: M; C; D8 p% P) [8 _较新的核心有一个配置选项可以让你设定所要侦测之最大逻辑编号。预设只侦测到逻辑编号零以必免上述问题。
& I! L; } W, }& e0 y
4 B7 E% t$ m# L t在启动时指定要侦测的逻辑号码可以键入`max_scsi_luns=n'作为启动参数,其中n是介於壹到捌的数字。