📄 bootprompt-howto.txt
字号:
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=<offset>' 指令。 核心不能够放在压缩过的记忆体磁碟之档案 系统映像里, 因为它得从最开始的第零磁区开始放置, 如此基本输出入系 统(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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -