<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
<TITLE>The Linux BootPrompt-HowTo 中译版: 一般无关设备特性的启动参数</TITLE>
<LINK HREF="BootPrompt-HOWTO-4.html" REL=next>
<LINK HREF="BootPrompt-HOWTO-2.html" REL=previous>
<LINK HREF="BootPrompt-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="BootPrompt-HOWTO-4.html">Next</A>
<A HREF="BootPrompt-HOWTO-2.html">Previous</A>
<A HREF="BootPrompt-HOWTO.html#toc3">Contents</A>
<HR>
<H2><A NAME="general"></A> <A NAME="s3">3. 一般无关设备特性的启动参数</A></H2>
<P>
<P>有些启动参数并非与任何设备或周边相关。
它们乃是与某个核心内部参数相关,像是记忆体的处理,记忆体磁碟的处理,
根档案系统的处理以及其它东东。
<P>
<H2><A NAME="ss3.1">3.1 根档案系统选项</A>
</H2>
<P>
<P>下列选项皆与核心如何选择及处理根档案系统有关。
<P>
<H3>`root=' 参数</H3>
<P>
<P>此参数告诉核心启动时以那个设备作为根档案系统使用。
此设定的预设值为建造(bulid)核心时系统的根档案系统设备。
例如,如果核心是在一个以 `/dev/hda1' 作为根档案系统分割区的系统上建造的,
那麽预设的根档案系统设备就是 `dev/hda1'。
要变更此预设值,并选择第二台软碟机作为根档案系统设备的话,
可以使用 `root=/dev/fd1'。
<P>可用的根档案系统设备为下列设备其中之一:
<P>(1) /dev/hdaN to /dev/hddN,
这是 ST-506 相容磁碟 `a to d' 上的第 N 个分割区。
<P>(2) /dev/sdaN to /dev/sdeN,
这是 SCSI 相容磁碟 `a to e' 上的第 N 个分割区。
<P>(3) /dev/sdaN to /dev/xdbN,
这是 XT 相容磁碟 `a to b' 上的第 N 个分割区。
<P>(4) /dev/fdN,
这是软碟机号码 N。
N=0 为 DOS 下的 `A:' 磁碟机,而 N=1 则为 `B:'。
<P>(5) /dev/nfs,
这并非真的是个设备,
而是一个告诉核心经由网路取得根档案系统的旗标。
<P>上述磁碟设备的另一种数字格式,
更为笨拙且更没有可携性的主要/次要(major/minor) 号码也能接受。
(例如 /dev/sda3 的主要号码为 8,次要号码为 3,
所以你可以使用 <CODE>root=0x803</CODE> 作为另一种指定方式。)
<P>这是少数几个在核心中存有预设值,
所以可以用 <CODE>rdev</CODE> 公用程式改变的核心启动参数。
<P>
<H3>`ro' 参数</H3>
<P>
<P>当核心启动时它需要有个根档案系统以读取一些基本的东西。
这就是挂在根目录的根档案系统。
然而,如果根档案系统以可以写入的方式挂上来的话,
你就无法在有档案写到一半的情况下确实地检查档案系统的完整性。
此 `ro' 选项告诉核心以唯读的方式挂入根档案系统,
如此任何档案系统一致性检查程式(fsck)
在执行检查时都可以安全地假设没有档案写到一半的情况。
没有任何程式或程序可以写入此档案系统直到它重新以可读写的方式挂入为止。
<P>这是少数几个在核心中存有预设值,
所以可以用 <CODE>rdev</CODE> 公用程式改变的核心启动参数。
<P>
<H3>`rw' 参数</H3>
<P>
<P>这与上一个完全相反,它告诉核心以可读取/写入的方式挂入根档案系统。
无论如何,预设是以可读写方式挂入根档案系统。
不要在以可读写方式挂入的档案系统上执行任何的 `fsck' 程式。
<P>此参数使用的值与上一个储存於核心映像的参数相同,可经由 <CODE>rdev</CODE> 存取。
<P>
<H2><A NAME="ss3.2">3.2 与记忆体磁碟(RAM Disk)管理有关的选项</A>
</H2>
<P>
<P>下列选项皆与核心如何处理记忆体磁碟设备有关,
这种虚拟磁碟设备通常在安装阶段启动机器时使用,
或配合使用模组化驱动程式以存取根档案系统的机器上。
<P>
<H3>`ramdisk_start=' 参数</H3>
<P>
<P>为了使核心映像能够与压缩的记忆体磁碟映像放在一张软碟内,
所以加入这个 `ramdisk_start=<offset>' 指令。
核心不能够放在压缩过的记忆体磁碟之档案系统映像里,
因为它得从最开始的第零磁区开始放置,
如此基本输出入系统(BIOS)才能载入启动磁区而核心也才能够开始启动执行。
<P>注意:如果你使用的是没有压缩的记忆体磁碟映像,
那麽核心可以是要载入记忆体磁碟之档案系统映像的一部份,
且该软碟可以由 LILO 启动,两者也可以如同压缩之映像般为分开的两部份。
<P>如果你使用启动/根(boot/root)两张磁片的方式(核心一张,
记忆体磁碟映像放第二张)那麽记忆体磁碟会由第零磁区开始,
并使用零作为偏移值(offset)。因为这是预设值,你根本不必真的去使用这个指令。
<P>
<H3>`load_ramdisk=' 参数</H3>
<P>
<P>此参数告诉核心是否要载入一份记忆体磁碟映像。
`load_ramdisk=1' 指定核心将软碟载入至记忆体磁碟中。
预设值为零,表示核心不应该试著去载入记忆体磁碟。
<P>请参阅 <CODE>linux/Documentation/ramdisk.txt</CODE>
档案中新的启动参数与如何使用它们的完整叙述。
它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
<P>
<H3>`prompt_ramdisk=' 参数</H3>
<P>
<P>此参数告诉核心是否要给你个提示要求插入含记忆体磁碟映像的磁片。
<P>在只用一张软碟的配置下记忆体磁碟映像与刚刚载入/启动的核心在相同的软碟上故不需要提示。
这种情况可以用 `prompt_ramdisk=0'。
在使用两张软碟的配置下你需要有个抽换磁片的机会,故可以使用
`prompt_ramdisk=1'。
因为这是预设值,所以不必真的去指定它。
(轶闻:从前人们习惯使用 `vga=ask' 这个
LILO 选项来暂时停止启动程序以取得抽换启动磁片及根磁片的机会。)
<P>请参阅 <CODE>linux/Documentation/ramdisk.txt</CODE>
档案中新的启动参数与如何使用它们的完整叙述。
它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
<P>
<H3>`ramdisk_size=' 参数</H3>
<P>
<P>因为记忆体磁碟实际上会依需求动态成长,
所以其大小有个上限加以限制以免它用光所有可用的记忆体而坏事。
预设值 4096(i.e. 4MB) 应该足够满足大部份的需求。
你可以用这个启动参数变更此预设值。
<P>请参阅 <CODE>linux/Documentation/ramdisk.txt</CODE>
档案中新的启动参数与如何使用它们的完整叙述。
它同时也说明如何藉由 `rdev' 来设定及储存这些个参数。
<P>
<H3>`ramdisk=' 参数(过气了)</H3>
<P>
<P>(注意:这个参数是旧的,除了 v1.3.47 版以及更旧的的核心之外不应该使用。
应该使用的是前面所述的指令)
<P>这个参数以千位元组(kB)为单位指定记忆体磁碟设备的大小。
例如,如果想要把位於一张 1.44MB 软碟上的根档案系统载入至记忆体磁碟设备,
可以用:
<P>
<HR>
<PRE>
ramdisk=1440
</PRE>
<HR>
<P>这是少数几个在核心中存有预设值,所以可以用 <CODE>rdev</CODE>
公用程式改变的核心启动参数。
<P>
<H3>`noinitrd'(启始记忆体磁碟)参数</H3>
<P>
<P>v2.x 及更新的核心有个特性,根档案系统最初是记忆体磁碟,
然後核心执行记忆体映像上的 <CODE>/linuxrc</CODE>。
这个特性典型系用於载入某些挂入真正的根档案系统所需要的模组
(例如,载入储存於记忆体磁碟映像里的 SCSI 驱动程式,
然後挂入在某 SCSI 磁碟里真正的根档案系统。)
<P>实际的 `noinitrd' 参数决定核心启动之後如何处理 initrd 资料。
如果有指定,它可以经由 <CODE>/dev/initrd</CODE> 存取,
可以在记忆体释放回系统之前读取一次。
有关初始之记忆体磁碟的完整细节与使用请参阅
<CODE>linux/Documentation/initrd.txt</CODE>。
此外,最新版的 <CODE>LILO</CODE> 及 <CODE>LOADLIN</CODE> 应该会包含其它有用的资讯。
<P>
<H2><A NAME="ss3.3">3.3 与记忆体管理有关的参数</A>
</H2>
<P>
<P>下列参数会改变 linux 侦测或处理系统实体及虚拟记忆体的方式。
<P>
<H3>`mem=' 参数</H3>
<P>
<P> 这个参数有两个目的:原先的目的是指定机器所安装的记忆体数量
(如果你想限制 linux 能使用的记忆体数量可以指定一个较小的值)。
第二个(很少用)目的则是指定 <CODE>mem=nopentium</CODE>
以便告诉 linux 核心不要使用 4MB 分页表(page table)这个效能特性。
<P>在个人电脑规格中,
原先定义回传安装记忆体数量的基本输出入呼叫被设计成最多只能回报最多 64MB。
(是的,另一个缺乏远见的设计,就像 1024 磁簇的磁碟限制...哎。)
Linux 在启动时会使用此基本输出入呼叫以确定安装的记忆体数量。
如果你安装的记忆体超过 64MB,可以用这个启动参数告诉 Linux 你有多少记忆体。
下面引用 Linus 对 <CODE>mem=</CODE> 参数的说明。
<P>”核心会接受任何你所给予的 `mem=xx' 参数,而如果它发现你骗它,
那它迟早一定会当的很难看。
这个参数指示可以定址的最高记忆体位址,所以,
例如 `mem=0x1000000' 表示你有 16MB 的记忆体。
对拥有 96MB 的机器而言此值为 `mem=0x6000000'。
<P>注意注意注意:
<P>某些机器可能会使用最上层(top)的记忆体作为基本输出入系统的快取等等一类用途,
所以你可能并非实际拥有 96MB 的可定址空间。反之亦然:
<P>某些晶片组会将基本输出入系统涵盖的实体记忆体区域对应(map)到最上层记忆体後面,
所以记忆体最上层实际上可能是 96MB + 384kB。
如果你告诉 linux
的记忆体比它实际上拥有的还多,那就会出状况:也许不会立刻出事,
但最後一定会发生。”
<P>注意,此参数并非一定得是十六进位型态,
而且可以使用 `k' 与 `M'(大小写无关)字尾分别指定千位元组以及百万位元组。
(`k' 会把你给的值旋转(shift) 10 位元,而 `M' 会旋转 20 位元。)
上述警告依然没变,沿上例,
一台 96MB 的机器也许可以设 <CODE>mem=97920k</CODE> 而无法使用 <CODE>mem=98304k</CODE>
或 <CODE>mem=96M</CODE>。
<P>
<H3>`swap=' 参数</H3>
<P>
<P>这允许使用者调整某些与磁碟置换(swapping)有关的虚拟记忆体参数(VM)。
它接受下列八个参数:
<P>
<HR>
<PRE>
MAX_PAGE_AGE
PAGE_ADVANCE