| 中国 |
|
|
|
![]() |
管理系统和工作组: HP-UX 系统管理员指南 > 第 3 章 配置系统重新配置内核(HP-UX 11i v2) |
|
随着 HP-UX 各个发行版的不断推出,系统管理员更改 HP-UX 内核配置的能力逐渐增强,且不易发生昂贵费时的故障。动态内核可调参数和动态可加载内核模块等新功能可执行关键的维护任务,不必以应用程序可用性为代价。 有了这些新功能,需要一种更简单更全面的机制以管理内核配置。HP-UX 11i v2 引进了一组新的内核配置管理命令和一个新的基于 Web 的图形界面,从而提供了统一的内核配置管理。本节讲述了这些新工具的使用。该信息适用于 HP-UX 系统管理员。 这组新的内核配置工具为系统管理员提供了几个关键功能:
抽象地讲,内核配置是管理员所有选项和设置的集合,这些选项和设置用于确定 HP-UX 内核行为和功能。在此实现中,此集合包括:
从物理上讲,内核配置是一个位于 /stand 下的目录,其中包括实现特定行为所需的文件。此目录包括:
除运行中的内核的配置之外,还可保存任意数目的 HP-UX 系统内核配置,这只受 /stand 目录中磁盘空间的限制。 有三种用于管理内核配置的主要命令:kconfig、kcmodule 和 kctune。 kconfig 命令用于管理整个内核配置。它可用于对配置进行保存、加载、复制、重命名、删除、导出和导入等操作。此命令还可列出现有的保存配置并给出与之相关的详细信息。有关详细信息,请参阅“通过 kconfig 管理保存的配置”或 kconfig (1M) 联机帮助页。 kcmodule 命令用于管理内核模块。内核模块可以是设备驱动程序、内核子系统或其他内核代码实体。每个模块可以是未使用的、静态绑定至主内核可执行程序的或是动态加载的。kcmodule 命令可显示或更改当前运行的配置中或任何保存的配置中任一模块的状态。有关详细信息,请参阅“通过 kcmodule 管理内核模块”或 kcmodule (1M) 联机帮助页。 kctune 命令用于管理内核可调参数。这些参数是控制内核行为的变量。它们有多种用途,通常包括控制系统资源的分配和内核性能的调整。kctune 命令可显示或更改当前运行的配置中或任何保存的配置中任一可调参数的值。有关详细信息,请参阅“通过 kctune 管理内核可调参数”或 kctune (1M) 联机帮助页。 除这三个主要命令外,还有两个其他内核配置命令。kcpath 命令可输出关于当前运行的内核的位置信息;它用于需要此信息的脚本和应用程序(有关详细信息,请参阅 kcpath (1M) 联机帮助页)。kclog 命令可搜索内核配置日志文件;有关详细信息,请参阅“内核配置日志文件”或 kclog (1M) 联机帮助页。 最后,使用过早期 HP-UX 版本中的 mk_kernel、kmpath 和 kmtune 命令的用户应注意这些命令仍然可用。它们已作为调用上述命令的小 shell 脚本包括在内。这些旧命令已过时,会从将来的版本中删除。请参阅 mk_kernel (1M)、kmpath (1M) 和 kmtune (1M)。 您可以配置和管理内核,而不必记住内核配置命令的语法或模块及可调参数的精确名称,方法是使用 kcweb 工具,它是一种便于用户使用的基于 Web 的 HP-UX 内核配置工具,可配置和管理系统的内核。kcweb 具有下列功能:
可使用下列方法之一访问 kcweb:
缺省情况下,kcweb 命令调用 Mozilla web 浏览器。如果要使用其他任何浏览器调用 kcweb,请将 BROWSER 环境变量设置为要使用的浏览器的路径名。有关详细信息,请参阅 kcweb (1M) 联机帮助页。 下面的章节中介绍了一些特殊内核配置操作和内核配置命令的特殊用法。 通过在使用率超过预设阈值时发送报警,可以监视一些内核资源的使用率。使用 kcalarm 命令或 kcweb 工具可配置和检查报警。使用 kcusage 命令或 kcweb 工具可检查资源使用率。有关详细信息,请参阅“监视内核资源使用率”。 HP-UX 早期版本的管理员可能惯于使用文本文件(“系统文件”或“dfiles”)来指定和更改内核配置。这些文件的格式已得到增强[4],可以支持内核配置的新功能,同时还为配置操作保留了文本文件的可用性(当在多个系统上使用同一配置时,这些文件尤其有用,因为它们可方便地在系统之间移动)。系统文件的用法在“使用系统文件管理配置”中进行了介绍。 一些不常用的配置设置只能使用系统文件进行控制。其中包括主交换设备的设置、初始转储设备的设置和特定设备与特定设备驱动程序模块间的明确绑定。有关详细信息,请参阅“管理设备绑定”。 使用内核配置命令进行的所有内核配置更改均记录在文件 /var/adm/kc.log 中。有关此日志文件的详细信息,请参阅“内核配置日志文件”、kconfig (5) 和 kclog (1M) 联机帮助页。 主要内核配置命令支持特殊的输出格式,旨在用于需要分析命令输出的脚本和应用程序。此类脚本和应用程序必须使用这种特殊的输出格式,这是因为对于这些命令的其他输出格式,HP 并不保证版本之间的兼容性。有关详细信息,请参阅“分析命令输出”和 kconfig (5) 联机帮助页。 错误的配置更改、硬件故障或软件缺陷均可能导致不理想甚至是无法引导的内核配置。现有一些机制可防止出现这种问题,并在问题出现时帮助恢复。有关详细信息,请参阅“从错误中恢复”。 由于各个内核配置命令是统一整体的一部分,只要可能它们便会共享行为。共享行为包括命令行选项、输出格式、退出状态代码、安全限制以及更改的持久性。 表 3-12 “内核配置命令共享的选项” 列出内核配置命令共享的选项。 表 3-12 内核配置命令共享的选项
检索信息时,主内核配置命令以三种基本的输出格式生成输出结果:表格、详细和可分析。 缺省情况下,命令生成简短表格格式。这种格式在每一行说明一项。只包含最常用的信息,以使大多数终端能够在一行内显示合适的输出。 使用 -v(详细)选项,命令将生成详细的输出格式。此种格式为所说明的每个项目提供所有可用信息,需要显示几行。在输出中以空白行分隔各个项目。 使用 -P(分析)选项,命令生成的输出格式可用于脚本或应用程序以进行分析。此格式在“分析命令输出”中进行了介绍。脚本和应用程序必须分析此种输出格式,这是因为仅当使用 -P 选项时,HP 才支持输出格式的版本间的兼容性。 对于错误、警告、说明和进度消息,所有内核配置命令均使用一种常见的格式。这与 Software Distributor 打包时使用的格式相同,因此大多数管理员已经对此非常熟悉。
所有内核配置命令均以表 3-13 “退出状态代码” 中的状态代码之一退出。
缺省情况下,内核配置工具将配置更改应用到当前运行的系统中,可立即导致行为的更改。通过向任何命令指定 -h(保留)选项,系统管理员可改写此缺省设置。此选项会保留更改,直到系统重新引导。HP 建议仅在将很快重新引导系统时使用此选项。如果更改后几个月还没有重新引导系统,管理员可能会忘记这个请求,而产生意外的不良后果。 一些配置更改必须重新引导才能应用。这些更改会被保留至系统重新引导,即使没有指定 -h 选项也是如此。这种情况下,会显示警告消息。 如果在一次调用内核配置命令时请求了多个配置更改,若这些更改中的任一个需要重新引导,那么请求的所有更改均会保留至系统重新引导。特别地,如果使用 kconfig -l(加载)命令加载某个保存的内核配置,且此配置必须重新引导才能使用,那么正在运行的系统状态不会更改,指定的内核配置会在下次引导时使用。 可以在 kcmodule、kctune 或 kconfig 命令中使用 -D(差异)选项列出保留至下次引导时的更改。有关每个命令的详细信息,请参阅下列各节。 在下列情况下会丢弃保留至下次引导的更改:使用 kconfig -i(导入)、kconfig -l(加载)或 kconfig -n(下次引导)替换当前运行的配置时;使用 kconfig -H(取消保留)明确将其丢弃时;进行其他更改将其改写时。例如,如果运行
下次引导时 nproc 将为 6000。将丢弃更改为 5000 的设置。在这种情况下会显示警告消息。 系统重新引导时会保留对当前运行的系统所做的更改。它们将保持有效,直到被更改。 kcmodule 命令用于查询和更改当前运行的配置中或保存的配置中内核模块的状态。HP-UX 内核由很多模块构建,每个模块均包括设备驱动程序、内核子系统和其他一些内核代码实体。典型的内核具有 200-300 个模块。 不带任何选项运行 kcmodule 时,它会显示系统上运行的模块、它们的当前状态和下次引导时的状态。在典型的系统上,可以看到很多模块处于静态;一些模块处于未使用状态(通常是系统上尚未安装的硬件的设备驱动程序);还有少数模块处于加载状态(下文对这些状态进行了介绍)。 如果使用 -c(配置)选项,kcmodule 将显示已保存配置(而不是当前运行的系统)中的模块信息。 kcmodule 的输出结果随使用的选项不同而异。要控制哪些模块将被列出,可使用 -a(全部)、-D(差异)和(或)-S(设置)选项。-a 选项可向输出中添加需要的模块(通常是省略的)。-D 选项将输出限制为只显示那些下次引导时的状态与当前状态不同的模块。-S 选项将输出限制为只显示那些明确设置了状态的模块(即,忽略需要的模块、未使用的模块和为满足相关性而添加的模块)。还可以通过在命令行上列出模块名称来限制输出。 要控制输出格式,可使用 -d(说明)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:
-d 选项可为每个模块添加说明。
-v 选项可在多行中给出每个模块的详细信息:
-P 选项专供脚本或程序使用,可完全控制要输出哪些信息:
有关 -P(分析)选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”或 kconfig (5) 联机帮助页。 通过查看上述示例的输出结果,可以看到每个模块均具有名称和文本说明。每个模块还具有一个版本,标准情况下为 [3E36E5FA] 或 0.1.0,这取决于模块的存在时间。较旧的模块使用第一种形式,较新的模块使用第二种形式。 一个内核配置只能使用特定模块的一个版本。但是可以列出多个版本,例如,在当前运行的系统使用的模块版本与下次引导时将要使用的模块版本不同时。简短列表中通常省略版本号,但如果模块具有多个版本,版本号便会列出。 在当前运行的配置中,每个内核模块均具有一个状态,用以说明模块的使用方式。可能的状态有:
当 kcmodule 提供关于当前运行的系统的信息时,若有配置更改保留至下次引导,kcmodule 会将当前状态和下次引导时的状态全部列出。对于下次引导,将使用相同的状态,但有补充的含义:
当 kcmodule 提供关于已保存配置的信息时,使用相同的状态。 每个模块状态旁边是“cause”,用以说明模块为何处于(或将处于)该状态。原因有:
不同的模块可能支持不同的状态。几乎所有模块都可处于 static 状态,但只有少数模块支持 loaded 或 auto 状态。许多模块都可处于 unused 状态,但标记为 required 的模块不能处于此状态。输出结果中的“Capable”行显示了模块所支持的状态(提示:要确认某个模块是否为必需模块,可查看“Capable”行中是否显示 unused。如果显示此状态,则该模块就不是必需模块)。 模块之间常常具有相关性。例如,通常只能在配置了驱动程序支持的模块时,才能将设备驱动程序配置至内核。在输出结果中,此类相关性显示在“Depends On”行中。模块可以依赖于其他特定模块,通过名称和版本可指定此相关性。模块还可以依赖于必须由其他一些模块提供的接口,而未明确说明哪些模块提供此接口。支持此类接口的模块在输出中具有“Exports”行,以列出其导出的接口。 要更改模块状态,可在 kcmodule 命令行上指定模块状态(另请参阅“使用系统文件管理配置”)。例如,要加载名为 cdfs 的 CD 文件系统模块:
实际上,loaded 是开发人员为 cdfs 选择的 best 状态,因此它等同于:
要卸载它:
有关详细信息,请参阅 kcmodule (1M) 联机帮助页。 使用上述示例中的命令更改模块状态时,如果可能,此更改会立即应用到当前运行的系统中。有时此更改则不能立即生效;例如,如果挂接了 CD 文件系统,这种情况下便无法卸载 cdfs。这时,kcmodule 会保留此更改并在下次引导时应用它。将模块移入或移出 static 状态的更改不能立即应用,总是要保留至下次引导时。如果在 kcmodule 命令行上进行的任一更改需要保留至下次引导,则所有更改均会保留至下次引导。 将模块移入或移出 static 状态时,kcmodule 命令会运行很长时间。这是因为此类更改需要重新链接内核可执行程序。如果要进行多个此类更改,最好在同一个 kcmodule 命令行将其全部列出,或在系统文件中进行更改,然后导入它(请参阅“使用系统文件管理配置”)。这些方法均可保证内核可执行程序只重新链接一次。 有时可能需要强制将某一更改保留至下次引导,而不立即应用它。这种情况下,可以在 kcmodule 中使用 -h(保留)选项以强制此行为。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改几个月后仍没有发生下次引导,系统管理员可能会忘记即将发生的更改效果,从而得到意外的不良结果。 要对保存的内核配置进行更改,可使用 -c(配置)选项。保存的配置会立即进行这些更改,但是在加载或引导保存的配置之前,这些更改不会影响正在运行的系统。有关详细信息,请参阅“通过 kconfig 管理保存的配置”。 更改模块状态时,kcmodule 支持 -B 和 -K 选项以指定备份行为,还支持 -C 选项以指定日志文件注释。有关详细信息,请参阅“从错误中恢复”和“内核配置日志文件”。 kcweb 可用于查询和更改当前运行的配置中内核模块的状态。使用 kcweb,可以执行下列操作:
可在 kcweb 中从导航栏选择模块菜单项来查看模块窗格。 要获得有关特定模块的详细信息,请执行下列两个步骤:
如果选择一个模块,屏幕上将显示该模块的详细信息。 模块详细信息窗格包含下列信息: 表 3-14 模块详细信息字段
要更改模块状态,请执行下列步骤:
将显示 modify module state 页。
modify module state 页包含下列字段: 表 3-15 kcweb 修改模块状态字段
kctune 命令用于查询和更改当前运行的配置中或保存的配置中内核可调参数(“可调参数”)的值。可调参数是用于控制 HP-UX 内核行为的变量。可调参数可用于执行各种不同的任务:一些控制资源分配;一些控制安全策略;一些启用可选内核行为;等等。典型的内核中有 150 至 200 个可调参数。请参阅 kctune (1M) 联机帮助页。 系统管理员可根据选择创建自己的“用户定义的”可调参数。这些可调参数不会直接影响系统的运行,但可用于计算其他可调参数的值。例如,管理员可以选择创建一个 num_databases 可调参数,然后根据其值设置几个内核可调参数。以后对 num_databases 值进行的更改会导致所有相关内核可调参数的值也发生更改。 不带任何选项运行 kctune 时,它会显示系统中与内核模块相关的可调参数(和所有用户定义的可调参数)、它们的当前值以及用于计算其值的表达式。如果那些值具有保留至下次引导的更改,也会显示这些更改。在典型系统上,大多数可调参数的表达式是“Default”,这意味着管理员允许系统选择可调参数的值。 如果使用 -c(配置)选项,kctune 将显示已保存配置(而不是当前运行的系统)中的可调参数信息。 kctune 的输出结果随使用的选项不同而异。要控制哪些可调参数将被列出,可使用 -D(差异)或 -S(设置)选项。-D 选项将输出限制为只显示下次引导时其值与当前值不同的可调参数。-S 选项将输出限制为只显示那些设置为非缺省值的可调参数。还可以通过在命令行上列出可调参数名称来限制输出。 要控制输出格式,可使用 -d(说明)、-g(分组)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:
-d 选项可为每个可调参数添加说明:
-g 选项可添加定义此可调参数的模块的名称,并将输出结果按模块名称排序。这能够在输出结果中将相关的可调参数分为一组。
-v 选项可在多行中给出每个可调参数的详细信息: Tunable acctresume -P 选项专供脚本或程序使用,可完全控制要输出哪些信息:
有关 -P 选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”或 kconfig (5) 联机帮助页。 查看上述示例的输出,可以看到每个可调参数均具有名称和文本说明。每个可调参数都与一个内核模块相关联,并在详细输出(如果指定了 -g 选项,则为表格式输出)中列出了此模块的名称。只有在可调参数与系统上安装的(或用户定义的)某个模块相关联时,才可以看到或更改此可调参数。此模块未必在使用中。 为当前运行的系统显示可调参数信息时,kctune 会包括当前可调参数值和用于计算该值的表达式。如果可调参数值的更改保留至下次引导,还会显示下次引导时的值和表达式。详细列表还可显示系统上次引导时可调参数的值。为保存的配置显示可调参数信息时,kctune 只显示当前值。 可调参数值为可计算的整数表达式,它可引用其他可调参数值(不允许循环引用)。可调参数的值可以是 4200、0x400、12*1024 或 4*nproc+20。值和表达式使用 C 编程语言的语法。因此,数字可以十进制 (256)、八进制 (01000) 或十六进制 (0x100) 表示。表达式可以使用下列操作符和符号。
任何可调参数表达式中均不允许有空格。为了向后兼容,表达式中的可调参数名称可以全部为大写形式,但不建议使用此写法,在将来的版本中会删除对它的支持。 所有内核可调参数均具有开发人员选择的缺省值,详细输出结果可显示其缺省值。对于某些可调参数,缺省值是固定的,从不更改。而对于另外一些可调参数,系统将在引导时选择新的缺省值。还有一些可调参数可自动调整,即系统运行时缺省值定期更改,以适应变化的系统资源和需求。当可调参数设置为缺省值时,其表达式为 Default,如上述示例所示。在这种情况下,系统可自由选择其认为的最佳值,并根据需要进行更改。HP 建议保留可调参数设置的缺省值,除非已知缺省值很不合适。 注意:将可调参数值设置为 Default 与将其明确地设置为 kctune 报告的缺省值并不是一回事。使用上述示例,如果将 nproc 设置为 4200,其值会保持 4200,直到更改它。但是,如果将 nproc 设置为 Default,其值会随 HP 对 nproc 缺省值的更改而更新。 某些可调参数值是有限制的,详细输出结果中会显示此限制。有时是最小和(或)最大值限制,如上述 nproc 所示。有时在可调参数之间存在着固定关系(例如,acctresume 必须大于 acctsuspend)或具有允许值的限制(例如,dnlc_hash_locks 必须为两值之一)。每次更改可调参数值时,都会强制实行这些限制。还有 kctune 没有显示的限制,这些限制根据系统当前状态而不同,并随时间更改(例如,nproc 不能设置为小于当前运行进程数目的值)。只有在更改当前运行的系统时,才强制实行这些限制,当将更改保留至下次引导时或更改保存的配置时,则不强制实行限制。 一些可调参数具有关于何时可更改其值的限制。这些限制在 kctune 输出结果中已注明。其值可以立即更改的可调参数标记为 Immed。系统可自动调整其值的可调参数标记为 auto。没有任何标记的可调参数只能在重新引导时更改。 所有 HP-UX 可调参数均具有联机帮助页。有关其行为、许用值和可调参数负面影响的详细信息,请参阅可调参数的联机帮助页,可在联机手册的第 5 节中找到这些信息。内核可调参数的概述可在《《Tunable Kernel Parameters》》文档中找到,该文档位于 http://docs.hp.com。 要更改可调参数值,可在 kctune 命令行上指定可调参数值(请参阅“使用系统文件管理配置”)。例如,要将 nproc 设置为 4300,请使用以下命令:
要将可调参数设置为 Default,可采用下列任何一种方式来赋值(将用户定义的可调参数设置为 Default 会将其删除)。
可以根据表达式赋值,如上所述。请注意,赋值时可能需要使用引号以防止 shell 解释它。
要创建用户定义的可调参数,在为可调参数赋值时需使用 -u(用户定义)选项。要更改现有用户定义的可调参数的值,不需要使用 -u 选项。 使用 += 符号,可以增加可调参数的值(在此例中,增加 100):
使用 >= 符号可以确保可调参数的最小值。以下命令:
会将 nproc 设置为 5000(如果其当前值小于 5000)。如果当前值已为 5000 或更高,它会保持不变。请注意,应在赋值时使用引号以防止 shell 解释它。 有关详细信息,请参阅 kctune (1M) 联机帮助页。 使用上述示例中的命令更改可调参数值时,如果可能,此更改会立即应用到当前运行的系统中。有时此更改则不能立即生效;例如,当试图将某些资源的最大值减少到低于当前使用值时。而且,还有一些可调参数只能在重新引导之后才能应用更改。这种情况下,kctune 会保留此更改并在下次引导时应用它。如果在 kctune 命令行上进行的任一更改需要保留至下次引导,则所有更改均会保留至下次引导。 有时可能需要强制将某一更改保留至下次引导,而不立即应用它。这种情况下,可在 kctune 中使用 -h(保留)选项以强制执行此行为。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改几个月后仍没有发生下次引导,系统管理员可能会忘记即将发生的更改效果,从而得到意外的不良结果。 要对保存的内核配置进行更改,可使用 -c(配置)选项。保存的配置会立即进行这些更改,但是在加载或引导保存的配置之前,这些更改不会影响正在运行的系统。有关详细信息,请参阅“通过 kconfig 管理保存的配置”。 更改可调参数值时,kctune 支持 -B 和 -K 选项以指定备份行为,还支持 -C 选项以指定日志文件注释。有关详细信息,请参阅“从错误中恢复”和“内核配置日志文件”。 kcweb 可用于查询和更改当前运行的配置中内核可调参数(“可调参数”)的值。使用 kcweb,可以执行下列操作:
可在 kcweb 中从导航栏选择可调参数菜单项,来查看可调参数窗格。 要获得有关特定可调参数的详细信息,可以执行下列两个步骤:
如果选择一个可调参数,将会显示可调参数详细信息窗格(图 3-11 “kcweb 可调参数详细信息”)。 可调参数详细信息窗格包含下列信息: 表 3-16 kcweb 可调参数详细信息
要更改可调参数值,请执行下列步骤:
系统将显示“modify tunable”页(图 3-12 “kcweb 修改可调参数”): modify tunable 页包含下列字段: 表 3-17 kcweb 可调参数详细信息字段
有些可调参数代表可以监视其使用率的内核资源。对于这些可调参数,可以设置报警以便在相应的内核资源使用率超出指定的阈值时发出通知。 要使用 kcweb 获得有关特定报警的详细信息,请执行下列两个步骤:
在 alarms 页中可以执行下列操作:
如果选择一个报警,将显示报警详细信息窗格。 报警详细信息窗格包含下列信息: 表 3-18 kcweb 报警详细信息字段
要为可调参数更改报警值,请执行下列步骤:
系统将显示 modify alarm 页: modify alarm 页包含下列字段: 表 3-19 kcweb 修改报警字段
kcalarm 命令可用于添加、删除或列出所选的内核可调参数报警,并可以打开和关闭内核可调参数监视功能。 使用 kcalarm 可以管理所选的内核可调参数报警和监视程序;这些报警和监视程序是通过 kcmond 守护程序实现的。用户可创建、修改、删除和列出所选的内核可调参数报警。当内核可调参数超出当前指定阈值一定的百分比时,报警将向各种通知目标发送通知。监视是采集历史可调参数数据的进程。此功能打开时,将采集关于支持的可调参数使用率的历史数据。kcusage 命令使用这些数据为支持的内核可调参数生成使用率表(包含主要使用者)。还可在 kcweb 工具中将使用率数据图形化。安装 kcweb 工具后,缺省情况下,监视功能处于打开状态。有关详细信息,请参阅 kcalarm (1M)、kcmond (1M) 和 kcusage (1M) 联机帮助页。 kconfig 命令有两个选项,当处理那些要保留至下次引导的当前运行内核配置更改时,这两个选项很有用。配置更改在需要时保留至下次引导,可使用 kcmodule 或 kctune 的 -h(保留)选项或者 kconfig 的 -n(下次引导)选项来实现。如果当前运行的系统不能应用配置更改,它们也会保留至下次引导。 要获得保留至下次引导的更改的列表,请运行 kconfig -D(差异)。这的确是一种简便方法,可替代运行 kcmodule -D 和 kctune -D。同样,要获得那些设置为非缺省值的配置设置的列表,请运行 kconfig -S(设置)。这是一种简便的方法,可替代运行 kcmodule -S 和 kctune -S。[5] 如果不想在下次引导时应用这些更改,可以运行 kconfig -H(取消保留)。这样会丢弃所有保留至下次引导的更改。 有关保留至下次引导的更改的详细信息,请参阅“更改的持久性”。 如果您有一个满足需要的 HP-UX 内核配置,则可能希望保存一个副本以防止不经意的更改。或者,您可能希望拥有多个内核配置,以便能方便地在各配置间切换。HP-UX 允许保存任意多的内核配置(受 /stand 中可用磁盘空间的限制),并允许随意修改和使用它们。 不带任何选项运行 kconfig 命令,会显示系统上保存的配置。始终存在一个名为 backup 的保存配置,它是系统自动维护的;同时会列出系统上所有其他的保存配置(有关 backup 配置的详细信息,请参阅“从错误中恢复”)。 kconfig 的输出结果随使用的选项不同而异。可以在命令行上列出特定配置,以限制输出结果仅显示这些配置。 要控制输出格式,可使用 -a(全部)、-v(详细)或 -P(分析)选项。如果不使用这些选项,输出结果将与下面类似:
-v 选项可在多行中给出每个保存配置的详细信息:
-a 选项的输出结果与 -v 选项的相同,只是在每个保存配置之后,会显示该配置的“kcmodule -a -v”和“kctune -v”的全部输出。这样可给出配置中所有设置的记录(设备绑定除外)。 -P 选项专供脚本或程序使用,可完全控制要输出哪些信息:
有关 -P 选项以及脚本或程序如何使用它的详细信息,请参阅“分析命令输出”或 kconfig (5) 联机帮助页。 如上述示例所示,每个保存的配置均具有一个名称。此名称必须以字母开头,只包含字母、数字和下划线,最长可有 32 个字符。除 backup 配置外,应在每次创建要保存的配置时为其选择一个名称,并可随意更改其名称。 每个保存的配置还具有一个标题。此标题可用于为您提供有关配置目的和设置的详细说明。标题是可选的。 每个保存的配置还具有一对时间戳。“Save Time”表示配置的上次保存 (kconfig -s) 时间。“Modify Time”表示配置的上次更改时间。 与每个保存的配置相关联的是一组完整的模块状态设置、可调参数值设置和设备绑定。可以使用下列命令查看这些信息:
和
或使用
(只有查看保存的配置的系统文件才能看到设备绑定,系统文件位于 /stand/configname/system)。 有三种方法可用于创建保存的内核配置:通过保存当前运行的配置,通过复制现有的保存配置或通过读取系统文件。 要保存当前运行的配置,请使用 kconfig -s(保存)。这样生成的保存配置会包括要保留至下次引导的对当前运行配置的所有更改。 可以使用 kconfig -c(复制)来复制现有的保存配置。 有关使用系统文件的信息,请参阅“使用系统文件管理配置”。 可以使用 kconfig -l(加载)来加载保存的配置。这会更改当前运行的内核的配置,以使其与保存的配置相匹配。如果配置可在不重新引导系统的情况下更改,则所进行的更改会立即生效。否则,所有更改均会保留至下次引导。 有时您可能想强制将配置更改保留至下次引导,而不想立即应用它。这种情况下,可以使用 kconfig -n(下次引导)来标记下次引导时要使用的保存配置。HP 建议仅在很快会进行下次引导时再使用此选项。例如,如果更改后几个月还没有重新引导系统,管理员可能会忘记此更改,而产生意外的不良后果。 要确定哪些保存的配置已标记为下次引导时使用,请使用 kconfig -w(which - 哪个)。此命令还可确定最近加载或引导的保存配置,或最近导入的系统文件。 要修改保存的配置中的模块状态设置和可调参数值设置,请分别使用 kcmodule 和 kctune 命令的 -c(配置)选项。也可以通过更改系统文件,再将其导入,来更改保存的配置;请参阅“使用系统文件管理配置”。 可使用 kconfig 命令的其他选项对保存的配置进行其他更改。-r(重命名)选项可对保存的配置重命名(不能重命名 backup 配置)。-t 选项可更改保存的配置的标题。-d(删除)选项可将保存的配置删除。 如果配置已标记为下次引导时使用,而您决定继续使用当前运行的配置,可以使用 kconfig -H(取消保留)来丢弃所有保留至下次引导的更改。 每个内核配置均具有相应的系统文件。系统文件是一个标志文本文件,以简洁、机器可读和可移植的格式说明配置中的所有设置。有关系统文件格式的详细信息,请参阅 system (4) 联机帮助页。这是对 HP-UX 先前版本所用格式的增强,但先前的格式仍然可用。 系统文件提供了配置内核的另一种机制,这是因为内核更改可以通过编辑系统文件然后通知内核配置工具应用所做的更改来实现。对于旧版本的 HP-UX 的用户,这是最熟悉的内核配置方法。 要使用系统文件进行配置更改,应首先找到与要更改的配置相对应的系统文件。[6]系统自动为每个配置维护系统文件。当前运行的配置的系统文件位于 /stand/system。所有保存配置的系统文件都位于 /stand/配置名称/system。如果要为配置创建新的系统文件,请使用 kconfig -e(导出)命令。此命令有两种形式:
可以使用任何文本编辑器编辑系统文件,以便根据需要进行更改。编辑完成后,可以使用 kconfig -i(导入)命令应用更改。此命令有三种形式:
在第一种形式中,如果更改无法应用于运行中的系统,它们会保留至下次引导。 为了向后兼容,仍可使用 mk_kernel 命令来应用在系统文件中进行的更改。但请注意,其名称已不再准确,这是因为,如果可能的话,此命令会应用配置更改而不构建内核。该命令具有以下形式: mk_kernel [-o 目标] [-s 文件名] 文件名是要读取的系统文件的名称;如果没有指定,将使用 /stand/system。要导入至保存的配置,目标应为此配置的名称。要导入至当前运行的系统,并使其立即生效(如果可能),目标应为 /stand/vmunix(不能立即应用的更改会保留至下次引导)。如果省略目标,将对名为 hpux_test 的保存配置进行更改。使用 mk_kernel 命令不能导入至当前运行的系统,它强制更改保留至下次引导。要实现此目的,可使用 kconfig -h -i。 请务必注意,/stand/system 和 /stand/配置名称/system 中的系统文件会在每次配置更改时自动重新创建。在此进程中,不会保存系统文件中的注释。此外,文件中的行顺序也不会保存。因此,HP 不建议将注释放在系统文件中,而应在导入配置时使用 -C(注释)选项直接向内核配置日志文件中添加注释(请参阅“内核配置日志文件”)。 系统文件中进行的大多数更改都可使用内核配置命令实现,反之亦然。下面列出了等效命令: 表 3-20 使用内核配置命令创建系统文件条目
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||