AutoYaST 是一个用于无人值守大规模部署 openSUSE Leap 系统的系统。它使用包含安装和配置数据的 AutoYaST 配置文件。本书将引导您完成自动安装的基本步骤:准备、安装和配置。
/、/home 和 swap 分区bcache 定义tmpfs 定义add_on_products.xml linuxrc 选项版权所有 © 2006–2024 SUSE LLC 及其贡献者。保留所有权利。
在 GNU 自由文档许可协议第 1.2 版或(可选)第 1.3 版的条款下,允许复制、分发和/或修改本文档,其中本版权声明和许可协议为不变部分。许可协议第 1.2 版的副本包含在题为 “GNU 自由文档许可协议” 的章节中。
有关 SUSE 商标,请参阅 https://www.suse.com/company/legal/。所有第三方商标均为其各自所有者的财产。商标符号(®、™ 等)表示 SUSE 及其关联公司的商标。星号 (*) 表示第三方商标。
本书中的所有信息均经过仔细核实。但是,这不能保证完全准确。SUSE LLC、其关联公司、作者和译者对可能出现的错误或由此产生的后果不承担任何责任。
我们的文档可在 https://doc.opensuse.net.cn 上在线获取。浏览或下载各种格式的文档。
最新的更新通常可在本文档的英文版本中获得。
如果您遇到问题,请查看在线提供的技术信息文档 (TID),网址为 https://www.suse.com/support/kb/。搜索 SUSE 知识库,以获取由客户需求驱动的已知解决方案。
为了离线使用,发布说明也可用在您的系统上的 /usr/share/doc/release-notes 下。各个软件包的文档可用在 /usr/share/doc/packages 下。
许多命令也在其 手册页 中进行了描述。要查看它们,请运行 man,后跟特定的命令名称。如果您的系统上未安装 man 命令,请使用 sudo zypper install man 进行安装。
欢迎您对本文档提出反馈和贡献。以下是提供反馈的渠道:
请在 https://bugzilla.opensuse.org/ 上报告文档问题。
为了简化此过程,请单击 HTML 版本本文档中标题旁边的 图标。这将预先选择 Bugzilla 中的正确产品和类别,并添加指向当前章节的链接。您可以立即开始编写错误报告。
需要一个 Bugzilla 帐户。
要贡献本文档,请单击 HTML 版本本文档中标题旁边的 图标。这将带您到 GitHub 上的源代码,您可以在那里打开一个拉取请求。
需要一个 GitHub 帐户。
“”图标仅适用于每份文档的英文版本。对于所有其他语言,请改用“”图标。
有关用于本文档的文档环境的更多信息,请参阅存储库的 README 文件。
您还可以将错误报告和有关文档的反馈发送至 <doc-team@suse.com>。请包含文档标题、产品版本和文档的发布日期。此外,请包含相关的章节编号和标题(或提供 URL),并提供问题的简洁描述。
如果您在 openSUSE Leap 上需要进一步的帮助,请参阅 https://en.opensuse.net.cn/Portal:Support。
本文档中使用了以下通知和排版约定:
/etc/passwd:目录名和文件名
占位符:将 占位符 替换为实际值
PATH:环境变量
ls、--help:命令、选项和参数
user:用户名或组名
软件包名:软件包的名称
Alt、Alt–F1:要按下的键或键组合。键以键盘上的大写字母显示。
、 › :菜单项、按钮
第 1 章,《“示例章节”:对本指南中另一个章节的交叉引用。
必须使用 root 权限运行的命令。您也可以使用 sudo 命令以非特权用户的身份运行这些命令。
#command>sudocommand
可以由非特权用户运行的命令
>command
命令可以通过行尾的反斜杠字符 (\) 分成两行或多行。反斜杠告知 shell 命令调用将在行尾之后继续。
>echoa b \ c d
一个代码块,显示命令(前面带有提示符)和 shell 返回的相应输出。
>commandoutput
通知
在继续之前您必须了解的重要信息。警告您有关安全问题、潜在的数据丢失、硬件损坏或物理危害。
在继续之前您应该了解的重要信息。
其他信息,例如关于软件版本差异的信息。
有用的信息,例如指南或实用建议。
紧凑型通知
其他信息,例如关于软件版本差异的信息。
有用的信息,例如指南或实用建议。
openSUSE Leap 的标准安装基于向导工作流。这在少量机器上安装时是用户友好且高效的。但是,当在多台机器上安装时,这会变得重复且耗时。
为了避免这种情况,您可以通过复制首次成功安装的硬盘来大规模部署。不幸的是,这导致了一个问题,即每台机器之间即使是微小的配置更改也需要单独处理。例如,当使用静态 IP 地址时,这些 IP 地址需要为每台机器重置。
openSUSE Leap 的常规安装默认是半自动的。用户在安装开始时(通常只有语言)被提示选择必要的信息。YaST 然后根据不同的因素和系统参数生成一个底层系统的提案。通常——特别是对于新系统——这样的提案可以用于安装系统并提供一个可用的安装。提案之后的步骤是完全自动化的。
AutoYaST 可用于不需要用户干预或需要自定义的情况。使用 AutoYaST 配置文件,YaST 为自定义安装准备系统,并且不与用户交互,除非在控制安装的文件中指定。
AutoYaST 不是一个自动化的 GUI 系统。这意味着通常会跳过许多屏幕——例如,您永远不会看到语言选择界面。AutoYaST 只会简单地将语言参数传递给子系统,而不会显示任何与语言相关的界面。
使用 AutoYaST,可以轻松并行快速安装多个系统。它们需要共享相同的环境和相似(但不一定相同)的硬件。安装由 XML 配置文件(通常命名为 autoinst.xml)定义,该文件称为“AutoYaST 配置文件”。您可以使用现有的配置资源创建此文件,并轻松地为任何特定环境进行定制。
AutoYaST 已完全集成,并提供各种安装和配置系统的选项。与其他自动安装系统相比,主要优点是能够通过使用现有模块来配置计算机,并避免使用通常在安装结束时执行的自定义脚本。
本文档将引导您完成自动安装的三个步骤
准备:收集有关目标系统的所有相关信息,并将其转换为配置文件中的适当指令。配置文件传输到目标系统,其指令将被解析并馈送给 YaST。
安装:YaST 使用 AutoYaST 配置文件中的数据执行目标系统的安装和基本配置(例如,分区、网络、防火墙)。
安装后配置:在基本系统安装和配置之后,系统可以运行第二阶段以执行任何需要目标系统已经运行的额外配置,例如安装后脚本、第三方模块或某些 YaST 模块。
openSUSE Leap 15.6 的常规安装在一个阶段中完成。然而,自动安装过程分为两个阶段。在基本系统安装和主要配置之后,系统引导到第二阶段以执行任何安装后配置步骤。
需要安装 autoyast2 和 autoyast2-installation 包才能在已安装的系统中正确运行第二阶段。否则,在引导到已安装系统之前将显示错误。
第二阶段仅在严格必要时运行,并且可以使用 second_stage 参数完全关闭第二阶段。
<general>
<mode>
<confirm config:type="boolean">false</confirm>
<second_stage config:type="boolean">false</second_stage>
</mode>
</general>一个 控制文件,也称为 配置文件,是单个系统的配置描述。它由具有属性的资源集合组成,包括对复杂结构(如列表、记录、树和大型嵌入或引用对象)的支持。
要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息
XML 配置格式提供了一致的文件结构,在尝试配置新系统时易于学习和记忆。
AutoYaST 控制文件使用 XML 来描述系统安装和配置。XML 是一种常用的标记,许多用户熟悉该语言的概念和用于处理 XML 文件的工具。如果您编辑现有控制文件或创建新控制文件,强烈建议验证控制文件。这可以使用验证 XML 解析器完成,例如 xmllint 或 jing(参见 第 3.3 节,“手动创建/编辑控制文件”)。
以下示例显示了 XML 格式的控制文件
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile
xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">btrfs</filesystem>
<size>10G</size>
<mount>/</mount>
</partition>
<partition>
<filesystem config:type="symbol">xfs</filesystem>
<size>120G</size>
<mount>/data</mount>
</partition>
</partitions>
</drive>
</partitioning>
<scripts>
<pre-scripts>
<script>
<interpreter>shell</interpreter>
<filename>start.sh</filename>
<source>
<![CDATA[
#!/bin/sh
echo "Starting installation"
exit 0
]]>
</source>
</script>
</pre-scripts>
</scripts>
</profile>下面是一个基本控制文件容器的示例,其实际内容将在本章后面解释。
<?xml version="1.0"?> <!DOCTYPE profile> <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> <!-- RESOURCES --> </profile>
<profile> 元素(根节点)包含一个或多个不同的资源元素。允许的资源元素在模式文件中指定
资源元素要么包含多个不同的属性和资源元素,要么包含相同资源元素的多个实例,要么为空。资源元素的允许内容在模式文件中指定。
属性元素要么为空,要么包含字面值。每个资源元素中允许的属性元素和值在模式文件中指定。
元素可以是其他元素的容器(资源),也可以具有字面值(属性);它不能两者兼备。此限制在模式文件中指定。具有多个值的配置组件必须表示为属性值中的嵌入列表或嵌套资源。
空元素,例如 <foo></foo> 或 <bar/>,将不在解析的数据模型中。通常这被解释为需要一个合理的默认值。在需要显式空字符串的情况下,请使用 CDATA 部分:<foo><![CDATA[]]></foo>。
嵌套资源元素允许构建任意深度的配置组件的树状结构。
有两种嵌套资源:映射和列表。映射,也称为关联数组、哈希或字典,包含混合内容,由其标签名称标识。列表或数组,所有项都具有相同的类型。
...
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<size>10G</size>
<mount>/</mount>
</partition>
<partition>
<size>1G</size>
<mount>/tmp</mount>
</partition>
</partitions>
</drive>
....在上面的示例中,drive 资源是一个映射,由 device 属性和 partitions 资源组成。partitions 资源是一个包含多个 partition 资源实例的列表。每个 partition 资源是一个包含 size 和 mount 属性的映射。
嵌套资源的默认类型是映射,尽管您可以根据需要指定它。列表必须使用 config:type="list" 属性标记。
从 openSUSE Leap 15.3 开始,可以使用属性 t 而不是 config:type 来指定元素类型。
<mode t="boolean">true</mode>
全局属性用于定义资源和属性的元数据。属性用于定义上下文切换。它们还用于命名和键入属性,如前几节所示。属性位于单独的命名空间中,因此它们不需要在默认命名空间中作为保留字处理。
config:type 属性确定解析数据模型中资源或属性的类型。对于资源,列表需要 list 类型,而映射是默认类型,不需要属性。有一个例外。当映射为空时,需要将其标记为映射,以免与简单的字符串值混淆。
<general t="map" />
对于属性,可以使用 boolean、symbol 和 integer,默认是字符串。
除了映射和字符串值(如前所述)之外,属性不是可选的。属性可能看起来是可选的,因为模式的各个部分在使用数据类型时不太一致。在某些地方,枚举由符号表示,而在其他地方则需要字符串。一个资源需要 config:type="integer",另一个资源将从字符串属性中解析数字。某些资源使用 config:type="boolean",而另一些资源则需要 yes 甚至 1。如果有疑问,请查阅模式文件。
要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息
硬盘类型和大小
图形界面和连接的显示器(如果有)
网络接口和 MAC 地址(如果已知,例如在使用 DHCP 时)
还要验证是否已安装 autoyast2-installation 和 autoyast2。
为了为一台或多台计算机创建控制文件,提供了基于 YaST 的配置界面。该系统依赖于通常在正常操作模式下(例如,在安装 openSUSE Leap 之后)用于配置计算机的现有模块。
配置管理系统让您轻松创建控制文件并管理配置存储库,以便在具有多个客户端的网络环境中使用。
创建 AutoYaST 配置文件的最简单方法是使用现有 openSUSE Leap 系统作为模板。在已安装的系统上,启动 › › 。然后从菜单中选择 › 。选择要包含在配置文件中的系统组件。或者,通过启动 › › 或从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。
这两种方法都将创建文件 /root/autoinst.xml。克隆的配置文件可用于设置与创建它的系统完全相同的克隆系统。但是,您通常会希望调整文件以允许安装非常相似但不完全相同的多台机器。这可以通过使用您喜欢的文本/XML 编辑器调整配置文件来完成。
请注意,配置文件可能包含敏感信息,例如密码哈希和注册密钥。
仔细检查导出的配置文件,并确保文件权限保持严格。
除少数例外,控制文件的几乎所有资源都可以使用配置管理系统进行配置。该系统提供了灵活性,并且某些资源的配置与 YaST 控制中心中可用的配置相同。除了现有和熟悉的模块之外,还为特殊和复杂的配置创建了新界面,例如分区、一般选项和软件。
此外,使用 CMS 可以保证生成控制文件的有效性及其直接用于启动自动化安装。
确保配置系统已安装(软件包 autoyast2)。使用 YaST 控制中心或以 root 身份使用以下命令调用 AutoYaST(确保 DISPLAY 变量设置正确以启动图形用户界面而不是基于文本的用户界面)
/sbin/yast2 autoyast
如果手动编辑控制文件,请确保它具有有效的语法。要检查语法,请使用发行版上已有的工具。例如,要验证文件格式是否良好(具有有效的 XML 结构),请使用 libxml2 包随附的实用程序 xmllint
xmllint <control file>
如果控制文件格式不正确,例如,如果标签未闭合,xmllint 将报告错误。
要验证控制文件,请使用与包同名的 jing 工具。在验证期间,将检测到错位或缺失的标签和属性以及错误的属性值。
jing /usr/share/YaST2/schema/autoyast/rng/profile.rng <control file>
/usr/share/YaST2/schema/autoyast/rng/profile.rng 由 yast2-schema-default 包提供。此文件描述了 AutoYaST 配置文件的语法和类。
AutoYaST 可以通过其他产品和模块进行扩展,但架构不包含这些扩展的规范。因此,当 AutoYaST 收到使用这些扩展之一的配置文件时,它可能会报告配置文件无效。
因此,从 openSUSE Leap 15.3 开始,AutoYaST 不会验证顶级未知部分,并忽略它们。例如,在下面的示例中,<sap-inst> 未经验证。其余部分照常验证。
<general>
<mode>
<confirm config:type="boolean">true</confirm>
</mode>
</general>
<sap-inst>
<!-- this section is not validated -->>
</sap-inst>在进行自动安装之前,请修复此类检查导致的任何错误。无法使用无效且格式不正确的控制文件启动自动安装过程。
您可以使用系统上可用的任何 XML 编辑器或任何支持 XML 的文本编辑器(例如 Emacs、Vim)。但是,手动为多台机器创建控制文件并非最佳选择,它应该只被视为自动安装引擎和配置管理系统 (CMS) 之间的接口。
内置的 nxml 模式将 Emacs 转换为功能齐全的 XML 编辑器,具有自动标签完成和验证功能。有关如何设置 nxml 模式的说明,请参阅 Emacs 帮助。
如果您有一个模板并且想通过脚本或命令行更改一些内容,请使用 XSLT 处理器,例如 xsltproc。例如,如果您有一个 AutoYaST 控制文件并且出于任何原因想通过脚本填写主机名。(如果经常这样做,您应该考虑将其脚本化。)
首先,创建一个 XSL 文件
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:y2="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns"
xmlns="http://www.suse.com/1.0/yast2ns"
version="1.0">
<xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="source"/>
<!-- the parameter names -->
<xsl:param name="hostname"/>
<xsl:param name="domain"/>
<xsl:template match="/">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="y2:dns">
<xsl:copy>
<!-- where to copy the parameters -->
<domain><xsl:value-of select="string($domain)"/></domain>
<hostname><xsl:value-of select="string($hostname)"/></hostname>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()" >
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>此文件将主机名和域名作为用户参数。
<xsl:param name="hostname"/> <xsl:param name="domain"/>
在控制文件的 DNS 部分中将有这些参数的副本。这意味着如果 DNS 部分中已经存在域元素,您将获得第二个域元素,这将导致冲突。
有关 XSLT 的更多信息,请访问官方网页 www.w3.org/TR/xslt
根据用例,创建 AutoYaST 配置文件可能很困难,特别是如果您使用规则/类、ERB 模板或预脚本构建动态配置文件。有关更多信息,请参见第三部分,“使用动态配置文件管理大规模安装”。
从 openSUSE Leap 15.3 开始,AutoYaST 在安装过程中验证配置文件,将发现的任何问题报告给用户。虽然建议检查配置文件是否正确,但您可以通过将 YAST_SKIP_XML_VALIDATION 引导参数设置为 1 来禁用此行为。
此外,为了简化测试和调试过程,AutoYaST 提供了 check-profile 命令,该命令负责获取、构建并(可选)导入配置文件以检测任何潜在问题。
尽管此命令使用与安装相同的方法,但结果可能会因当前系统和安装介质之间的差异而异:YaST 软件包版本、架构等。
运行此命令时必须小心,因为预安装脚本和 ERB 代码将以 root 用户身份运行。仅使用您信任的配置文件。
使用此命令的最简单方法是简单地读取和验证配置文件
>sudoyast2 autoyast check-profile filename=autoinst.xml output=result.xml
result.xml 文件包含评估配置文件的结果。请记住,即使您不使用任何高级功能,autoinst.xml 和 result.xml 的内容也可能不同。原因在于 AutoYaST 在处理配置文件时会进行一些清理。
check-profile 也可以处理远程文件
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml
可选地,AutoYaST 可以运行配置文件中包含的脚本,报告执行过程中发现的任何错误。如果您使用预安装脚本修改配置文件,这尤其相关。要启用此功能,您需要将 run-scripts 选项设置为 true。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml run-scripts=true
启用 run-scripts 选项时必须小心,因为脚本将以 root 身份运行,并且可能会影响当前系统。
即使配置文件有效且正确,导入时也可能遇到一些问题。原因是 AutoYaST 在获取、构建和验证配置文件时不会执行任何逻辑检查。
为了预测这些问题,check-profile 命令会导入配置文件并报告其检测到的问题。由于这可能需要一些时间,您可以通过将 import-all 选项设置为 false 来禁用此行为。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml import-all=false
导入配置文件是一个安全操作,不会以任何方式更改底层系统。
本节包含服务、注册、用户和组管理、升级、分区、配置管理、SSH 密钥管理、防火墙配置和其他安装选项的配置示例。
本章介绍了控制文件中用于标准目的的重要部分。要了解其他可用选项,请使用配置管理系统。
请注意,为了使某些配置选项生效,需要安装额外的软件包,具体取决于您配置的软件选择。如果您选择安装最小系统,则某些软件包可能会缺失,需要将其添加到单个软件包选择中。
YaST 将在安装的第二阶段和 AutoYaST 的安装后阶段开始之前安装所需的软件包。但是,如果系统中没有必要的 YaST 模块,重要的配置步骤将被跳过。例如,如果未安装 yast2-security,则不会配置安全设置。
通用部分包括所有影响安装工作流程的设置。本节的整体结构如下所示
<?xml version="1.0"?> <!DOCTYPE profile> <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> <general> <ask-list>1 ... </ask-list> <cio_ignore> ... </cio_ignore> <mode>2 ... </mode> <proposals>3 ... </proposals> <self_update>4 ... </self_update> <self_update_url> ... </self_update_url> <semi-automatic config:type="list">5 ... </semi-automatic> <signature-handling>6 ... </signature-handling> <storage>7 ... </storage> <wait>8 ... </wait> </general> <profile>
模式部分配置 AutoYaST 在用户确认和重启方面的行为。mode 部分允许以下元素
activate_systemd_default_target如果将此条目设置为 false,则默认的 systemd 目标将不会通过调用 systemctl isolate 激活。此值的设置是可选的。默认值为 true。
<general> <mode> <activate_systemd_default_target config:type="boolean"> true </activate_systemd_default_target> </mode> ... </general>
confirm默认情况下,安装在 屏幕停止。到目前为止,尚未对系统进行任何更改,并且可以在此屏幕上更改设置。要继续并最终开始安装,用户需要确认设置。通过将此值设置为 false,设置将自动接受并开始安装。仅设置为 false 以执行完全无人值守的安装。此值的设置是可选的。默认值为 true。
<general> <mode> <confirm config:type="boolean">true</confirm> </mode> ... </general>
confirm_base_product_license如果将其设置为 true,将显示基础产品的 EULA。用户需要接受此许可证。否则,安装将被取消。此值的设置是可选的。默认值为 false。此设置仅适用于基础产品许可证。对于附加许可证,请在 add-on 部分使用标志 confirm_license(有关详细信息,请参见第 4.9.3 节,“安装附加/自定义软件包或产品”)。
<general> <mode> <confirm_base_product_license config:type="boolean"> false </confirm_base_product_license> </mode> ... </general>
final_halt当设置为 true 时,机器在所有安装和配置完成后在第二阶段结束时关闭。如果启用 final_halt,则无需将 final_reboot 选项设置为 true。
<general> <mode> <final_halt config:type="boolean">false</final_halt> </mode> ... </general>
final_reboot当设置为 true 时,机器在所有安装和配置完成后在第二阶段结束时重启。如果启用 final_reboot,则无需将 final_halt 选项设置为 true。
<general> <mode> <final_reboot config:type="boolean">true</final_reboot> </mode> ... </general>
final_restart_services如果将此条目设置为 false,则服务在安装结束时(当所有内容都已安装和配置在第二阶段结束时)不会重新启动。此值的设置是可选的。默认值为 true。
<general> <mode> <final_restart_services config:type="boolean"> true </final_restart_services> </mode> ... </general>
forceboot某些 openSUSE 版本使用 Kexec 来避免第一阶段后的重启。它们立即引导到已安装的系统。您可以通过将其设置为 true 来强制重启。此值的设置是可选的。默认值由产品设置。
<general> <mode> <forceboot config:type="boolean">false</forceboot> </mode> ... </general>
某些驱动程序,例如 Nvidia 和 ATI 显卡的专有驱动程序,需要重启,并且在使用 Kexec 时无法正常工作。因此,openSUSE Leap 产品上的默认设置是始终执行正常重启。
halt在第一阶段后关闭机器。所有软件包和引导加载程序都已安装,并且所有 chroot 脚本都已运行。机器关闭而不是重启到第二阶段。如果再次打开,机器将启动并开始自动安装的第二阶段。此值的设置是可选的。默认值为 false。
<general> <mode> <halt config:type="boolean">false</halt> </mode> ... </general>
max_systemd_wait指定 AutoYaST 最多等待 systemd 设置默认目标的时间(以秒为单位)。此值的设置是可选的,通常不需要。默认值为 30(秒)。
<general> <mode> <max_systemd_wait config:type="integer">30</max_systemd_wait> </mode> ... </general>
ntp_sync_time_before_installation指定在开始安装之前与哪个 NTP 服务器同步时间。仅当设置此选项时才会发生时间同步。请记住,您需要网络连接和时间服务器访问权限。此值的设置是可选的。默认情况下不会发生时间同步。
<general>
<mode>
<ntp_sync_time_before_installation>
&ntpname;
</ntp_sync_time_before_installation>
</mode>
...
</general>second_stageopenSUSE Leap 的常规安装在一个阶段中完成。但是,自动安装过程分为两个阶段。在基本系统安装之后,系统引导到第二阶段,在此阶段完成系统配置。将此选项设置为 false 以禁用第二阶段。此值的设置是可选的。默认值为 true。
<general> <mode> <second_stage config:type="boolean">true</second_stage> </mode> ... </general>
AutoYaST 允许您配置 屏幕,该屏幕显示安装设置的摘要。在此屏幕上,用户可以在确认设置以开始安装之前更改设置。使用 proposal 标签,您可以控制在安装屏幕中显示哪些设置(“提案”)。您的产品有效提案列表可在安装介质上的 /control.xml 文件中找到。此设置是可选的。默认情况下将显示所有配置选项。
<proposals config:type="list"> <proposal>partitions_proposal</proposal> <proposal>timezone_proposal</proposal> <proposal>software_proposal</proposal> </proposals>
在安装过程中,YaST 可以更新自身,以解决发布后发现的安装程序中的错误。有关此功能的更多信息,请参阅部署指南。
使用以下标签配置 YaST 自更新
self_update如果设置为 true 或 false,此选项将启用或禁用 YaST 自更新功能。此值的设置是可选的。默认值为 true。
<general> <self_update config:type="boolean">true</self_update> ... </general>
或者,您可以在内核命令行上指定引导参数 self_update=1。
self_update_url在 YaST 自更新期间使用的更新存储库的位置。有关更多信息,请参阅《启动指南》,“第 3 章:安装步骤”,“第 3.2.2 节:自定义自更新存储库”。
self_update_url 参数仅需要安装程序自更新存储库 URL。请勿提供任何其他存储库 URL——例如,软件更新存储库的 URL。
<general> <self_update_url> http://example.com/updates/$arch </self_update_url> ... </general>
URL 可能包含变量 $arch。它将被系统的架构替换,例如 x86_64、s390x 等。
或者,您可以在内核命令行上指定引导参数 self_update=1 和 self_update=URL。
AutoYaST 允许在安装过程中启动一些 YaST 模块。这使得安装机器的管理员能够手动配置安装的某些方面,同时还自动化了安装的其余部分。在半自动部分中,您可以启动以下 YaST 模块
网络设置模块 (networking)
分区器 (partitioning)
注册模块 (scc)
以下示例在安装过程中启动了所有三个受支持的 YaST 模块
<general> <semi-automatic config:type="list"> <semi-automatic_entry>networking</semi-automatic_entry> <semi-automatic_entry>scc</semi-automatic_entry> <semi-automatic_entry>partitioning</semi-automatic_entry> </semi-automatic> </general>
默认情况下,AutoYaST 只会从具有已知 GPG 密钥的源安装已签名的软件包。使用此部分覆盖默认设置。
安装未签名软件包、校验和检查失败的软件包或来自您不信任的源的软件包存在重大的安全风险。软件包可能已被修改,并可能在您的机器上安装恶意软件。仅当您确定存储库和软件包可信时,才覆盖本节中的默认值。SUSE 不对因禁用完整性检查而安装的软件引起的任何问题负责。
所有选项的默认值均为 false。如果选项设置为 false 且软件包或存储库未能通过相应测试,则会静默忽略,不会安装。
accept_unsigned_file如果设置为 true,AutoYaST 将接受未签名文件,例如内容文件。
<general> <signature-handling> <accept_unsigned_file config:type="boolean"> false </accept_unsigned_file> </signature-handling> ... <general>
accept_file_without_checksum如果设置为 true,AutoYaST 将接受内容文件中没有校验和的文件。
<general> <signature-handling> <accept_file_without_checksum config:type="boolean"> false </accept_file_without_checksum> </signature-handling> ... <general>
accept_verification_failed如果设置为 true,即使签名验证失败,AutoYaST 也会接受签名文件。
<general> <signature-handling> <accept_verification_failed config:type="boolean"> false </accept_verification_failed> </signature-handling> ... <general>
accept_unknown_gpg_key如果设置为 true,AutoYaST 将接受并导入安装源中新的 GPG 密钥到其数据库中,例如用于签名内容文件的密钥。
<general> <signature-handling> <accept_unknown_gpg_key config:type="boolean"> false </accept_unknown_gpg_key> </signature-handling> ... <general>
accept_non_trusted_gpg_key将此选项设置为 true 以接受您尚未信任的已知密钥。
<general> <signature-handling> <accept_non_trusted_gpg_key config:type="boolean"> false </accept_non_trusted_gpg_key> </signature-handling> ... <general>
import_gpg_key如果设置为 true,AutoYaST 将接受并导入安装源上的新 GPG 密钥到其数据库中。
<general> <signature-handling> <import_gpg_key config:type="boolean"> false </import_gpg_key> </signature-handling> ... <general>
在安装的第二阶段,系统通过运行模块进行配置,例如网络配置。在 wait 部分中,您可以定义在特定模块运行之前和之后执行的脚本。您还可以配置在每个模块之前和之后系统处于非活动状态(“休眠”)的时间段。
pre-modules定义在配置模块启动之前执行的脚本和休眠时间。以下代码显示了一个示例,将休眠时间设置为十秒并在运行网络配置模块之前执行 echo 命令。
<general>
<wait>
<pre-modules config:type="list">
<module>
<name>networking</name>
<sleep>
<time config:type="integer">10</time>
<feedback config:type="boolean">true</feedback>
</sleep>
<script>
<source>echo foo</source>
<debug config:type="boolean">false</debug>
</script>
</module>
</pre-modules>
...
</wait>
<general>post-modules定义在配置模块启动后执行的脚本和休眠时间。以下代码显示了一个示例,将休眠时间设置为十秒并在运行网络配置模块后执行 echo 命令。
<general>
<wait>
<post-modules config:type="list">
<module>
<name>networking</name>
<sleep>
<time config:type="integer">10</time>
<feedback config:type="boolean">true</feedback>
</sleep>
<script>
<source>echo foo</source>
<debug config:type="boolean">false</debug>
</script>
</module>
</post-modules>
...
</wait>
<general>在此部分中查找涵盖多个用例的示例。
此示例显示了通用部分中最常用的选项。pre-modules 和 post-modules 部分中的脚本只是说明概念的虚拟脚本。
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<general>
<mode>
<halt config:type="boolean">false</halt>
<forceboot config:type="boolean">false</forceboot>
<final_reboot config:type="boolean">false</final_reboot>
<final_halt config:type="boolean">false</final_halt>
<confirm_base_product_license config:type="boolean">
false
</confirm_base_product_license>
<confirm config:type="boolean">true</confirm>
<second_stage config:type="boolean">true</second_stage>
</mode>
<proposals config:type="list">
<proposal>partitions_proposal</proposal>
</proposals>
<self_update config:type="boolean">true</self_update>
<self_update_url>http://example.com/updates/$arch</self_update_url>
<signature-handling>
<accept_unsigned_file config:type="boolean">
true
</accept_unsigned_file>
<accept_file_without_checksum config:type="boolean">
true
</accept_file_without_checksum>
<accept_verification_failed config:type="boolean">
true
</accept_verification_failed>
<accept_unknown_gpg_key config:type="boolean">
true
</accept_unknown_gpg_key>
<import_gpg_key config:type="boolean">true</import_gpg_key>
<accept_non_trusted_gpg_key config:type="boolean">
true
</accept_non_trusted_gpg_key>
</signature-handling>
<wait>
<pre-modules config:type="list">
<module>
<name>networking</name>
<sleep>
<time config:type="integer">10</time>
<feedback config:type="boolean">true</feedback>
</sleep>
<script>
<source>>![CDATA[
echo "Sleeping 10 seconds"
]]></source>
<debug config:type="boolean">false</debug>
</script>
</module>
</pre-modules>
<post-modules config:type="list">
<module>
<name>networking</name>
<sleep>
<time config:type="integer">10</time>
<feedback config:type="boolean">true</feedback>
</sleep>
<script>
<source>>![CDATA[
echo "Sleeping 10 seconds"
]]></source>
<debug config:type="boolean">false</debug>
</script>
</module>
</post-modules>
</wait>
</general>
</profile>report 资源管理安装期间可能出现的三种类型的弹出窗口
消息弹出窗口(通常是非关键的,信息性消息),
警告弹出窗口(如果可能出现问题),
错误弹出窗口(如果发生错误)。
<report>
<errors>
<show config:type="boolean">true</show>
<timeout config:type="integer">0</timeout>
<log config:type="boolean">true</log>
</errors>
<warnings>
<show config:type="boolean">true</show>
<timeout config:type="integer">10</timeout>
<log config:type="boolean">true</log>
</warnings>
<messages>
<show config:type="boolean">true</show>
<timeout config:type="integer">10</timeout>
<log config:type="boolean">true</log>
</messages>
<yesno_messages>
<show config:type="boolean">true</show>
<timeout config:type="integer">10</timeout>
<log config:type="boolean">true</log>
</yesno_messages>
</report>根据您的经验,您可以跳过、记录和显示(带超时)这些消息。建议显示所有带超时的 messages。警告在某些地方可以跳过,但不应忽略。
自动安装模式下的默认设置是显示无超时的错误,并显示所有带 10 秒超时的警告/消息。
请注意,安装期间并非所有消息都由 report 资源控制。某些关于软件包安装和分区的关键消息将出现,而忽略您在 report 部分中的设置。通常,这些消息需要用 或 回答。
本文档适用于 yast2-bootloader 并适用于 GRUB 2。对于随旧版 GRUB 发布的旧产品版本,请参阅随发行版提供的 /usr/share/doc/packages/autoyast2/ 中的文档
默认情况下,AutoYaST 建议使用与启动介质相同的启动机制。例如,如果您使用 EFI 启动,则会安装适用于 EFI 的 GRUB 2。因此,除非您有特定要求,否则可以省略此部分。由于 EFI 启动需要特定的分区,我们建议使用第 4.5.1 节,“自动分区”中所述的自动分区,这将自动创建所有所需分区。
如果需要调整默认值,请使用 <bootloader> 部分。其一般结构如下所示
<bootloader>
<loader_type>
<!-- boot loader type (grub2 or grub2-efi) -->
</loader_type>
<global>
<!--
entries defining the installation settings for GRUB 2 and
the generic boot code
-->
</global>
<device_map config:type="list">
<!-- entries defining the order of devices -->
</device_map>
</bootloader>您无需填写所有设置。相反,您只需定义需要更改的设置。AutoYaST 将把默认值与配置文件中指定的值合并。
这定义了使用哪个引导加载程序(UEFI 或 BIOS/传统)。并非所有架构都支持引导加载程序的传统和 EFI 变体。最安全的(default)选项是将决定权留给安装程序。
<loader_type>LOADER_TYPE</loader_type>
LOADER_TYPE 的可能值为
default:安装程序选择正确的引导加载程序。这是未定义选项时的默认值。
grub2:使用传统的 BIOS 引导加载程序。
grub2-efi:使用 EFI 引导加载程序。
none:引导过程不由安装程序管理和配置。
这是一个重要但可选的部分。在此处定义 GRUB 2 的安装位置以及引导过程将如何工作。同样,如果您未定义配置,yast2-bootloader 将提出一个配置。通常,AutoYaST 控制文件只包含此部分,所有其他部分在安装期间由 yast2-bootloader 自动添加。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。
这是一个重要但可选的部分。在此处定义 GRUB 2 的安装位置以及引导过程将如何工作。同样,如果您未定义配置,yast2-bootloader 会提出一个配置。通常,AutoYaST 控制文件只包含此部分,所有其他部分在安装期间由 yast2-bootloader 自动添加。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。
如果需要特定的休眠设置,可以在 append 配置中使用 resume 或 noresume。
要禁用休眠,无论安装程序提议什么,请在 append 部分中将 noresume 指定为内核参数。
要指定休眠设备,请使用 resume 键和设备路径。获得稳定结果的推荐方法是配置您自己的分区并拥有一个带标签的交换设备。
<append>quiet resume=/dev/disk/by-label/my_swap</append>
如果您不使用 resume 或 noresume,或者如果 resume 指定了在已安装系统上不存在的设备,则安装程序可能会为 resume 提出一个正确的值,或者它可能会完全删除休眠参数,具体取决于安装程序逻辑。
<global> <activate>true</activate> <timeout config:type="integer">10</timeout> <terminal>gfxterm</terminal> <gfxmode>1280x1024x24</gfxmode> </global>
在引导分区上设置引导标志。如果没有单独的 /boot 分区,引导分区可以是 /。如果引导分区在逻辑分区上,引导标志将设置为扩展分区。
<activate>true</activate>
内核参数添加到正常和恢复模式的引导条目末尾。
<append>nomodeset vga=0x317</append>
将 GRUB 2 写入单独的 /boot 分区。如果没有单独的 /boot 分区,GRUB 2 将写入 /。
<boot_boot>false</boot_boot>
将 GRUB 2 写入自定义设备。
<boot_custom>/dev/sda3</boot_custom>
将 GRUB 2 写入扩展分区(如果您想使用通用引导代码并且 /boot 分区是逻辑分区,则很重要)。注意:如果引导分区是逻辑分区,您应该使用 boot_mbr(将 GRUB 2 写入 MBR)而不是 generic_mbr。
<boot_extended>false</boot_extended>
将 GRUB 2 写入第一个磁盘的 MBR。(device.map 包含磁盘的顺序。)
<boot_mbr>false</boot_mbr>
将 GRUB 2 写入 / 分区。
<boot_root>false</boot_root>
允许您选择 CPU 缓解的内核引导命令行参数的默认设置(同时在安全性和性能之间取得平衡)。
可能的值是
启用 CPU 模型所需的所有缓解措施,但不保护免受跨 CPU 线程攻击。此设置可能会在一定程度上影响性能,具体取决于工作负载。
提供全套可用的安全缓解措施。启用 CPU 模型所需的所有缓解措施。此外,它还禁用同步多线程 (SMT) 以避免跨多个 CPU 线程的侧信道攻击。此设置可能会进一步影响性能,具体取决于工作负载。
禁用所有缓解措施。对 CPU 的侧信道攻击是可能的,具体取决于 CPU 模型。此设置对性能没有影响。
不设置任何缓解级别。使用内核命令行选项手动指定 CPU 缓解措施。
<cpu_mitigations>auto</cpu_mitigations>
如果未在 AutoYaST 中设置,则可以通过内核命令行更改相应的设置。默认情况下,使用安装介质上 /control.xml 文件中的(产品特定)设置(如果未指定其他内容)。
将通用引导代码写入 MBR(如果 boot_mbr 设置为 true,则将被忽略)。
<generic_mbr config:type="boolean">false</generic_mbr>
GRUB 2 屏幕的图形分辨率(需要将 <terminal> 设置为 gfxterm)。
有效条目为 auto、 HORIZONTALxVERTICAL 或 HORIZONTALxVERTICAL xCOLOR DEPTH。您可以通过在正在运行的系统中的 GRUB 2 命令行中使用 vbeinfo 命令来查看 GRUB 2 在特定系统上支持的屏幕分辨率。
<gfxmode>1280x1024x24</gfxmode>
如果设置为 true,则在安装过程中自动搜索已安装的操作系统并为其生成引导条目。
<os_prober>false</os_prober>
如果定义了此项,它将使用密码保护引导加载程序。系统在输入密码之前不会启动。
它有三个子元素:value、encrypted 和 unrestricted。
value 保存密码。它可以是纯文本,YaST 将对其加密,也可以是已使用 grub-mkpasswd-pbkdf2 加密的密码。当您使用已加密的密码时,将 encrypted 设置为 true。
当 unrestricted 设置为 false 时,用户需要 value 子元素定义的密码才能引导或编辑 GRUB 2 菜单条目(通过在选定的引导菜单项上按 E)。当它设置为 true 时,用户可以在没有密码的情况下引导系统,但需要密码才能编辑 GRUB 2 菜单条目。如果省略该选项,则默认为 true。
<password><value>my_strong_password</value><encrypted>false</encrypted><unrestricted>false</unrestricted></password>
已过时且不再使用。从 Btrfs 快照启动会自动启用。
如果 GRUB 2 终端模式设置为 serial,则执行的命令。
<serial>serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1</serials>
如果设置为 false,则 UEFI 安全启动被禁用。仅适用于 grub2-efi 引导加载程序。
<secure_boot>false</secure_boot>
指定要使用的 GRUB 2 终端模式。有效条目包括 console、gfxterm 和 serial。如果设置为 serial,还需要使用 <serial> 指定串行命令。
<terminal>serial</terminal>
在默认启动项自动启动之前的超时时间(秒)。
<timeout config:type="integer">10</timeout>
如果设置为 true,则使用受信任的 GRUB。受信任的 GRUB 支持受信任平台模块 (TPM)。仅适用于 grub2 引导加载程序。
<trusted_boot">true</trusted_boot>
如果设置为 true,则 AutoYaST 会为固件中的引导加载程序添加一个 NVRAM 条目。这是理想的行为,除非您想保留特定设置或需要解决固件问题。
<update_nvram>true</update_nvram>
将内核参数 vga=VALUE 添加到启动项。
<vgamode>0x317</vgamode>
添加到 Xen 客户机启动项末尾的内核参数。
<xen_append>nomodeset vga=0x317</xen_append>
添加到 VM 主机服务器上 Xen 内核启动项末尾的内核参数。
<xen_kernel_append>dom0_mem=768M</xen_kernel_append>
GRUB 2 在生成其配置文件时,通过使用设备 ID 字符串 (UUID) 或文件系统标签来避免 BIOS 驱动器与 Linux 设备之间的映射问题。GRUB 2 实用程序会即时创建一个临时设备映射,这通常是足够的,尤其是在单磁盘系统上。但是,如果您需要覆盖自动设备映射机制,请在此部分创建自定义映射。
<device_map config:type="list">
<device_map_entry>
<firmware>hd0</firmware> <!-- order of devices in target map -->
<linux>/dev/disk/by-id/ata-ST3500418AS_6VM23FX0</linux> <!-- name of device (disk) -->
</device_map_entry>
</device_map>此文档适用于 yast2-bootloader 并应用于 systemd-boot。
AutoYaST 引导加载程序部分的一般结构如下所示
<bootloader>
<loader_type>
systemd-boot
</loader_type>
<global>
<!--
entries defining the installation settings for systemd-boot and
the generic boot code
-->
</global>
</bootloader>这定义了要使用的引导加载程序 (systemd-boot)。并非所有架构都支持引导加载程序的传统和 EFI 变体。
<loader_type>systemd-boot</loader_type>
这是一个重要但可选的部分。在此处定义 systemd-boot 的安装位置以及引导过程如何工作。yast2-bootloader 会在您未定义配置时建议一个配置。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。
<global> <timeout config:type="integer">10</timeout> <secure_boot>false</secure_boot> </global>
如果设置为 false,则禁用 UEFI 安全引导。
<secure_boot>false</secure_boot>
在默认启动项自动启动之前的超时时间(秒)。
<timeout config:type="integer">10</timeout>
在分区方面,我们可以将 AutoYaST 的用例分为三个不同的级别
自动分区。用户不关心分区,并相信 AutoYaST 会做出正确的选择。
引导式分区。用户想要设置一些基本设置。例如,用户想要使用 LVM,但不知道如何配置分区、卷组等。
专家分区。用户指定布局应如何。但是,不需要完整的定义,AutoYaST 应该为缺失的部分提供合理的默认值。
在某种程度上,这就像使用常规安装程序一样。您可以跳过分区屏幕并相信 YaST,使用,或者通过定义分区布局。
AutoYaST 可以在没有任何用户指示的情况下提出合理的分区布局。尽管这取决于所选的安装产品,但 AutoYaST 通常会建议一个 Btrfs 根文件系统、一个使用 XFS 的单独 /home 和一个交换分区。此外,根据架构,它还会添加可能需要启动的任何分区(如 BIOS GRUB 分区)。
但是,这些默认值可能会根据可用磁盘空间等因素而改变。例如,是否拥有单独的 /home 取决于可用磁盘空间的大小。
如果您想影响这些默认值,可以使用 第 4.5.2 节,“引导式分区” 中描述的方法。
尽管 AutoYaST 可以在没有任何用户指示的情况下提出分区布局,但有时设置一些通用参数并让 AutoYaST 完成其余工作是很有用的。例如,您可能对使用 LVM 或加密文件系统感兴趣,而无需处理详细信息。这类似于您在常规安装中使用引导式建议时会做的事情。
示例 4.3,“基于 LVM 的引导式分区” 中的 storage 部分指示 AutoYaST 设置使用 LVM 的分区布局并删除所有 Windows 分区,无论它们是否需要。
<general>
<storage>
<proposal>
<lvm config:type="boolean">true</lvm>
<windows_delete_mode config:type="symbol">all</windows_delete_mode>
</proposal>
</storage>
</general>创建基于 LVM 的建议。默认值为 false。
<lvm config:type="boolean">true</lvm>
告诉安装程序是否应在建议中重用现有 LVM。默认值为 true。
<lvm_vg_reuse config:type="boolean">false</lvm_vg_reuse>
当设置为 true 时,如果需要为安装腾出空间,AutoYaST 会调整 Windows 分区的大小。
<resize_windows config:type="boolean">false</resize_windows>
none 不移除 Windows 分区。
ondemand 在需要时移除 Windows 分区。
all 移除所有 Windows 分区。
<windows_delete_mode config:type="symbol">ondemand</windows_delete_mode>
none 不移除 Linux 分区。
ondemand 在需要时移除 Linux 分区。
all 移除所有 Linux 分区。
<linux_delete_mode config:type="symbol">ondemand</linux_delete_mode>
none 不移除其他分区。
ondemand 在需要时移除其他分区。
all 移除所有其他分区。
<other_delete_mode config:type="symbol">ondemand</other_delete_mode>
使用指定的密码启用加密。默认情况下,加密是禁用的。
<encryption_password>some-secret</encryption_password>
作为引导式分区的替代方案,AutoYaST 允许通过 partitioning 部分描述分区布局。但是,AutoYaST 不需要知道每个细节,可以从相当不完整的规范中构建一个合理的布局。
partitioning 部分是 drive 元素的列表。这些部分中的每一个都描述了分区布局的一个元素,如磁盘、LVM 卷组、RAID、多设备 Btrfs 文件系统等。
示例 4.4,“创建 /、/home 和 swap 分区” 要求 AutoYaST 使用整个磁盘创建 /、/home 和 swap 分区。请注意,缺少一些信息,例如每个分区应使用哪个文件系统。但是,这不是问题,AutoYaST 会为它们建议合理的值。
/、/home 和 swap 分区 #<partitioning config:type="list">
<drive>
<use>all</use>
<partitions config:type="list">
<partition>
<mount>/</mount>
<size>20GiB</size>
</partition>
<partition>
<mount>/home</mount>
<size>max</size>
</partition>
<partition>
<mount>swap</mount>
<size>1GiB</size>
</partition>
</partitions>
</drive>AutoYaST 检查配置文件中描述的布局是否可引导。如果不可引导,它会添加缺失的分区。因此,如果您不确定需要哪些分区才能引导,可以依赖 AutoYaST 做出正确的决定。
下面列出的元素必须放置在以下 XML 结构中
<profile>
<partitioning config:type="list">
<drive>
...
</drive>
</partitioning>
</profile>可选,您要配置的设备。如果省略,AutoYaST 会尝试猜测设备。有关如何影响猜测的信息,请参阅 提示:跳过设备。
如果设置为 ask,AutoYaST 会在安装期间询问用户要使用哪个设备。
您可以使用持久设备名称,例如通过 ID,如 /dev/disk/by-id/ata-WDC_WD3200AAKS-75L9,或通过路径,如 /dev/disk/by-path/pci-0001:00:03.0-scsi-0:0:0:0。
<device>/dev/sda</device>
在卷组、软件 RAID 或 bcache 设备的情况下,安装系统中的名称可能不同(以避免与现有设备冲突)。
有关处理多路径设备的更多信息,请参阅 第 4.5.7 节,“多路径支持”。
可选,默认值为 false。如果设置为 true,则在 AutoYaST 开始分区计算之前会擦除分区表。
<initialize config:type="boolean">true</initialize>
可选,<partition> 条目列表(请参阅 第 4.5.3.2 节,“分区配置”)。
<partitions config:type="list">
<partition>...</partition>
...
</partitions>如果未指定分区,AutoYaST 将创建合理的分区布局(请参阅 第 4.5.3.5 节,“填补空白”)。
可选,仅适用于 LVM。LVM 卷组的默认值为 4M。
<pesize>8M</pesize>
推荐,指定 AutoYaST 将用于对硬盘进行分区的策略。从以下选项中选择
all,在计算新分区时使用整个设备。
linux,仅使用现有 Linux 分区。
free,仅使用设备上未使用的空间,不触及任何现有分区。
1,2,3,要使用的逗号分隔分区号列表。
可选,指定 drive 的类型。普通物理硬盘的默认值为 CT_DISK。以下是所有选项的列表
CT_DISK 表示物理硬盘(默认)。
CT_LVM 表示 LVM 卷组。
CT_MD 表示软件 RAID 设备。
CT_DMMULTIPATH 表示多路径设备(已弃用,隐式包含在 CT_DISK 中)。
CT_BCACHE 表示软件 bcache 设备。
CT_BTRFS 表示多设备 Btrfs 文件系统。
CT_NFS 表示 NFS。
CT_TMPFS 表示 tmpfs 文件系统。
<type config:type="symbol">CT_LVM</type>
可选。默认情况下,YaST 会根据情况进行决策。如果已存在不同类型的分区表,则仅当它不包含任何应保留或重用的分区时,才会使用给定类型重新创建它。要在不创建任何分区的情况下使用磁盘,请将此元素设置为 none。以下是所有选项的列表
msdos
gpt
none
<disklabel>gpt</disklabel>
可选,默认值为 false。
此值仅对 type=CT_LVM 驱动器有意义。如果您正在重用一个逻辑卷组并将其设置为 true,则除非在 <partitioning> 部分中指定,否则该组中的所有现有逻辑卷将不会被触及。因此,您可以保留现有逻辑卷而无需指定它们。
<keep_unknown_lv config:type="boolean">false</keep_unknown_lv>
可选,默认值为 true。
在挂载到 / 的 Btrfs 文件系统上启用快照(不适用于其他文件系统,或未挂载到 / 的 Btrfs 文件系统)。
<enable_snapshots config:type="boolean">false</enable_snapshots>
可选,默认值为 false。
启用 Btrfs 子卷配额支持。将此元素设置为 true 将启用文件系统配额支持。但是,您需要为每个子卷设置限制。有关更多信息,请查看 第 4.5.3.3 节,“Btrfs 子卷”。
<quotas config:type="boolean">true</quotas>
use 属性中提供的值决定了如何处理现有数据和分区。all 值意味着整个磁盘将被擦除。如果您需要保留一些带有重要数据的分区,请进行备份并使用 confirm 属性。否则,不会有任何弹出窗口通知您分区被删除。
您可以影响 AutoYaST 在您未自行指定 <device> 条目时对设备的猜测。通常,AutoYaST 会使用它能找到的第一个看起来合理的设备,但您可以配置它跳过某些设备,如下所示
<partitioning config:type="list">
<drive>
<initialize config:type="boolean">true</initialize>
<skip_list config:type="list">
<listentry>
<!-- skip devices that use the usb-storage driver -->
<skip_key>driver</skip_key>
<skip_value>usb-storage</skip_value>
</listentry>
<listentry>
<!-- skip devices that are smaller than 1GB -->
<skip_key>size_k</skip_key>
<skip_value>1048576</skip_value>
<skip_if_less_than config:type="boolean">true</skip_if_less_than>
</listentry>
<listentry>
<!-- skip devices that are larger than 100GB -->
<skip_key>size_k</skip_key>
<skip_value>104857600</skip_value>
<skip_if_more_than config:type="boolean">true</skip_if_more_than>
</listentry>
</skip_list>
</drive>
</partitioning>有关所有可能的 <skip_key> 的列表,请在已安装的系统上运行 yast2 ayast_probe。
下面列出的元素必须放置在以下 XML 结构中
<drive>
<partitions config:type="list">
<partition>
...
</partition>
</partitions>
</drive>指定是否必须创建此分区或逻辑卷,或者它是否已存在。如果设置为 false,您还需要设置 partition_nr、lv_name、label 或 uuid 中的一个,以告诉 AutoYaST 要使用哪个设备。
<create config:type="boolean">false</create>
可选,分区将使用以下方法之一进行加密
luks1:常规 LUKS1 加密。
luks2:常规 LUKS2 加密。
pervasive_luks2:渗透式卷加密。
protected_swap:使用易失性保护密钥加密。
secure_swap:使用易失性安全密钥加密。
random_swap:使用易失性随机密钥加密。
<crypt_method config:type="symbol">luks1</crypt_method>
加密方法选择在 openSUSE Leap 15.2 中引入。要模拟早期版本的行为,请使用 luks1。
如有需要,请参阅 crypt_key 元素以了解如何指定加密密码。
使用常规 LUKS 加密时,可以使用 crypt_pbkdf、crypt_cipher 或 crypt_key_size 自定义加密的多个方面,具体取决于所使用的 LUKS 精确变体。请记住,加密方法及其相应的设置可能会极大地影响完成安装过程所需的 RAM 量。使用默认参数的常规 LUKS2 通常意味着系统需要几 GB 的 RAM 才能加密设备。
分区将被加密,默认值为 false。此元素已弃用。请改用 crypt_method。
<crypt_fs config:type="boolean">true</crypt_fs>
如果 crypt_method 已设置为需要密码的方法(即 luks1、luks2 或 pervasive_luks2),则必需。
<crypt_key>xxxxxxxx</crypt_key>
用于 LUKS 加密的密码。仅当 crypt_method 的值为 luks1 或 luks2 时,此值才有效。字符串的格式和值必须与 cryptsetup 命令的 --cipher 参数兼容。
<crypt_cipher>aes-xts-plain64</crypt_cipher>
用于 LUKS 加密的密钥大小(比特)。仅当 crypt_method 的值为 luks1 或 luks2 时,此值才有效。该值必须是 8 的倍数。可能的密钥大小受所用密码的限制。
<crypt_key_size config:type="integer">256</crypt_key_size>
用于 LUKS2 加密的基于密码的密钥派生函数。这仅在 crypt_method 为 luks2 时相关。可能的值为 pbkdf2、argon2i 和 argon2id。如果省略,设备将使用 cryptsetup 命令的默认函数进行加密。请注意,Argon2 的两种变体都旨在在加密过程中故意消耗大量内存。使用任何这些函数或省略此设置(这很可能导致使用 Argon2)意味着与未加密设置相比,完成安装过程需要更多的 RAM。
<crypt_pbkdf config:type="symbol">argon2id</crypt_pbkdf>
加密设备的 LUKS 标签。这仅在 crypt_method 为 luks2 时相关。
<crypt_label>crypt_home</crypt_label>
您应该至少有一个根分区 (/) 和一个交换分区。
<mount>/</mount><mount>swap</mount>
此分区的挂载选项;有关可用挂载选项,请参阅 man mount。
<fstopt>ro,noatime,user,data=ordered,acl,user_xattr</fstopt>
分区的标签。在格式化设备时(尤其是当 mountby 参数设置为 label 时)以及识别已存在的设备时(请参阅上面的 create)很有用。有关示例,请参阅 man e2label。
<label>mydata</label>
分区的 uuid。仅用于识别现有设备(请参阅上面的 create)。对于新设备无法强制执行 uuid。(请参阅 man uuidgen。)
<uuid>1b4e28ba-2fa1-11d2-883f-b9a761bde3fb</uuid>
分区的大小,例如 4G、4500M 等。/boot 分区和交换分区可以将 auto 作为大小。然后 AutoYaST 会计算一个合理的大小。一个分区可以具有 max 值以使用所有剩余空间。
您还可以以百分比指定大小。因此,10% 将使用硬盘或卷组大小的 10%。您可以根据需要混合使用 auto、max、size 和百分比。
<size>10G</size>
从 openSUSE Leap 15 开始,所有值(包括 auto 和 max)也可以用于调整分区大小。
指定 AutoYaST 是否应格式化分区。如果将 create 设置为 true,那么您也很可能希望将此选项设置为 true。
<format config:type="boolean">false</format>
可选。根分区 (/) 的默认值为 btrfs,数据分区的默认值为 xfs。指定此分区上要使用的文件系统
btrfs
ext2
ext3
ext4
fat
xfs
swap
<filesystem config:type="symbol">ext3</filesystem>
可选,为 mkfs 指定一个选项字符串。仅当您知道自己在做什么时才使用此选项。(请参阅您要使用的文件系统的相关 mkfs 手册页。)
<mkfs_options>-I 128</mkfs_options>
此分区的编号。如果您已将 create=false 或使用 LVM,则可以通过 partition_nr 指定分区。
<partition_nr config:type="integer">2</partition_nr>
partition_id 设置分区的 ID。如果您希望使用与 Linux 分区 131 或交换分区 130 不同的标识符,请使用 partition_id 进行配置。Linux 分区的默认值为 131,交换分区的默认值为 130。
<partition_id config:type="integer">131</partition_id>
FAT16 (MS-DOS): 6 |
NTFS (MS-DOS): 7 |
FAT32 (MS-DOS): 12 |
Extended FAT16 (MS-DOS): 15 |
DIAG,诊断和固件 (MS-DOS, GPT): 18 |
PPC PReP Boot 分区 (MS-DOS, GPT): 65 |
交换 (MS-DOS, GPT, DASD, 隐式): 130 |
Linux (MS-DOS, GPT, DASD): 131 |
Intel Rapid Start Technology (MS-DOS, GPT): 132 |
LVM (MS-DOS, GPT, DASD): 142 |
EFI System Partition (MS-DOS, GPT): 239 |
MD RAID (MS-DOS, GPT, DASD): 253 |
BIOS 引导 (GPT): 257 |
Windows 基本数据 (GPT): 258 |
EFI (GPT): 259 |
Microsoft 保留 (GPT): 261 |
可选。允许的值为 primary。使用 msdos 分区表时,此元素将分区类型设置为 primary。当使用 gpt 分区表时,此值将被忽略,因为在这种情况下不存在这种区别。
<partition_type>primary</partition_type>
除了分区号,您还可以告诉 AutoYaST 通过 device、label、uuid、path 或 id 挂载分区,这些是 udev 路径和 udev id(请参阅 /dev/disk/...)。
请参阅上面的 label 和 uuid 文档。默认值取决于 YaST,通常是 id。
<mountby config:type="symbol">label</mountby>
要为 Btrfs 类型文件系统创建的子卷列表。此键仅对 Btrfs 类型文件系统有意义。(有关更多信息,请参阅 第 4.5.3.3 节,“Btrfs 子卷”。)
如果未为分区描述定义 subvolumes 部分,AutoYaST 将为给定的挂载点创建一组预定义的子卷。
<subvolumes config:type="list"> <path>tmp</path> <path>opt</path> <path>srv</path> <path>var</path> ... </subvolumes>
确定是否应创建 Btrfs 子卷。默认设置为 true。设置为 false 时,不会创建任何子卷。
设置 Btrfs 子卷前缀名称。如果不需要前缀,则必须将其设置为空值
<subvolumes_prefix><![CDATA[]]></subvolumes_prefix>
默认设置为 @。
如果此分区位于卷组中的逻辑卷上,请在此处指定逻辑卷名称(请参阅驱动器配置中的 type 参数)。
<lv_name>opt_lv</lv_name>
一个整数,用于配置 LVM 条带化。指定您要跨多少个设备进行条带化(分散数据)。
<stripes config:type="integer">2</stripes>
指定每个块的大小(KB)。
<stripesize config:type="integer">4</stripesize>
如果这是卷组(LVM)使用的物理分区(一部分),则需要在此处指定卷组的名称。
<lvm_group>system</lvm_group>
如果 LVM 逻辑卷应为 LVM 精简池,则 pool 必须设置为 true。
<pool config:type="boolean">true</pool>
用作此精简逻辑卷数据存储的 LVM 精简池的名称。如果此项设置为非空,则表示该卷是所谓的精简逻辑卷。
<used_pool>my_thin_pool</used_pool>
如果此物理卷是 RAID 阵列的一部分,请指定 RAID 阵列的名称。
<raid_name>/dev/md/0</raid_name>
指定 RAID 选项。在 partition 级别设置 RAID 选项已弃用。请参阅 第 4.5.6 节,“软件 RAID”。
如果此设备用作 bcache 后备设备,请指定 bcache 设备的名称。有关更多详细信息,请参阅 第 4.5.8 节,“bcache 配置”。
<bcache_backing_for>/dev/bcache0</bcache_backing_for>
如果此设备用作 bcache 缓存设备,请指定 bcache 设备的名称。有关更多详细信息,请参阅 第 4.5.8 节,“bcache 配置”。
<bcache_caching_for config:type="list"><listentry>/dev/bcache0</listentry></bcache_caching_for>
从 openSUSE Leap 15 开始,调整大小适用于物理磁盘分区和 LVM 卷
<resize config:type="boolean">false</resize>
如 第 4.5.3.2 节,“分区配置” 中所述,可以为每个 Btrfs 文件系统定义一组子卷。最简单的形式是使用路径列表指定
<subvolumes config:type="list"> <path>usr/local</path> <path>tmp</path> <path>opt</path> <path>srv</path> <path>var</path> </subvolumes>
但是,可以为每个子卷指定附加设置。例如,我们可能希望设置配额或禁用写时复制机制。为此,可以按如下示例所示扩展列表中的任何元素
<subvolumes config:type="list">
<listentry>usr/local</listentry>
<listentry>
<path>tmp</path>
<referenced_limit>1 GiB</referenced_limit>
</listentry>
<listentry>opt</listentry>
<listentry>srv</listentry>
<listentry>
<path>var/lib/pgsql</path>
<copy_on_write config:type="boolean">false</copy_on_write>
</listentry>
</subvolumes>path子卷的挂载点。
<path>tmp</tmp>
必需。如果未指定 path,AutoYaST 将忽略该子卷。
copy-on-write是否应为子卷启用写时复制。
<copy-on-write config:type="boolean">false</copy-on-write>
可选。默认值为 false。
referenced_limit为子卷设置配额。
<referenced_limit>1 GiB</referenced_limit>
可选。默认值为 unlimited。Btrfs 支持两种限制:referenced 和 exclusive。目前,仅支持前者。
如果存在用于发行版的默认子卷(例如 openSUSE Leap 中的 @),则此默认子卷的名称会自动添加到定义的子卷名称前。可以通过在 第 4.5.3.1 节,“驱动器配置” 中设置 subvolumes_prefix 来禁用此行为。
<subvolumes_prefix><![CDATA[]]></subvolumes_prefix>
AutoYaST 允许通过将 disklabel 设置为 none 来使用整个磁盘而不创建任何分区,如 第 4.5.3.1 节,“驱动器配置” 中所述。在这种情况下,drive 中的第一个 partition 的配置将应用于整个磁盘。
在下面的示例中,我们使用第二个磁盘 (/dev/sdb) 作为 /home 文件系统。
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<create config:type="boolean">true</create>
<format config:type="boolean">true</format>
<mount>/</mount>
<size>max</size>
</partition>
</partitions>
</drive>
<drive>
<device>/dev/sdb</device>
<disklabel>none</disklabel>
<partitions config:type="list">
<partition>
<format config:type="boolean">true</format>
<mount>/home</mount>
</partition>
</partitions>
</drive>此外,整个磁盘可以用作 LVM 物理卷或软件 RAID 成员。有关设置 LVM 或软件 RAID 的更多详细信息,请参阅 第 4.5.5 节,“逻辑卷管理器 (LVM)” 和 第 4.5.6 节,“软件 RAID”。
出于向后兼容性原因,可以通过将 <partition_nr> 元素设置为 0 来实现相同的结果。但是,<partition_nr> 元素的此用法已从 openSUSE Leap 15 开始弃用。
使用方法时,AutoYaST 可以从相当不完整的配置文件中创建分区计划。以下配置文件显示了如何描述分区布局的一些详细信息,并让 AutoYaST 完成其余工作。
以下是单驱动器系统的示例,该系统未预分区,应根据所述的预定义分区计划进行自动分区。如果您未指定设备,它将自动检测。
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<use>all</use>
</drive>
</partitioning>更详细的示例显示了如何处理现有分区和多个驱动器。
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<use>all</use>
<partitions config:type="list">
<partition>
<mount>/</mount>
<size>10G</size>
</partition>
<partition>
<mount>swap</mount>
<size>1G</size>
</partition>
</partitions>
</drive>
<drive>
<device>/dev/sdb</device>
<use>free</use>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<mount>/data1</mount>
<size>15G</size>
</partition>
<partition>
<filesystem config:type="symbol">xfs</filesystem>
<mount>/data2</mount>
<size>auto</size>
</partition>
</partitions>
</drive>
</partitioning>
通常不需要这样做,因为 AutoYaST 可以自动逐个删除分区。但您需要该选项,以便 AutoYaST 清除分区表而不是单独删除分区。
转到 drive 部分并添加
<initialize config:type="boolean">true</initialize>
通过此设置,AutoYaST 将在开始分析实际分区并计算其分区计划之前删除分区表。当然,这意味着您无法保留任何现有分区。
默认情况下,要挂载的文件系统在 /etc/fstab 中通过设备名称进行标识。此标识可以更改,以便通过搜索 UUID 或卷标签来查找文件系统。请注意,并非所有文件系统都可以通过 UUID 或卷标签挂载。要指定如何挂载分区,请使用具有 symbol 类型的 mountby 属性。可能的选项有
device (默认)
label
UUID
如果您选择使用标签挂载新分区,请使用 label 属性指定其值。
在 /etc/fstab 的第四个字段中添加任何有效的挂载选项。多个选项用逗号分隔。可能的 fstab 选项
ro)文件系统没有写入权限。默认值为 false。
noatime)读取文件时,访问时间不会更新。默认值为 false。
user)文件系统可以由普通用户挂载。默认值为 false。
ordered, journal, writeback)journal所有数据在写入主文件系统之前都提交到日志。
ordered所有数据在元数据提交到日志之前直接写入主文件系统。
writeback数据顺序不保留。
acl)在文件系统上启用访问控制列表。
user_xattr)允许在文件系统上使用扩展用户属性。
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<format config:type="boolean">true</format>
<fstopt>ro,noatime,user,data=ordered,acl,user_xattr</fstopt>
<mount>/local</mount>
<mountby config:type="symbol">uuid</mountby>
<partition_id config:type="integer">131</partition_id>
<size>10G</size>
</partition>
</partitions>不同的文件系统类型支持不同的选项。在设置它们之前,请仔细查看文档。
在某些情况下,您应该保持分区不变,只格式化特定的目标分区,而不是从头开始创建它们。例如,如果不同的 Linux 安装共存,或者您安装了另一个操作系统,您可能不想擦除这些。您可能还想保持数据分区不变。
此类场景需要对目标系统和硬盘有特定的了解。根据场景,您可能需要了解目标硬盘的精确分区表以及分区 ID、大小和编号。有了这些数据,您可以告诉 AutoYaST 保留某些分区,格式化其他分区,并在需要时创建新分区。
以下示例将保留分区 1、2 和 5,删除分区 6 以创建两个新分区。所有剩余分区将仅被格式化。
<partitioning config:type="list">
<drive>
<device>/dev/sdc</device>
<partitions config:type="list">
<partition>
<create config:type="boolean">false</create>
<format config:type="boolean">true</format>
<mount>/</mount>
<partition_nr config:type="integer">1</partition_nr>
</partition>
<partition>
<create config:type="boolean">false</create>
<format config:type="boolean">false</format>
<partition_nr config:type="integer">2</partition_nr>
<mount>/space</mount>
</partition>
<partition>
<create config:type="boolean">false</create>
<format config:type="boolean">true</format>
<filesystem config:type="symbol">swap</filesystem>
<partition_nr config:type="integer">5</partition_nr>
<mount>swap</mount>
</partition>
<partition>
<format config:type="boolean">true</format>
<mount>/space2</mount>
<size>5G</size>
</partition>
<partition>
<format config:type="boolean">true</format>
<mount>/space3</mount>
<size>max</size>
</partition>
</partitions>
<use>6</use>
</drive>
</partitioning>最后一个示例需要精确了解现有分区表和应保留的分区的分区号。但是,在某些情况下,此类数据可能不可用,尤其是在具有不同硬盘类型和配置的混合硬件环境中。以下场景适用于具有非 Linux OS 的系统,并为 Linux 安装指定了区域。
在此场景中,如 图 4.1,“保留分区” 所示,AutoYaST 不会创建新分区。相反,它会在系统上搜索某些分区类型,并根据控制文件中的分区计划使用它们。在这种情况下未给出分区号,仅给出挂载点和分区类型(可以提供额外的配置数据,例如文件系统选项、加密和文件系统类型)。
<partitioning config:type="list">
<drive>
<partitions config:type="list">
<partition>
<create config:type="boolean">false</create>
<format config:type="boolean">true</format>
<mount>/</mount>
<partition_id config:type="integer">131</partition_id>
</partition>
<partition>
<create config:type="boolean">false</create>
<format config:type="boolean">true</format>
<filesystem config:type="symbol">swap</filesystem>
<partition_id config:type="integer">130</partition_id>
<mount>swap</mount>
</partition>
</partitions>
</drive>
</partitioning>当 AutoYaST 探测存储设备时,尚未分析配置文件中的分区部分。在某些情况下,不清楚应该使用哪个密钥来解锁设备。例如,当定义了多个加密密钥时,可能会发生这种情况。为了解决这个问题,AutoYaST 将在所有加密设备上尝试所有定义的密钥,直到找到一个可用的密钥。
要配置 LVM,首先使用上述的正常分区方法创建一个物理卷。
以下示例显示了如何在 partitioning 资源中为 LVM 做准备。在设备 /dev/sda1 上创建了一个未格式化的类型为 LVM 的分区,并带有卷组 system。此分区将使用驱动器上的所有可用空间。
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<create config:type="boolean">true</create>
<lvm_group>system</lvm_group>
<partition_type>primary</partition_type>
<partition_id config:type="integer">142</partition_id>
<partition_nr config:type="integer">1</partition_nr>
<size>max</size>
</partition>
</partitions>
<use>all</use>
</drive>
</partitioning><partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<lvm_group>system</lvm_group>
<partition_type>primary</partition_type>
<size>max</size>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/system</device>
<type config:type="symbol">CT_LVM</type>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<lv_name>user_lv</lv_name>
<mount>/usr</mount>
<size>15G</size>
</partition>
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<lv_name>opt_lv</lv_name>
<mount>/opt</mount>
<size>10G</size>
</partition>
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<lv_name>var_lv</lv_name>
<mount>/var</mount>
<size>1G</size>
</partition>
</partitions>
<pesize>4M</pesize>
<use>all</use>
</drive>
</partitioning>可以将逻辑卷的 size 设置为 max。当然,您只能为一个逻辑卷使用 max。您不能将同一卷组中的两个逻辑卷都设置为 max。
openSUSE Leap 15.2 中对软件 RAID 设备的支持已大大改进。
如有需要,请参阅 第 4.5.6.1 节,“使用已弃用语法” 以了解有关旧式指定软件 RAID 的更多详细信息,旧式语法仍受支持以实现向后兼容性。
使用 AutoYaST,您可以创建和组装软件 RAID 设备。支持的 RAID 级别如下
此级别可提高您的磁盘性能。在此模式下没有冗余。如果其中一个驱动器崩溃,将无法恢复数据。
此模式提供最佳冗余。可与两个或更多磁盘一起使用。所有数据在所有磁盘上都保持精确副本。只要至少有一个磁盘仍在工作,就不会丢失数据。用于此类型 RAID 的分区应具有大致相同的大小。
此模式结合了大量磁盘的管理,同时仍保持一定的冗余。此模式可用于三个或更多磁盘。如果一个磁盘出现故障,所有数据仍然完好无损。如果两个磁盘同时出现故障,则所有数据都会丢失。
此模式允许通过多个控制器访问同一物理设备,以实现控制器卡故障冗余。此模式可与至少两个设备一起使用。
与 LVM 类似,AutoYaST 配置文件中的软件 RAID 定义由两个不同的部分组成
确定哪些磁盘或分区将用作 RAID 成员。为此,您需要在这些设备中设置 raid_name 元素。
通过使用专用 drive 部分定义 RAID 本身。
以下示例显示了一个 RAID10 配置,它使用第一个磁盘的一个分区和第二个磁盘的另一个分区作为 RAID 成员
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<mount>/</mount>
<size>20G</size>
</partition>
<partition>
<raid_name>/dev/md/0</raid_name>
<size>max</size>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/sdb</device>
<disklabel>none</disklabel>
<partitions config:type="list">
<partition>
<raid_name>/dev/md/0</raid_name>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/md/0</device>
<partitions config:type="list">
<partition>
<mount>/home</mount>
<size>40G</size>
</partition>
<partition>
<mount>/srv</mount>
<size>10G</size>
</partition>
</partitions>
<raid_options>
<chunk_size>4</chunk_size>
<parity_algorithm>near_2</parity_algorithm>
<raid_type>raid10</raid_type>
</raid_options>
<use>all</use>
</drive>
</partitioning>如果您不想在软件 RAID 中创建分区,请将 disklabel 设置为 none,就像您对常规磁盘所做的那样。在下面的示例中,为简洁起见,仅显示 RAID drive 部分
<drive>
<device>/dev/md/0</device>
<disklabel>none</disklabel>
<partitions config:type="list">
<partition>
<mount>/home</mount>
<size>40G</size>
</partition>
</partitions>
<raid_options>
<chunk_size>4</chunk_size>
<parity_algorithm>near_2</parity_algorithm>
<raid_type>raid10</raid_type>
</raid_options>
<use>all</use>
</drive>如果启用了安装程序自更新功能,则可以为 openSUSE Leap 15 分区软件 RAID。但是,在以前的版本中不支持这种情况,因此定义软件 RAID 的方式略有不同。
本节定义了旧式配置的外观,因为它仍然受支持以实现向后兼容性。
使用此已弃用语法配置 RAID 时,请记住以下几点
RAID 设备始终为 /dev/md。
属性 partition_nr 用于确定 MD 设备号。如果 partition_nr 等于 0,则配置 /dev/md/0。添加多个 partition 部分意味着您希望拥有多个软件 RAID (/dev/md/0、/dev/md/1 等)。
所有 RAID 特定选项都包含在 raid_options 资源中。
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<partitions config:type="list">
<partition>
<partition_id config:type="integer">253</partition_id>
<format config:type="boolean">false</format>
<raid_name>/dev/md0</raid_name>
<raid_type>raid1</raid_type>
<size>4G</size>
</partition>
<!-- Insert a configuration for the regular partitions located on
/dev/sda here (for example / and swap) -->
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/sdb</device>
<partitions config:type="list">
<partition>
<format config:type="boolean">false</format>
<partition_id config:type="integer">253</partition_id>
<raid_name>/dev/md0</raid_name>
<size>4gb</size>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/md</device>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">ext4</filesystem>
<format config:type="boolean">true</format>
<mount>/space</mount>
<partition_id config:type="integer">131</partition_id>
<partition_nr config:type="integer">0</partition_nr>
<raid_options>
<chunk_size>4</chunk_size>
<parity_algorithm>near_2</parity_algorithm>
<raid_type>raid10</raid_type>
</raid_options>
</partition>
</partitions>
<use>all</use>
</drive>
</partitioning>以下元素必须放置在以下 XML 结构中
<partition>
<raid_options>
...
</raid_options>
</partition>可以表示为带有相应单位的数字(例如,32M)或仅表示为数字。如果省略单位,则默认使用千字节。不要为 RAID1 指定 chunk_size。请记住,raid1 是默认类型。
<chunk_size>4</chunk_size>
可能的值是
left_asymmetric、left_symmetric、right_asymmetric、right_symmetric、first、last、first_6、left_asymmetric_6、left_symmetric_6、right_asymmetric_6、right_symmetric_6、near_2、offset_2、far_2、near_3、offset_3 和 far_3。
为了与以前版本的 AutoYaST 向后兼容,还识别以下别名
parity_first、parity_last、parity_first_6、n2、o2、f2、n3、o3 和 f3。
每个 RAID 接受的值取决于 RAID 级别(例如,raid5)和 RAID 中的设备数量。鉴于 RAID0 或 RAID1 不提供任何奇偶校验,请勿为这些设备指定此选项。
<parity_algorithm>left_asymmetric</parity_algorithm>
可能的值有:raid0、raid1、raid5、raid6 和 raid10。
<raid_type>raid1</raid_type>
默认值为 raid1。
此列表包含物理设备的顺序
<device_order config:type="list"><device>/dev/sdb2</device><device>/dev/sda1</device>...</device_order>
这是可选的,默认按字母顺序排列。
AutoYaST 可以处理多路径设备。要利用它们,您需要启用多路径支持,如 示例 4.16,“使用多路径设备” 所示。或者,您可以在内核命令行上使用以下参数:LIBSTORAGE_MULTIPATH_AUTOSTART=ON。
<general>
<storage>
<start_multipath config:type="boolean">true</start_multipath>
</storage>
</general>
<partitioning>
<drive>
<partitions config:type="list">
<partition>
<size>20G</size>
<mount>/</mount>
<filesystem config:type="symbol">ext4</filesystem>
</partition>
<partition>
<size>auto</size>
<mount>swap</mount>
</partition>
</partitions>
<type config:type="symbol">CT_DISK</type>
<use>all</use>
</drive>
</partitioning>如果您想指定设备,可以使用全球标识符 (WWID)、其设备名称(例如,/dev/dm-0)、/dev/disk 下引用多路径设备或其任何路径的任何其他路径。
例如,给定 示例 4.17,“列出多路径设备” 中的 multipath 列表,您可以使用 /dev/mapper/14945540000000000f86756dce9286158be4c6e3567e75ba5、/dev/dm-3、/dev/disk 下的任何其他相应路径(如 示例 4.18,“使用 WWID 识别多路径设备” 所示),或其任何路径(/dev/sda 或 /dev/sdb)。
# multipath -l 14945540000000000f86756dce9286158be4c6e3567e75ba5 dm-3 ATA,VIRTUAL-DISK size=40G features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 2:0:0:0 sda 8:0 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 3:0:0:0 sdb 8:16 active ready running
<drive>
<partitions config:type="list">
<device>/dev/mapper/14945540000000000f86756dce9286158be4c6e3567e75ba5</device>
<partition>
<size>20G</size>
<mount>/</mount>
<filesystem config:type="symbol">ext4</filesystem>
</partition>
</partitions>
<type config:type="symbol">CT_DISK</type>
<use>all</use>
</drive>
bcache 是一种缓存系统,它允许使用多个快速驱动器来加速对一个或多个较慢驱动器的访问。例如,您可以通过使用一个快速驱动器作为缓存来提高大型(但慢速)驱动器的性能。
有关 openSUSE Leap 上的 bcache 的更多信息,另请参阅博客文章:https://www.suse.com/c/combine-the-performance-of-solid-state-drive-with-the-capacity-of-a-hard-drive-with-bcache-and-yast/。
要设置 bcache 设备,AutoYaST 需要一个指定以下内容的配置文件
要将(慢速)块设备设置为后备设备,请使用 bcache_backing_for 元素。
要将(快速)块设备设置为缓存设备,请使用 bcache_caching_for 元素。您可以使用同一设备来加速对多个驱动器的访问。
要指定 bcache 设备的布局,请使用 drive 部分并将 type 元素设置为 CT_BCACHE。bcache 设备的布局可能包含分区。
bcache 定义 #<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<type config:type="symbol">CT_DISK</type>
<use>all</use>
<enable_snapshots config:type="boolean">true</enable_snapshots>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">btrfs</filesystem>
<mount>/</mount>
<create config:type="boolean">true</create>
<size>max</size>
</partition>
<partition>
<filesystem config:type="symbol">swap</filesystem>
<mount>swap</mount>
<create config:type="boolean">true</create>
<size>2GiB</size>
</partition>
</partitions>
</drive>
<drive>
<type config:type="symbol">CT_DISK</type>
<device>/dev/sdb</device>
<disklabel>msdos</disklabel>
<use>all</use>
<partitions config:type="list">
<partition>
<!-- It can serve as caching device for several bcaches -->
<bcache_caching_for config:type="list">
<listentry>/dev/bcache0</listentry>
</bcache_caching_for>
<size>max</size>
</partition>
</partitions>
</drive>
<drive>
<type config:type="symbol">CT_DISK</type>
<device>/dev/sdc</device>
<use>all</use>
<disklabel>msdos</disklabel>
<partitions config:type="list">
<partition>
<!-- It can serve as backing device for one bcache -->
<bcache_backing_for>/dev/bcache0</bcache_backing_for>
</partition>
</partitions>
</drive>
<drive>
<type config:type="symbol">CT_BCACHE</type>
<device>/dev/bcache0</device>
<bcache_options>
<cache_mode>writethrough</cache_mode>
</bcache_options>
<use>all</use>
<partitions config:type="list">
<partition>
<mount>/data</mount>
<size>20GiB</size>
</partition>
<partition>
<mount>swap</mount>
<filesystem config:type="symbol">swap</filesystem>
<size>1GiB</size>
</partition>
</partitions>
</drive>
</partitioning>目前,bcache_options 部分中唯一支持的选项是下面描述的 cache_mode。
bcache 的缓存模式。可能的值有
writethrough
writeback
writearound
none
<cache_mode>writethrough</cache_mode>
Btrfs 支持创建跨越多个存储设备的单个卷,提供类似于软件 RAID 实现的功能,例如 Linux 内核的内置 mdraid 子系统。多设备 Btrfs 相对于其他一些 RAID 实现具有优势。例如,您可以动态地将多设备 Btrfs 卷从一个 RAID 级别迁移到另一个 RAID 级别,RAID 级别可以按文件设置,等等。但是,这些功能并非所有都在 openSUSE Leap 15.6 中完全支持。
使用 AutoYaST,可以通过指定类型为 CT_BTRFS 的驱动器来配置多设备 Btrfs。device 属性用作任意名称以标识每个多设备 Btrfs。
与 RAID 一样,您需要首先创建所有块设备(例如,分区、LVM 逻辑卷等),并将它们分配给您希望在这些块设备上创建的 Btrfs 文件系统。
以下示例显示了一个简单的多设备 Btrfs 配置
<partitioning config:type="list">
<drive>
<device>/dev/sda</device>
<disklabel>none</disklabel>
<partitions>
<partition>
<btrfs_name>root_fs</btrfs_name>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>/dev/sdb</device>
<disklabel>gpt</disklabel>
<partitions>
<partition>
<partition_nr>1</partition_nr>
<size>4gb</size>
<filesystem>ext4</filesystem>
<btrfs_name>root_fs</btrfs_name>
</partition>
</partitions>
<use>all</use>
</drive>
<drive>
<device>root_fs</device>
<type config:type="symbol">CT_BTRFS</type>
<partitions>
<partition config:type="list>
<mount>/</mount>
</partition>
</partitions>
<btrfs_options>
<raid_leve>raid1</raid_level>
<metadata_raid_leve>raid1</metadata_raid_level>
</btrfs_options>
</drive>
</partitioning>支持的数据和元数据 RAID 级别为:default、single、dup、raid0、raid1 和 raid10。默认情况下,文件系统元数据在两个设备之间镜像,数据则跨所有设备进行条带化。如果只有一个设备存在,元数据将在该设备上复制。
配置多设备 Btrfs 文件系统时,请记住以下几点
设备需要指示 btrfs_name 属性才能包含在多设备 Btrfs 文件系统中。
所有 Btrfs 特定选项都包含在 CT_BTRFS 驱动器的 btrfs_options 资源中。
AutoYaST 允许在网络文件系统 (NFS) 共享上安装 openSUSE Leap。为此,您必须创建一个类型为 CT_NFS 的驱动器,并将 NFS 共享名称 (SERVER:PATH) 作为设备名称提供。有关挂载点的信息包含在其第一个分区部分中。请注意,对于 NFS 驱动器,仅考虑第一个分区。
有关系统安装后如何配置 NFS 客户端和服务器的更多信息,请参阅 第 4.20 节,“NFS 客户端和服务器”。
<partitioning config:type="list">
<drive>
<device>192.168.1.1:/exports/root_fs</device>
<type config:type="symbol">CT_NFS</type>
<use>all</use>
<partitions config:type="list">
<partition>
<mount>/</mount>
<fstopt>nolock</fstopt>
</partition>
</partitions>
</drive>
</partitioning>AutoYaST 通过将 type 元素设置为 CT_TMPFS 来支持 tmpfs 虚拟文件系统的定义。每个 partition 部分都表示一个 tmpfs 文件系统。
tmpfs 定义 # <partitioning config:type="list">
<drive>
<type config:type="symbol">CT_TMPFS</type>
<partitions config:type="list">
<partition>
<mount>/srv</mount>
<fstopt>size=512M</fstopt>
</partition>
<partition>
<mount>/temp</mount>
</partition>
</partitions>
<drive>
<partitioning>
tmpfs 设备与 Ext4 或 Btrfs 等常规文件系统不同。因此,唯一相关的元素是必需的 mount 和 fstopt。后者用于设置文件系统属性,例如其大小限制、模式等。您可以在 tmpfs 手册页中找到有关已知选项的附加信息。
使用 iscsi-client 资源,您可以将目标机器配置为 iSCSI 客户端。
<iscsi-client>
<initiatorname>iqn.2013-02.de.suse:01:e229358d2dea</initiatorname>
<targets config:type="list">
<listentry>
<authmethod>None</authmethod>
<portal>192.168.1.1:3260</portal>
<startup>onboot</startup>
<target>iqn.2001-05.com.doe:test</target>
<iface>default</iface>
</listentry>
</targets>
<version>1.0</version>
</iscsi-client>
InitiatorName 是 /etc/iscsi/initiatorname.iscsi 中的一个值。如果您有 iBFT,此值将从那里添加,并且您只能在 BIOS 设置中更改它。
YaST 模块的版本。默认值:1.0
目标列表。每个条目包含
身份验证方法:无/CHAP
门户地址
值:manual/onboot
目标名称
接口名称
使用 fcoe_cfg 资源,您可以配置以太网光纤通道 (FCoE)。
<fcoe-client>
<fcoe_cfg>
<DEBUG>no</DEBUG>
<USE_SYSLOG>yes</USE_SYSLOG>
</fcoe_cfg>
<interfaces config:type="list">
<listentry>
<dev_name>eth3</dev_name>
<mac_addr>01:000:000:000:42:42</mac_addr>
<device>Gigabit 1313</device>
<vlan_interface>200</vlan_interface>
<fcoe_vlan>eth3.200</fcoe_vlan>
<fcoe_enable>yes</fcoe_enable>
<dcb_required>yes</dcb_required>
<auto_vlan>no</auto_vlan>
<dcb_capable>no</dcb_capable>
<cfg_device>eth3.200</cfg_device>
</listentry>
</interfaces>
<service_start>
<fcoe config:type="boolean">true</fcoe>
<lldpad config:type="boolean">true</lldpad>
</service_start>
</fcoe-client>值:yes/no
DEBUG 用于启用或禁用 fcoe 服务脚本和 fcoemon 的调试消息。
如果设置为 yes,USE_SYSLOG 消息将发送到系统日志。
网卡列表,包括 VLAN 和 FCoE 配置的状态。
值:yes/no
启用或禁用服务 fcoe 和 lldpad 的启动时间。
启动 fcoe 服务意味着启动以太网光纤通道服务守护程序 fcoemon,它控制 FCoE 接口并与 lldpad 守护程序建立连接。
lldpad 服务提供链路层发现协议代理守护程序 lldpad,它将 DCB(数据中心桥接)功能和接口配置信息通知 fcoemon。
语言、时区和键盘设置。
<language>
<language>en_GB</language>
<languages>de_DE,en_US</languages>
</language>主要语言
用逗号分隔的辅助语言
可用语言列表可在 /usr/share/YaST2/data/languages 下找到。
如果主语言的配置值未知,它将重置为默认值 en_US。
<timezone>
<hwclock>UTC</hwclock>
<timezone>Europe/Berlin</timezone>
</timezone>硬件时钟是使用本地时间还是 UTC。
值:localtime/UTC。
时区。
可用时区列表可在 /usr/share/YaST2/data/timezone_raw.ycp 下找到
<keyboard>
<keymap>german</keymap>
</keyboard>键盘布局
键映射代码值或键映射别名值均有效。可用条目列表可在 /usr/share/YaST2/lib/y2keyboard/keyboards.rb 中找到。例如,english-us, us, english-uk, uk.
模式或包配置如下
<software>
<patterns config:type="list">
<pattern>directory_server</pattern>
</patterns>
<packages config:type="list">
<package>apache</package>
<package>postfix</package>
</packages>
<do_online_update config:type="boolean">true</do_online_update>
</software>这些值是真实的包或模式名称。如果由于升级而更改了包名称,您也需要调整这些设置。
可以使用正则表达式指定包和模式名称。在这种情况下,AutoYaST 将选择所有与表达式匹配的包或模式。请注意,此类表达式必须用斜杠括起来。在 示例 4.29,“使用正则表达式进行包选择” 中,所有名称以 nginx 开头的包都将被选中(例如,nginx 和 nginx-macros)。
<software>
<packages config:type="list">
<package>/nginx.*/</package>
</packages>
</software>您可以在安装过程中使用镜像来加快安装速度。
<!-- note! this is not in the software section! --> <deploy_image> <image_installation config:type="boolean">false</image_installation> </deploy_image>
除了 DVD-ROM 上可用的安装包之外,您还可以添加外部包,包括自定义内核。自定义内核包必须与 SUSE 包兼容,并且必须将内核文件安装到相同的位置。
与早期版本不同,您不需要在控制文件中使用特殊资源来安装自定义和外部包。相反,您需要重新创建包数据库并使用源存储库中的任何新包或新包版本更新它。
为此任务提供了一个脚本,该脚本将查询存储库中可用的包并创建包数据库。使用命令 /usr/bin/create_package_descr。它可以在 openSUSE Build Service 的 inst-source-utils 包中找到。创建数据库时,所有语言都将重置为英语。
未打包的 DVD 位于 /usr/local/DVDs/LATEST。
>cp /tmp/inst-source-utils-2016.7.26-1.2.noarch.rpm /usr/local/DVDs/LATEST/suse/noarch>cd /usr/local/DVDs/LATEST/suse>create_package_descr -d /usr/local/CDs/LATEST/suse
在上述示例中,目录 /usr/local/CDs/LATEST/suse 包含依赖于架构(例如 x86_64)和独立于架构的包(noarch)。这在其他架构上可能有所不同。
此方法的优点是您可以保持一个固定且更新的最新存储库。此外,此方法使自定义 CD-ROM 的创建更加容易。
要添加您自己的模块(例如 SDK (SUSE Software Development Kit)),请将文件 add_on_products.xml 添加到安装源的根目录中。
以下示例显示了如何将 SDK 模块添加到基本产品存储库。完整的 SDK 存储库将存储在目录 /sdk 中。
add_on_products.xml #此文件描述了基本产品中包含的 SDK 模块。
<?xml version="1.0"?>
<add_on_products xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<product_items config:type="list">
<product_item>
<name>SUSE Linux Enterprise Software Development Kit</name>
<url>relurl:////sdk?alias=SLE_SDK</url>
<path>/</path>
<-- Users are asked whether to add such a product -->
<ask_user config:type="boolean">false</ask_user>
<-- Defines the default state of pre-selected state in case of ask_user used. -->
<selected config:type="boolean">true</selected>
</product_item>
</product_items>
</add_on_products>除了这种特殊情况,所有其他模块、扩展和附加产品都可以在 AutoYaST 安装期间从几乎任何其他位置添加。
即使没有任何产品或模块信息的存储库也可以在安装期间添加。这些被称为 other add-ons。
<add-on>
<add_on_products config:type="list">
<listentry>
<media_url>cd:///sdk</media_url>
<product>sle-sdk</product>
<alias>SLE SDK</alias>
<product_dir>/</product_dir>
<priority config:type="integer">20</priority>
<ask_on_error config:type="boolean">false</ask_on_error>
<confirm_license config:type="boolean">false</confirm_license>
<name>SUSE Linux Enterprise Software Development Kit</name>
</listentry>
</add_on_products>
<add_on_others config:type="list">
<listentry>
<media_url>https://download.opensuse.org/repositories/YaST:/Head/openSUSE_Leap_15.2/</media_url>
<alias>yast2_head</alias>
<priority config:type="integer">30</priority>
<name>Latest YaST2 packages from OBS</name>
</listentry>
</add_on_others>
</add-on>add_on_others 和 add_on_products 部分支持相同的值
产品 URL。可以有前缀 cd:///、http://、ftp:// 等。此条目是强制性的。
如果您使用多产品介质,例如 SUSE Linux Enterprise Packages DVD,则 URL 路径应指向多产品介质的根目录。特定的产品目录是使用 product_dir 值(见下文)选择的。
如果附加组件是产品,则为内部产品名称。zypper products 命令显示已安装产品的名称。
存储库别名。由用户定义。
可选子路径。这仅应用于多产品介质,例如 SUSE Linux Enterprise Packages DVD。
设置存储库 libzypp 优先级。优先级 1 最高。数字越大,优先级越低。默认值为 99。
AutoYaST 可以要求用户提供附加产品、模块或扩展,而不是在给定位置找不到存储库时报告超时错误。将 ask_on_error 设置为 true(默认值为 false)。
用户需要确认许可证。默认值为 false。
存储库名称。zypper lr 命令显示已添加存储库的名称。
要在 AutoYaST 中使用未签名安装源,请在 AutoYaST 控制文件中使用以下配置关闭检查。
您只能在自动安装过程的第一阶段禁用签名检查。在第二阶段,已安装系统的配置优先于 AutoYaST 配置。
下面列出的元素必须放置在以下 XML 结构中
<general>
<signature-handling>
...
</signature-handling>
</general>所有选项的默认值均为 false。如果某个选项设置为 false,并且包或存储库未能通过各自的测试,它将被静默忽略,并且不会被安装。请注意,将这些选项中的任何一个设置为 true 都存在潜在的安全风险。在使用第三方来源的包或存储库时,切勿这样做。
如果设置为 true,AutoYaST 将接受未签名的文件,例如内容文件。
<accept_unsigned_file config:type="boolean" >true</accept_unsigned_file>
如果设置为 true,AutoYaST 将接受内容文件中没有校验和的文件。
<accept_file_without_checksum config:type="boolean" >true</accept_file_without_checksum>
如果设置为 true,即使签名验证失败,AutoYaST 也会接受已签名的文件。
<accept_verification_failed config:type="boolean" >true</accept_verification_failed>
如果设置为 true,AutoYaST 将接受并导入安装源中新的 GPG 密钥到其数据库中,例如用于签名内容文件的密钥。
<accept_unknown_gpg_key config:type="boolean" >true</accept_unknown_gpg_key>
将此选项设置为 true 以接受您尚未信任的已知密钥。
<accept_non_trusted_gpg_key config:type="boolean" >true</accept_non_trusted_gpg_key>
如果设置为 true,AutoYaST 将接受并导入安装源上的新 GPG 密钥到其数据库中。
<import_gpg_key config:type="boolean" >true</import_gpg_key>
可以为每个附加产品、模块或扩展单独配置签名处理。以下元素必须位于各个附加产品、模块或扩展的 signature-handling 部分之间。所有设置都是可选的。如果未配置,则使用 general 部分的全局签名处理。
如果设置为 true,AutoYaST 将接受未签名的文件,例如此附加产品的内容文件。
<accept_unsigned_file config:type="boolean" >true</accept_unsigned_file>
如果设置为 true,AutoYaST 将接受内容文件中没有校验和的此附加文件。
<accept_file_without_checksum config:type="boolean" >true</accept_file_without_checksum>
如果设置为 true,即使签名验证失败,AutoYaST 也会接受已签名的文件。
<accept_verification_failed config:type="boolean" >true</accept_verification_failed>
如果 all 设置为 true,AutoYaST 将接受安装源上的新 GPG 密钥。
<accept_unknown_gpg_key> <all config:type="boolean">true</all> </accept_unknown_gpg_key>
或者,您可以定义单个密钥
<accept_unknown_gpg_key> <all config:type="boolean">false</all> <keys config:type="list"> <keyid>3B3011B76B9D6523</keyid> lt;/keys> </accept_unknown_gpg_key>
这意味着密钥是已知的,但您不信任它。您可以通过添加以下内容来信任所有密钥
<accept_non_trusted_gpg_key> <all config:type="boolean">true</all> </accept_non_trusted_gpg_key>
或者,您可以信任特定的密钥
<accept_non_trusted_gpg_key> <all config:type="boolean">false</all> <keys config:type="list"> <keyid>3B3011B76B9D6523</keyid> </keys> </accept_non_trusted_gpg_key>
如果 all 设置为 true,AutoYaST 将接受安装源上的所有新 GPG 密钥并将其导入其数据库。
<import_gpg_key> <all config:type="boolean">true</all> </import_gpg_key>
这只能针对特定的密钥进行
<import_gpg_key> <all config:type="boolean">false</all> <keys config:type="list"> <keyid>3B3011B76B9D6523</keyid> </keys> </import_gpg_key>
内核软件包不属于任何选择。所需的内核在安装过程中确定。如果内核软件包添加到任何选择或单个软件包选择中,安装很可能因冲突而失败。
要强制安装特定内核,请使用 kernel 属性。以下是强制安装默认内核的示例。即使需要 SMP 或其他内核,此内核也将被安装。
<software> <kernel>kernel-default</kernel> ... </software>
有些软件包是自动选择的,原因可能是依赖关系,也可能是因为它们在某个选择中可用。
删除这些软件包可能会破坏系统的一致性,因此不建议删除基本软件包,除非提供了提供相同服务的替代软件包。最典型的例子是邮件传输代理 (MTA) 软件包。默认情况下,将选择并安装 postfix。要使用另一个 MTA(如 sendmail),可以使用软件资源中的列表从已选择的软件包列表中删除 postfix。但是,请注意 sendmail 不随 openSUSE Leap 一起提供。以下示例展示了如何实现这一点
<software>
<packages config:type="list">
<package>sendmail</package>
</packages>
<remove-packages config:type="list">
<package>postfix</package>
</remove-packages>
</software>请注意,无法删除属于某个模式的软件包(请参阅 第 4.9.1 节 “使用模式和软件包部分选择软件包”)。如果指定要删除此类软件包,安装将失败,并显示以下错误消息
The package resolver run failed. Check
your software section in the AutoYaST profile.AutoYaST 允许您控制要安装哪些推荐的软件包和模式。有三个选项
安装所有推荐的软件包和模式
仅安装必需的软件包和模式
安装推荐的软件包,忽略推荐的模式
在配置文件中将 install_recommended 标志设置为 true 以安装所有推荐的软件包和模式。
如果您想要最小安装,并且只安装必需的软件包和模式,请将该标志设置为 false。
从配置文件中省略该标志,只安装推荐的软件包,并忽略所有推荐的模式。请注意,此标志仅影响全新安装,在升级期间将被忽略。
install_recommended 标志仅影响安装过程请记住,此标志仅影响安装过程中的软件包解析器,不会更改 /etc/zypp/zypp.conf 中的任何设置。因此,运行系统中的软件包解析不受此 AutoYaST 设置的影响。
<software> <install_recommended config:type="boolean">false </install_recommended> </software>
要在第二阶段重新启动后安装软件包,可以使用 post-packages 元素进行
<software>
<post-packages config:type="list">
<package>yast2-cim</package>
</post-packages>
</software>您还可以在第二阶段安装模式。为此,请使用 post-patterns 元素
<software>
<post-patterns config:type="list">
<pattern>apparmor</pattern>
</post-patterns>
</software>您可以在安装结束时执行在线更新。将布尔值 do_online_update 设置为 true。当然,这只有在您在 suse-register/customer-center 部分(例如,或在后脚本中)添加在线更新存储库时才有意义。如果在线更新存储库在第一阶段通过附加部分已经可用,那么 AutoYaST 已经安装了可用的最新软件包。如果通过在线更新进行内核更新,则在第二阶段结束时会触发重新启动。
<software> <do_online_update config:type="boolean">true</do_online_update> </software>
AutoYaST 也可用于执行系统升级。除了升级包,还支持以下部分
scripts/pre-scripts 在其他操作真正发生之前,非常早地运行用户脚本。
add-on 定义附加的附加产品。
language 设置语言。
timezone 设置时区。
keyboard 设置键盘。
software 安装额外的软件/模式。删除已安装的软件包。
suse_register 运行注册过程。
要控制升级过程,可以定义以下部分
<upgrade>
<stop_on_solver_conflict config:type="boolean">true</stop_on_solver_conflict>
</upgrade>
<backup>
<sysconfig config:type="boolean">true</sysconfig>
<modified config:type="boolean">true</modified>
<remove_old config:type="boolean">true</remove_old>
</backup>如果存在软件包依赖性问题,则停止安装。
创建已修改文件的备份。
创建 /etc/sysconfig 目录的备份。
删除以前更新的备份。
要启动 AutoYaST 升级模式,您需要
将 AutoYaST 配置文件复制到其文件系统上的 /root/autoupg.xml。
从安装介质启动系统。
选择 Upgrade 菜单项。
在命令行中,设置 autoupgrade=1。
按 Enter 键启动升级过程。
从安装介质启动系统。
选择 Upgrade 菜单项。
在命令行中,设置 netsetup=dhcp autoupgrade=1 autoyast=http://192.169.3.1/autoyast.xml。
在此处,网络将通过 DHCP 设置。
按 Enter 键启动升级过程。
通过 services-manager 资源,您可以设置默认的 systemd 目标,并详细指定要启动或停用哪些系统服务,以及如何启动它们。
default-target 属性指定系统引导到的默认 systemd 目标。有效选项为 graphical 用于图形登录,或 multi-user 用于控制台登录。
要指定引导时应启动的服务集,请使用 enable 和 disable 列表。要启动服务,请将其名称添加到 enable 列表中。要确保服务在引导时未启动,请将其添加到 disable 列表中。
如果未将服务列为已启用或已禁用,则使用默认设置。默认设置可以禁用或启用。
最后,某些服务(例如 cups)支持按需激活(套接字激活服务)。如果您想利用此功能,请将这些服务的名称列在 on_demand 列表中,而不是 enable 中。
<services-manager>
<default_target>multi-user</default_target>
<services>
<disable config:type="list">
<service>libvirtd</service>
</disable>
<enable config:type="list">
<service>sshd</service>
</enable>
<on_demand config:type="list">
<service>cups</service>
</on_demand>
</services>
</services-manager>网络配置主要用于将单个工作站连接到基于以太网的 LAN。通常在 AutoYaST 启动之前进行配置,以从网络位置获取配置文件。此网络配置通常通过 linuxrc 完成。
默认情况下,YaST 会将安装期间使用的网络设置复制到最终安装的系统中。此配置与 AutoYaST 配置文件中定义的配置合并。
AutoYaST 设置的优先级高于任何现有配置文件。YaST 将根据配置文件中的条目写入 ifcfg-* 文件,而不会删除旧文件。如果 DNS 和路由部分为空或缺失,YaST 将保留任何预先存在的值。否则,它将应用配置文件中的设置。
网络设置和服务激活在 profile networking 全局资源下定义。
<networking>
<dns>
<dhcp_hostname config:type="boolean">true</dhcp_hostname>
<hostname>linux-bqua</hostname>
<nameservers config:type="list">
<nameserver>192.168.1.116</nameserver>
<nameserver>192.168.1.117</nameserver>
<nameserver>192.168.1.118</nameserver>
</nameservers>
<resolv_conf_policy>auto</resolv_conf_policy>
<searchlist config:type="list">
<search>example.com</search>
<search>example.net</search>
</searchlist>
</dns>
<interfaces config:type="list">
<interface>
<bootproto>dhcp</bootproto>
<name>eth0</name>
<startmode>auto</startmode>
</interface>
</interfaces>
<ipv6 config:type="boolean">true</ipv6>
<keep_install_network config:type="boolean">false</keep_install_network>
<managed config:type="boolean">false</managed>
<net-udev config:type="list">
<rule>
<name>eth0</name>
<rule>ATTR{address}</rule>
<value>00:30:6E:08:EC:80</value>
</rule>
</net-udev>
<s390-devices config:type="list">
<listentry>
<chanids>0.0.0800:0.0.0801:0.0.0802</chanids>
<type>qeth</type>
</listentry>
</s390-devices>
<routing>
<ipv4_forward config:type="boolean">false</ipv4_forward>
<ipv6_forward config:type="boolean">false</ipv6_forward>
<routes config:type="list">
<route>
<destination>192.168.100.0/24</destination>
<device>eth1</device>
<extrapara>scope link src 192.168.100.100 table one</extrapara>
<gateway>-</gateway>
</route>
<route>
<destination>default</destination>
<device>eth1</device>
<gateway>192.168.100.1</gateway>
</route>
<route>
<destination>default</destination>
<device>lo</device>
<gateway>192.168.5.1</gateway>
</route>
</routes>
</routing>
</networking>如上例所示,<networking> 部分可以由几个小节组成
interfaces 描述网络接口的配置,包括其 IP 地址、启动方式等。
dns 指定 DNS 相关设置,例如主机名、名称服务器列表等。
routing 定义路由规则。
s390-devices 涵盖特定于 z Systems 的设备设置。
net-udev 列举用于设置持久名称的 udev 规则。
此外,还有一些元素允许修改网络配置的应用方式
选择要使用的网络后端。支持的值为 wicked、network_manager 或 none,后者将禁用网络服务。
<backend>network_manager</backend>
如第 4.12.1 节 “配置工作流”所述,默认情况下,AutoYaST 将运行系统的网络配置与配置文件中定义的配置合并。如果您只想使用配置文件中的配置,请将此元素设置为 false。默认值为 true。
<keep_install_network config:type="boolean">false</keep_install_network>
确定是使用 NetworkManager 还是 Wicked。
已弃用。请改用 backend。
<managed config:type="boolean">true</managed>
强制 AutoYaST 在写入配置后立即重新启动网络。
<start_immediately config:type="boolean">true</start_immediately>
在安装过程中使用配置文件中定义的网络配置。否则,AutoYaST 依赖于 linuxrc 设置的配置。
<setup_before_proposal config:type="boolean">true</setup_before_proposal>
设置网络后,AutoYaST 会检查分配的 IP 地址是否重复。如果是这种情况,它会显示一个警告,其超时时间(以秒为单位)由此元素控制。如果设置为 0,则安装停止。
<strict_IP_check_timeout config:type="integer">5</strict_IP_check_timeout>
选择安装虚拟化软件包(例如 Xen、QEMU 或 KVM)时,AutoYaST 会配置一个网桥。您可以通过将此元素设置为 false 来禁用此行为。
<virt_bridge_proposal config:type="boolean">false</virt_bridge_proposal>
AutoYaST 完全支持使用 IPv6 地址。要禁用 IPv6 地址支持,请设置 <ipv6 config:type="boolean">false</ipv6>
interfaces 部分允许用户定义接口的配置,包括它们的启动方式、IP 地址、网络等。以下元素必须包含在 <interfaces>...</interfaces> 标签中。
bootproto接口使用的引导协议。可能的值
static 用于静态分配地址。需要使用 ipaddr 元素指定 IP。
dhcp4、dhcp6 或 dhcp 用于使用 DHCP(IPv4、IPv6 或任何)设置 IP 地址。
dhcp+autoip 用于从 Zeroconf 获取 IPv4 配置并从 DHCP 获取 IPv6。
autoip 用于从 Zeroconf 获取 IPv4 配置。
ibft 用于使用 iBFT 协议获取 IP 地址。
none 用于跳过设置地址。此值用于网桥和绑定端口。
必需。
broadcast广播 IP 地址。
仅与 static 引导协议一起使用。
device设备名称。
已弃用。请改用 name。
name设备名称,例如:eth0。
必需。
lladdr链路层地址 (MAC 地址)。
可选。
ipaddr分配给接口的 IP 地址。
仅与 static 引导协议一起使用。它可以包含网络前缀,例如:192.168.1.1/24。
remote_ipaddr点对点连接的远程 IP 地址。
仅与 static 引导协议一起使用。
netmask网络掩码,例如:255.255.255.0。
已弃用。请改用 prefixlen 或在 ipaddr 元素中包含网络前缀。
network网络 IP 地址。
已弃用。请改用带有 prefixlen 的 ipaddr。
prefixlen网络前缀,例如:24。
仅与 static 引导协议一起使用。
startmode何时启动接口。可能的值是
hotplug 设备插入时。例如,对 USB 网卡很有用。
auto 系统启动时。onboot 是一个已弃用的别名。
ifplugd 设备由 ifplugd 守护程序管理时。
manual 设备应该手动启动时。
nfsroot 设备需要挂载根文件系统时,例如,当 / 位于 NFS 卷上时。
off 永不启动设备。
ifplugd_priorityifplugd 守护程序的优先级。它决定了设备的激活顺序。
仅与 ifplugd 启动模式一起使用。
usercontrol参数不再使用。
已弃用。
bonding_slaveX绑定设备的名称。
绑定设备必需。X 被一个从 0 开始的数字替换,例如 bonding_slave0。每个端口都需要有一个唯一的数字。
bonding_module_opts绑定设备的选项。
仅与 bond 设备一起使用。
mtu接口的最大传输单元。
可选。
ethtool_options设备激活期间的 Ethtool 选项。
可选。
zone接口分配到的防火墙区域名称。
可选。
vlan_id此 VLAN 使用的标识符。
仅与 vlan 设备一起使用。
etherdeviceVLAN 连接到的设备。
仅与 vlan 设备一起使用,并且必需。
bridge
如果接口是网桥,则为 yes。
已弃用。它由其他属性推断。
bridge_ports网桥端口的空格分隔列表,例如 eth0 eth1。
仅与 bridge 设备一起使用,并且必需。
bridge_stp生成树协议。可能的值为 on(启用时)和 off(禁用时)。
仅与 bridge 设备一起使用。
bridge_forward_delay网桥的转发延迟,例如:15。
仅与 bridge 设备一起使用。有效值介于 4 和 30 之间。
aliases附加 IP 地址。请参阅第 4.12.4 节 “分配多个 IP 地址”。
<networking>
<setup_before_proposal config:type="boolean">false</setup_before_proposal>
<keep_install_network config:type="boolean">false</keep_install_network>
<interfaces config:type="list">
<interface>
<bonding_master>yes</bonding_master>
<bonding_module_opts>mode=active-backup miimon=100</bonding_module_opts>
<bonding_slave0>eth1</bonding_slave0>
<bonding_slave1>eth2</bonding_slave1>
<bootproto>static</bootproto>
<name>bond0</name>
<ipaddr>192.168.1.61</ipaddr>
<prefixlen>24</prefixlen>
<startmode>auto</startmode>
</interface>
<interface>
<bootproto>none</bootproto>
<name>eth1</name>
<startmode>auto</startmode>
</interface>
<interface>
<bootproto>none</bootproto>
<name>eth2</name>
<startmode>auto</startmode>
</interface>
</interfaces>
<net-udev config:type="list">
<rule>
<name>eth1</name>
<rule>ATTR{address}</rule>
<value>dc:e4:cc:27:94:c7</value>
</rule>
<rule>
<name>eth2</name>
<rule>ATTR{address}</rule>
<value>dc:e4:cc:27:94:c8</value>
</rule>
</net-udev>
</networking><interfaces config:type="list">
<interface>
<name>br0</name>
<bootproto>static</bootproto>
<bridge>yes</bridge>
<bridge_forwarddelay>0</bridge_forwarddelay>
<bridge_ports>eth0 eth1</bridge_ports>
<bridge_stp>off</bridge_stp>
<ipaddr>192.168.1.100</ipaddr>
<prefixlen>24</prefixlen>
<startmode>auto</startmode>
</interface>
<interface>
<name>eth0</name>
<bootproto>none</bootproto>
<startmode>hotplug</startmode>
</interface>
<interface>
<name>eth1</name>
<bootproto>none</bootproto>
<startmode>hotplug</startmode>
</interface>
</interfaces>AutoYaST 允许为同一个接口分配多个 IP 地址。它们使用一个 aliases 元素指定,该元素为每个地址包含一个 aliasX 条目。
每个条目支持以下元素
附加 IP 地址。它可以包含网络前缀,例如:192.168.1.1/24。
网络前缀,例如:24。
地址的网络掩码。
已弃用。请改用 PREFIXLEN 或在 IPADDR 元素中包含网络前缀。
地址的标签。
请记住,出于历史原因,aliases 部分中的 IPADDR、PREFIXLEN、LABEL 和 NETMASK 元素是区分大小写的。
<interfaces config:type="list">
<interface>
<name>br0</name>
<bootproto>static</bootproto>
<ipaddr>192.168.1.100</ipaddr>
<prefixlen>24</prefixlen>
<startmode>auto</startmode>
<aliases>
<alias0>
<IPADDR>192.168.1.101</IPADDR>
<PREFIXLEN>24</PREFIXLEN>
<LABEL>http</LABEL>
</alias0>
<alias1>
<IPADDR>192.168.2.100</IPADDR>
<PREFIXLEN>24</PREFIXLEN>
<LABEL>extra</LABEL>
</alias1>
</aliases>
</interface>
</interfaces>net-udev 元素允许指定一组 udev 规则,这些规则可用于为接口分配持久名称。
网络接口名称,例如 eth3。(必需。)
ATTR{address} 用于基于 MAC 的规则,KERNELS 用于基于总线 ID 的规则。(必需。)
例如:MAC 规则为 f0:de:f1:6b:da:69,总线 ID 规则为 0000:00:1c.1 或 0.0.0700。(必需。)
创建不完整的 udev 规则集时,选择的设备名称可能与现有设备名称发生冲突。例如,当将网络接口重命名为 eth0 时,可能会与内核自动生成的设备发生冲突。AutoYaST 尝试以最佳方式处理此类情况,并重命名冲突的设备。
<net-udev config:type="list">
<rule>
<name>eth1</name>
<rule>ATTR{address}</rule>
<value>52:54:00:68:54:fb</value>
</rule>
</net-udev>dns 部分用于定义名称服务相关设置,例如主机名或名称服务器。
主机名,不包括域名部分。例如:foo 而不是 foo.bar。Linux 内核允许您使用完全限定域名 (FQDN) 代替主机名,YaST 也是如此。但是,这在 YaST 的 dns 部分中不是正确的用法。解析器应该确定 FQDN。(有关 FQDN 如何解析的信息,请参阅 man 1 hostname 的“THE FQDN”部分。)
如果未指定主机名且未从 DHCP 服务器获取主机名(请参阅 dhcp_hostname),AutoYaST 将生成一个随机主机名。
名称服务器列表。示例
<nameservers config:type="list"> <nameserver>192.168.1.116</nameserver> <nameserver>192.168.1.117</nameserver> </nameservers>
主机名查找的搜索列表。
<searchlist config:type="list"> <search>example.com</search> </searchlist>
可选。
指定主机名是否必须从 DHCP 获取。
<dhcp_hostname config:type="boolean">true</dhcp_hostname>
routing 表允许指定路由列表和 IPv4 和 IPv6 的数据包转发设置。
可选:是否应为 IPv4 启用 IP 转发。
可选:是否应为 IPv6 启用 IP 转发。
可选:路由列表。
以下设置描述了如何定义路由。
必需:路由目标。可以指定地址前缀,例如:192.168.122.0/24。
标题 default 可用于指示路由是与网关相同地址族(IPv4 或 IPv6)中的默认网关。
必需:与路由关联的接口。
可选:网关的 IP 地址。
(已弃用。)目标网络掩码。
建议将前缀指定为 destination 值的一部分。
可选:其他路由选项,如 metric、mtu 或 table。
<routing>
<ipv4_forward config:type="boolean">true</ipv4_forward>
<ipv6_forward config:type="boolean">true</ipv6_forward>
<routes config:type="list">
<route>
<destination>192.168.100.0/24</destination>
<device>eth1</device>
<extrapara>scope link src 192.168.100.100 table one</extrapara>
</route>
<route>
<destination>default</destination>
<device>eth1</device>
<gateway>192.168.100.1</gateway>
</route>
<route>
<destination>default</destination>
<device>lo</device>
<gateway>192.168.5.1</gateway>
</route>
</routes>
</routing>以下元素必须位于 <s390-devices>... </s390-devices> 标签之间。
qeth、ctc 或 iucv。
通道 ID,用冒号(首选)或空格分隔
<chanids>0.0.0700:0.0.0701:0.0.0702</chanids>
<layer2 config:type="boolean">true</layer2>
布尔值;默认值:false
可选:CTC / LCS 协议,一个小数(作为字符串)
<protocol>1</protocol>
IUCV 路由器/用户
除了上述选项外,AutoYaST 还支持配置文件的其他部分中的 IBM Z 特定选项。特别是,您可以定义逻辑链路地址或 LLADDR(在以太网的情况下,即 MAC 地址)。为此,请在设备定义中使用 LLADDR 选项。
VLAN 设备从底层物理设备继承其 LLADDR。要为 VLAN 设备设置特定地址,请为底层物理设备设置 LLADDR 选项。
配置您的 Internet 代理(缓存)设置。
分别使用 http_proxy、https_proxy 和 ftp_proxy 配置 HTTP、HTTPS 和 FTP 的代理。应该直接访问的地址或名称需要使用 no_proxy 指定(空格分隔值)。如果您使用带有授权的代理服务器,请填写 proxy_user 和 proxy_password。
<proxy> <enabled config:type="boolean">true</enabled> <ftp_proxy>http://192.168.1.240:3128</ftp_proxy> <http_proxy>http://192.168.1.240:3128</http_proxy> <no_proxy>www.example.com .example.org localhost</no_proxy> <proxy_password>testpw</proxy_password> <proxy_user>testuser</proxy_user> </proxy>
当网络配置在提案之前强制写入时,或者当代理设置通过 linuxrc 提供时,代理设置将在安装期间写入。
使用 nis 资源,您可以将目标机器配置为 NIS 客户端。以下示例展示了使用多个域的详细配置。
<nis>
<nis_broadcast config:type="boolean">true</nis_broadcast>
<nis_broken_server config:type="boolean">true</nis_broken_server>
<nis_domain>test.com</nis_domain>
<nis_local_only config:type="boolean">true</nis_local_only>
<nis_options></nis_options>
<nis_other_domains config:type="list">
<nis_other_domain>
<nis_broadcast config:type="boolean">false</nis_broadcast>
<nis_domain>domain.com</nis_domain>
<nis_servers config:type="list">
<nis_server>10.10.0.1</nis_server>
</nis_servers>
</nis_other_domain>
</nis_other_domains>
<nis_servers config:type="list">
<nis_server>192.168.1.1</nis_server>
</nis_servers>
<start_autofs config:type="boolean">true</start_autofs>
<start_nis config:type="boolean">true</start_nis>
</nis>您可以将目标机器配置为 NIS 服务器。提供 NIS 主服务器、NIS 工作服务器以及两者的组合。
<nis_server>
<domain>mydomain.de</domain>
<maps_to_serve config:type="list">
<nis_map>auto.master</nis_map>
<nis_map>ethers</nis_map>
</maps_to_serve>
<merge_passwd config:type="boolean">false</merge_passwd>
<mingid config:type="integer">0</mingid>
<minuid config:type="integer">0</minuid>
<nopush config:type="boolean">false</nopush>
<pwd_chfn config:type="boolean">false</pwd_chfn>
<pwd_chsh config:type="boolean">false</pwd_chsh>
<pwd_srcdir>/etc</pwd_srcdir>
<securenets config:type="list">
<securenet>
<netmask>255.0.0.0</netmask>
<network>127.0.0.0</network>
</securenet>
</securenets>
<server_type>master</server_type>
<slaves config:type="list"/>
<start_ypbind config:type="boolean">false</start_ypbind>
<start_yppasswdd config:type="boolean">false</start_yppasswdd>
<start_ypxfrd config:type="boolean">false</start_ypxfrd>
</nis_server>domain
NIS 域名。
maps_to_serve
服务器可用的映射列表。
值:auto.master, ethers, group, hosts, netgrp, networks, passwd, protocols, rpc, services, shadow
merge_passwd
选择您的 passwd 文件是否应与 shadow 文件合并(仅当 shadow 文件存在时才可能)。
值:true/false
mingid
要包含在用户映射中的最小 GID。
minuid
要包含在用户映射中的最小 UID。
nopush
不要将更改推送到工作服务器。(如果没有工作服务器则有用。)
值:true/false
pwd_chfn
YPPWD_CHFN - 允许更改全名
值:true/false
pwd_chsh
YPPWD_CHSH - 允许更改登录 shell
值:true/false
pwd_srcdir
YPPWD_SRCDIR - passwd 数据源目录
默认值:/etc
securenets
允许查询 NIS 服务器的主机列表
如果网络等于主机的地址和网络掩码的按位与,则允许主机地址。
必须存在网络掩码为 255.0.0.0 且网络为 127.0.0.0 的条目,才能允许来自本地主机的连接。
输入网络掩码 0.0.0.0 和网络 0.0.0.0 允许所有主机访问。
server_type
选择将 NIS 服务器配置为主服务器或工作服务器,或不配置 NIS 服务器。
值:master, slave, none
slaves
要配置为 NIS 服务器工作站的主机名列表。
start_ypbind
此主机也是 NIS 客户端(仅当客户端在本地配置时)。
值:true/false
start_yppasswdd
也启动密码守护进程。
值:true/false
start_ypxfrd
也启动地图传输守护进程。快速地图分发;它将加快地图向工作站的传输。
值:true/false
使用 host 资源,您可以向 /etc/hosts 文件添加更多条目。现有条目不会被删除。以下示例显示了详细信息。
<host>
<hosts config:type="list">
<hosts_entry>
<host_address>133.3.0.1</host_address>
<names config:type="list">
<name>booking</name>
</names>
</hosts_entry>
<hosts_entry>
<host_address>133.3.0.5</host_address>
<names config:type="list">
<name>test-machine</name>
</names>
</hosts_entry>
</hosts>
</host>使用 samba-client 资源,您可以配置工作组、NT 域或 Active Directory 域的成员资格。
<samba-client>
<disable_dhcp_hostname config:type="boolean">true</disable_dhcp_hostname>
<global>
<security>domain</security>
<usershare_allow_guests>No</usershare_allow_guests>
<usershare_max_shares>100</usershare_max_shares>
<workgroup>WORKGROUP</workgroup>
</global>
<winbind config:type="boolean">false</winbind>
</samba-client>disable_dhcp_hostname
不允许 DHCP 更改主机名。
值:true/false
global/security
认证机制的类型(域技术或 Active Directory 服务器 (ADS))。
值:ADS/domain
global/usershare_allow_guests
允许共享访客访问。
值:No/Yes
global/usershare_max_shares
smb.conf 中共享的最大数量。
0 表示未启用共享。
global/workgroup
工作组或域名。
winbind
使用 winbind。
值:true/false
简单 Samba 服务器的配置。
<samba-server>
<accounts config:type="list"/>
<backend/>
<config config:type="list">
<listentry>
<name>global</name>
<parameters>
<security>domain</security>
<usershare_allow_guests>No</usershare_allow_guests>
<usershare_max_shares>100</usershare_max_shares>
<workgroup>WORKGROUP</workgroup>
</parameters>
</listentry>
</config>
<service>Disabled</service>
<trustdom/>
<version>2.11</version>
</samba-server>Samba 帐户列表。
可用后端列表。
值:true/false。
在 /etc/samba/smb.conf 中设置额外的用户定义参数。
示例显示了 /etc/samba/smb.conf 的 global 部分中的参数。
Samba 服务在引导期间启动。
值:Enabled/Disabled。
信任域。
一个由两个映射组成的映射(键:establish, revoke)。每个映射包含格式为 key: domainname value: password 的条目。
Samba 版本。
默认值:2.11。
配置文件必须是 JSON 格式。验证 autoyast2 和 autoyast2-installation 都已安装。使用 YaST 中的 模块生成有效的 JSON 配置文件。启动 YaST 并切换到 › 。选择 › ,单击 ,并配置可用设置。完成后单击 。要保存生成的配置文件,请使用 › 。
要将 LDAP 与原生 SSL(而不是 TLS)一起使用,请添加 ldaps 资源。
可以使用配置系统将系统配置为 NFS 客户端或 NFS 服务器。以下示例展示了如何配置 NFS 客户端和服务器。
从 openSUSE Leap 15.6 开始,NFS 客户端配置的结构发生了变化。引入了一些全局配置选项:enable_nfs4 用于打开/关闭 NFS4 支持,以及 idmapd_domain 用于定义 rpc.idmapd 的域名(这仅在启用 NFS4 时有意义)。注意:旧结构与新结构不兼容,在旧版本上创建的带有 NFS 部分的控制文件将无法与新产品一起使用。
有关如何将 openSUSE Leap 安装到 NFS 共享上的更多信息,请参阅第 4.5.10 节 “NFS 配置”。
<nfs>
<enable_nfs4 config:type="boolean">true</enable_nfs4>
<idmapd_domain>suse.cz</idmapd_domain>
<nfs_entries config:type="list">
<nfs_entry>
<mount_point>/home</mount_point>
<nfs_options>sec=krb5i,intr,rw</nfs_options>
<server_path>saurus.suse.cz:/home</server_path>
<vfstype>nfs4</vfstype>
</nfs_entry>
<nfs_entry>
<mount_point>/work</mount_point>
<nfs_options>defaults</nfs_options>
<server_path>bivoj.suse.cz:/work</server_path>
<vfstype>nfs</vfstype>
</nfs_entry>
<nfs_entry>
<mount_point>/mnt</mount_point>
<nfs_options>defaults</nfs_options>
<server_path>fallback.suse.cz:/srv/dist</server_path>
<vfstype>nfs</vfstype>
</nfs_entry>
</nfs_entries>
</nfs><nfs_server>
<nfs_exports config:type="list">
<nfs_export>
<allowed config:type="list">
<allowed_clients>*(ro,root_squash,sync)</allowed_clients>
</allowed>
<mountpoint>/home</mountpoint>
</nfs_export>
<nfs_export>
<allowed config:type="list">
<allowed_clients>*(ro,root_squash,sync)</allowed_clients>
</allowed>
<mountpoint>/work</mountpoint>
</nfs_export>
</nfs_exports>
<start_nfsserver config:type="boolean">true</start_nfsserver>
</nfs_server>从 openSUSE Leap 15 开始,NTP 客户端配置文件具有新格式,并且不兼容以前的配置文件。您需要更新以前 openSUSE Leap 版本中使用的 NTP 客户端配置文件,以使其与版本 15 及更高版本兼容。
以下是 NTP 客户端配置的示例
<ntp-client> <ntp_policy>auto</ntp_policy>1 <ntp_servers config:type="list"> <ntp_server> <address>cz.pool.ntp.org</address>2 <iburst config:type="boolean">false</iburst>3 <offline config:type="boolean">false</offline>4 </ntp_server> </ntp_servers> <ntp_sync>15</ntp_sync>5 </ntp-client>
| |
时间服务器或时间服务器池的 URL。 | |
| |
当 | |
对于 |
以下示例演示了 IPv6 配置。您可以使用服务器的 IP 地址、主机名或两者
<ntp-server> <address>2001:418:3ff::1:53</address> </ntp-server> <ntp-server> <address>2.pool.ntp.org</address> </ntp-server>
对于客户端的邮件配置,此模块允许您创建详细的邮件配置。该模块包含各种选项。我们建议您至少将其用于初始配置。
<mail>
<aliases config:type="list">
<alias>
<alias>root</alias>
<comment></comment>
<destinations>foo</destinations>
</alias>
<alias>
<alias>test</alias>
<comment></comment>
<destinations>foo</destinations>
</alias>
</aliases>
<connection_type config:type="symbol">permanent</connection_type>
<fetchmail config:type="list">
<fetchmail_entry>
<local_user>foo</local_user>
<password>bar</password>
<protocol>POP3</protocol>
<remote_user>foo</remote_user>
<server>pop.foo.com</server>
</fetchmail_entry>
<fetchmail_entry>
<local_user>test</local_user>
<password>bar</password>
<protocol>IMAP</protocol>
<remote_user>test</remote_user>
<server>blah.com</server>
</fetchmail_entry>
</fetchmail>
<from_header>test.com</from_header>
<listen_remote config:type="boolean">true</listen_remote>
<local_domains config:type="list">
<domains>test1.com</domains>
</local_domains>
<masquerade_other_domains config:type="list">
<domain>blah.com</domain>
</masquerade_other_domains>
<masquerade_users config:type="list">
<masquerade_user>
<address>joe@test.com</address>
<comment></comment>
<user>joeuser</user>
</masquerade_user>
<masquerade_user>
<address>bar@test.com</address>
<comment></comment>
<user>foo</user>
</masquerade_user>
</masquerade_users>
<mta config:type="symbol">postfix</mta>
<outgoing_mail_server>test.com</outgoing_mail_server>
<postfix_mda config:type="symbol">local</postfix_mda>
<smtp_auth config:type="list">
<listentry>
<password>bar</password>
<server>test.com</server>
<user>foo</user>
</listentry>
</smtp_auth>
<use_amavis config:type="boolean">true</use_amavis>
<virtual_users config:type="list">
<virtual_user>
<alias>test.com</alias>
<comment></comment>
<destinations>foo.com</destinations>
</virtual_user>
<virtual_user>
<alias>geek.com</alias>
<comment></comment>
<destinations>bar.com</destinations>
</virtual_user>
</virtual_users>
</mail>本节用于配置 Apache HTTP 服务器。
对于经验不足的用户,我们建议使用 HTTP server YaST 模块配置 Apache 服务器。之后,调用 AutoYaST configuration 模块,选择 HTTP server YaST 模块并克隆 Apache 设置。这些设置可以通过 File 菜单导出。
<http-server>
<Listen config:type="list">
<listentry>
<ADDRESS/>
<PORT>80</PORT>
</listentry>
</Listen>
<hosts config:type="list">
<hosts_entry>
<KEY>main</KEY>
<VALUE config:type="list">
<listentry>
<KEY>DocumentRoot</KEY>
<OVERHEAD>
#
# Global configuration that will be applicable for all
# virtual hosts, unless deleted here or overridden elsewhere.
#
</OVERHEAD>
<VALUE>"/srv/www/htdocs"</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<OVERHEAD>
#
# Configure the DocumentRoot
#
</OVERHEAD>
<SECTIONNAME>Directory</SECTIONNAME>
<SECTIONPARAM>"/srv/www/htdocs"</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Options</KEY>
<OVERHEAD>
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch
# ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly*
# --- "Options All"
# does not give it to you.
#
# The Options directive is both complicated and important.
# Please see
# https://httpd.apache.ac.cn/docs/2.4/mod/core.html#options
# for more information.
</OVERHEAD>
<VALUE>None</VALUE>
</listentry>
<listentry>
<KEY>AllowOverride</KEY>
<OVERHEAD>
# AllowOverride controls what directives may be placed in
# .htaccess files. It can be "All", "None", or any combination
# of the keywords:
# Options FileInfo AuthConfig Limit
</OVERHEAD>
<VALUE>None</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<OVERHEAD>
# Controls who can get stuff from this server.
</OVERHEAD>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>!mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Require</KEY>
<VALUE>all granted</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Order</KEY>
<VALUE>allow,deny</VALUE>
</listentry>
<listentry>
<KEY>Allow</KEY>
<VALUE>from all</VALUE>
</listentry>
</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>Alias</KEY>
<OVERHEAD>
# Aliases: aliases can be added as needed (with no limit).
# The format is Alias fakename realname
#
# Note that if you include a trailing / on fakename then the
# server will require it to be present in the URL. So "/icons"
# is not aliased in this example, only "/icons/". If the fakename
# is slash-terminated, then the realname must also be slash
# terminated, and if the fakename omits the trailing slash, the
# realname must also omit it.
# We include the /icons/ alias for FancyIndexed directory listings.
# If you do not use FancyIndexing, you may comment this out.
#
</OVERHEAD>
<VALUE>/icons/ "/usr/share/apache2/icons/"</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<OVERHEAD>
</OVERHEAD>
<SECTIONNAME>Directory</SECTIONNAME>
<SECTIONPARAM>"/usr/share/apache2/icons"</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Options</KEY>
<VALUE>Indexes MultiViews</VALUE>
</listentry>
<listentry>
<KEY>AllowOverride</KEY>
<VALUE>None</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>!mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Require</KEY>
<VALUE>all granted</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Order</KEY>
<VALUE>allow,deny</VALUE>
</listentry>
<listentry>
<KEY>Allow</KEY>
<VALUE>from all</VALUE>
</listentry>
</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>ScriptAlias</KEY>
<OVERHEAD>
# ScriptAlias: This controls which directories contain server
# scripts. ScriptAliases are essentially the same as Aliases,
# except that documents in the realname directory are treated
# as applications and run by the server when requested rather
# than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
</OVERHEAD>
<VALUE>/cgi-bin/ "/srv/www/cgi-bin/"</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<OVERHEAD>
# "/srv/www/cgi-bin" should be changed to wherever your
# ScriptAliased CGI directory exists, if you have that configured.
#
</OVERHEAD>
<SECTIONNAME>Directory</SECTIONNAME>
<SECTIONPARAM>"/srv/www/cgi-bin"</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>AllowOverride</KEY>
<VALUE>None</VALUE>
</listentry>
<listentry>
<KEY>Options</KEY>
<VALUE>+ExecCGI -Includes</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>!mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Require</KEY>
<VALUE>all granted</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>mod_access_compat.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>Order</KEY>
<VALUE>allow,deny</VALUE>
</listentry>
<listentry>
<KEY>Allow</KEY>
<VALUE>from all</VALUE>
</listentry>
</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<OVERHEAD>
# UserDir: The name of the directory that is appended onto a
# user's home directory if a ~user request is received.
# To disable it, simply remove userdir from the list of modules
# in APACHE_MODULES in /etc/sysconfig/apache2.
#
</OVERHEAD>
<SECTIONNAME>IfModule</SECTIONNAME>
<SECTIONPARAM>mod_userdir.c</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>UserDir</KEY>
<OVERHEAD>
# Note that the name of the user directory ("public_html")
# cannot simply be changed here, since it is a compile time
# setting. The apache package would need to be rebuilt.
# You could work around by deleting /usr/sbin/suexec, but
# then all scripts from the directories would be executed
# with the UID of the webserver.
</OVERHEAD>
<VALUE>public_html</VALUE>
</listentry>
<listentry>
<KEY>Include</KEY>
<OVERHEAD>
# The actual configuration of the directory is in
# /etc/apache2/mod_userdir.conf.
</OVERHEAD>
<VALUE>/etc/apache2/mod_userdir.conf</VALUE>
</listentry>
</VALUE>
</listentry>
<listentry>
<KEY>IncludeOptional</KEY>
<OVERHEAD>
# Include all *.conf files from /etc/apache2/conf.d/.
#
# This is mostly meant as a place for other RPM packages to drop
# in their configuration snippet.
#
#
# You can comment this out here if you want those bits include
# only in a certain virtual host, but not here.
</OVERHEAD>
<VALUE>/etc/apache2/conf.d/*.conf</VALUE>
</listentry>
<listentry>
<KEY>IncludeOptional</KEY>
<OVERHEAD>
# The manual... if it is installed ('?' means it will not complain)
</OVERHEAD>
<VALUE>/etc/apache2/conf.d/apache2-manual?conf</VALUE>
</listentry>
<listentry>
<KEY>ServerName</KEY>
<VALUE>linux-wtyj</VALUE>
</listentry>
<listentry>
<KEY>ServerAdmin</KEY>
<OVERHEAD>
</OVERHEAD>
<VALUE>root@linux-wtyj</VALUE>
</listentry>
<listentry>
<KEY>NameVirtualHost</KEY>
<VALUE>192.168.43.2</VALUE>
</listentry>
</VALUE>
</hosts_entry>
<hosts_entry>
<KEY>192.168.43.2/secondserver.suse.de</KEY>
<VALUE config:type="list">
<listentry>
<KEY>DocumentRoot</KEY>
<VALUE>/srv/www/htdocs</VALUE>
</listentry>
<listentry>
<KEY>ServerName</KEY>
<VALUE>secondserver.suse.de</VALUE>
</listentry>
<listentry>
<KEY>ServerAdmin</KEY>
<VALUE>second_server@suse.de</VALUE>
</listentry>
<listentry>
<KEY>_SECTION</KEY>
<SECTIONNAME>Directory</SECTIONNAME>
<SECTIONPARAM>/srv/www/htdocs</SECTIONPARAM>
<VALUE config:type="list">
<listentry>
<KEY>AllowOverride</KEY>
<VALUE>None</VALUE>
</listentry>
<listentry>
<KEY>Require</KEY>
<VALUE>all granted</VALUE>
</listentry>
</VALUE>
</listentry>
</VALUE>
</hosts_entry>
</hosts>
<modules config:type="list">
<module_entry>
<change>enable</change>
<name>socache_shmcb</name>
<userdefined config:type="boolean">true</userdefined>
</module_entry>
<module_entry>
<change>enable</change>
<name>reqtimeout</name>
<userdefined config:type="boolean">true</userdefined>
</module_entry>
<module_entry>
<change>enable</change>
<name>authn_core</name>
<userdefined config:type="boolean">true</userdefined>
</module_entry>
<module_entry>
<change>enable</change>
<name>authz_core</name>
<userdefined config:type="boolean">true</userdefined>
</module_entry>
</modules>
<service config:type="boolean">true</service>
<version>2.9</version>
</http-server>主机 Listen 设置列表
PORT
端口地址
ADDRESS
网络地址。如果此条目为空,则将获取所有地址。
主机配置列表
KEY
主机名;<KEY>main</KEY> 定义主主机,例如 <KEY>192.168.43.2/secondserver.suse.de</KEY>
VALUE
描述主机的不同值的列表。
模块列表。只需要描述用户定义的模块。
name
模块名称
userdefined
出于历史原因,它始终设置为 true。
change
出于历史原因,它始终设置为 enable。
使用的 Apache 服务器版本
仅供参考。默认值 2.9
启用 Apache 服务
可选。默认值:false
要正确运行 Apache 服务器,请确保防火墙配置得当。
Squid 是一个缓存和转发的 Web 代理。
<squid>
<acls config:type="list">
<listentry>
<name>QUERY</name>
<options config:type="list">
<option>cgi-bin \?</option>
</options>
<type>urlpath_regex</type>
</listentry>
<listentry>
<name>apache</name>
<options config:type="list">
<option>Server</option>
<option>^Apache</option>
</options>
<type>rep_header</type>
</listentry>
<listentry>
<name>all</name>
<options config:type="list">
<option>0.0.0.0/0.0.0.0</option>
</options>
<type>src</type>
</listentry>
<listentry>
<name>manager</name>
<options config:type="list">
<option>cache_object</option>
</options>
<type>proto</type>
</listentry>
<listentry>
<name>localhost</name>
<options config:type="list">
<option>127.0.0.1/255.255.255.255</option>
</options>
<type>src</type>
</listentry>
<listentry>
<name>to_localhost</name>
<options config:type="list">
<option>127.0.0.0/8</option>
</options>
<type>dst</type>
</listentry>
<listentry>
<name>SSL_ports</name>
<options config:type="list">
<option>443</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>80</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>21</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>443</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>70</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>210</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>1025-65535</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>280</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>488</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>591</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>Safe_ports</name>
<options config:type="list">
<option>777</option>
</options>
<type>port</type>
</listentry>
<listentry>
<name>CONNECT</name>
<options config:type="list">
<option>CONNECT</option>
</options>
<type>method</type>
</listentry>
</acls>
<http_accesses config:type="list">
<listentry>
<acl config:type="list">
<listentry>manager</listentry>
<listentry>localhost</listentry>
</acl>
<allow config:type="boolean">true</allow>
</listentry>
<listentry>
<acl config:type="list">
<listentry>manager</listentry>
</acl>
<allow config:type="boolean">false</allow>
</listentry>
<listentry>
<acl config:type="list">
<listentry>!Safe_ports</listentry>
</acl>
<allow config:type="boolean">false</allow>
</listentry>
<listentry>
<acl config:type="list">
<listentry>CONNECT</listentry>
<listentry>!SSL_ports</listentry>
</acl>
<allow config:type="boolean">false</allow>
</listentry>
<listentry>
<acl config:type="list">
<listentry>localhost</listentry>
</acl>
<allow config:type="boolean">true</allow>
</listentry>
<listentry>
<acl config:type="list">
<listentry>all</listentry>
</acl>
<allow config:type="boolean">false</allow>
</listentry>
</http_accesses>
<http_ports config:type="list">
<listentry>
<host/>
<port>3128</port>
<transparent config:type="boolean">false</transparent>
</listentry>
</http_ports>
<refresh_patterns config:type="list">
<listentry>
<case_sensitive config:type="boolean">true</case_sensitive>
<max>10080</max>
<min>1440</min>
<percent>20</percent>
<regexp>^ftp:</regexp>
</listentry>
<listentry>
<case_sensitive config:type="boolean">true</case_sensitive>
<max>1440</max>
<min>1440</min>
<percent>0</percent>
<regexp>^gopher:</regexp>
</listentry>
<listentry>
<case_sensitive config:type="boolean">true</case_sensitive>
<max>4320</max>
<min>0</min>
<percent>20</percent>
<regexp>.</regexp>
</listentry>
</refresh_patterns>
<service_enabled_on_startup config:type="boolean">true</service_enabled_on_startup>
<settings>
<access_log config:type="list">
<listentry>/var/log/squid/access.log</listentry>
</access_log>
<cache_dir config:type="list">
<listentry>ufs</listentry>
<listentry>/var/cache/squid</listentry>
<listentry>100</listentry>
<listentry>16</listentry>
<listentry>256</listentry>
</cache_dir>
<cache_log config:type="list">
<listentry>/var/log/squid/cache.log</listentry>
</cache_log>
<cache_mem config:type="list">
<listentry>8</listentry>
<listentry>MB</listentry>
</cache_mem>
<cache_mgr config:type="list">
<listentry>webmaster</listentry>
</cache_mgr>
<cache_replacement_policy config:type="list">
<listentry>lru</listentry>
</cache_replacement_policy>
<cache_store_log config:type="list">
<listentry>/var/log/squid/store.log</listentry>
</cache_store_log>
<cache_swap_high config:type="list">
<listentry>95</listentry>
</cache_swap_high>
<cache_swap_low config:type="list">
<listentry>90</listentry>
</cache_swap_low>
<client_lifetime config:type="list">
<listentry>1</listentry>
<listentry>days</listentry>
</client_lifetime>
<connect_timeout config:type="list">
<listentry>2</listentry>
<listentry>minutes</listentry>
</connect_timeout>
<emulate_httpd_log config:type="list">
<listentry>off</listentry>
</emulate_httpd_log>
<error_directory config:type="list">
<listentry/>
</error_directory>
<ftp_passive config:type="list">
<listentry>on</listentry>
</ftp_passive>
<maximum_object_size config:type="list">
<listentry>4096</listentry>
<listentry>KB</listentry>
</maximum_object_size>
<memory_replacement_policy config:type="list">
<listentry>lru</listentry>
</memory_replacement_policy>
<minimum_object_size config:type="list">
<listentry>0</listentry>
<listentry>KB</listentry>
</minimum_object_size>
</settings>
</squid>acls
访问控制设置 (ACL) 列表。
每个列表条目包含名称、类型和附加选项。使用 YaST Squid 配置模块可获得可能条目的概览。
http_accesses
在访问控制表中,可以拒绝或允许访问 ACL 组。
如果一个定义中有多个 ACL 组,则将允许或拒绝属于所有 ACL 组的成员同时访问。
访问控制表按此处列出的顺序检查。使用第一个匹配的条目。
http_ports
定义 Squid 将监听客户端 HTTP 请求的所有端口。
Host 可以包含主机名或 IP 地址,也可以保持为空。
transparent 在透明模式下禁用 PMTU 发现。
refresh_patterns
刷新模式定义 Squid 如何处理缓存中的对象。
刷新模式按此处列出的顺序检查。使用第一个匹配的条目。
Min 确定如果没有给出明确的过期时间,对象应被视为新鲜的时间(以分钟为单位)。Max 是没有明确过期时间的对象被视为新鲜时间的上限。Percent 是对象年龄(自上次修改以来的时间)的百分比。没有明确过期时间的对象将被视为新鲜。
settings
所有可用通用参数及其默认值的映射。
使用 YaST Squid 配置模块可获得可能条目的概览。
service_enabled_on_startup
Squid 服务在启动时启动。
值:true/false
配置您的 FTP Internet 服务器设置。
<ftp-server>
<AnonAuthen>2</AnonAuthen>
<AnonCreatDirs>NO</AnonCreatDirs>
<AnonMaxRate>0</AnonMaxRate>
<AnonReadOnly>NO</AnonReadOnly>
<AntiWarez>YES</AntiWarez>
<Banner>Welcome message</Banner>
<CertFile/>
<ChrootEnable>NO</ChrootEnable>
<EnableUpload>YES</EnableUpload>
<FTPUser>ftp</FTPUser>
<FtpDirAnon>/srv/ftp</FtpDirAnon>
<FtpDirLocal/>
<GuestUser/>
<LocalMaxRate>0</LocalMaxRate>
<MaxClientsNumber>10</MaxClientsNumber>
<MaxClientsPerIP>3</MaxClientsPerIP>
<MaxIdleTime>15</MaxIdleTime>
<PasMaxPort>40500</PasMaxPort>
<PasMinPort>40000</PasMinPort>
<PassiveMode>YES</PassiveMode>
<SSL>0</SSL>
<SSLEnable>NO</SSLEnable>
<SSLv2>NO</SSLv2>
<SSLv3>NO</SSLv3>
<StartDaemon>2</StartDaemon>
<TLS>YES</TLS>
<Umask/>
<UmaskAnon/>
<UmaskLocal/>
<VerboseLogging>NO</VerboseLogging>
<VirtualUser>NO</VirtualUser>
</ftp-server>AnonAuthen启用/禁用匿名用户和本地用户。
仅限已验证用户:1;仅限匿名用户:0;两者:2
AnonCreatDirs匿名用户可以创建目录。
值:YES/NO
AnonReadOnly匿名用户可以上传。
值:YES/NO
AnonMaxRate匿名客户端允许的最大数据传输速率。
KB/s
AntiWarez禁止下载已上传但未由本地管理员验证的文件。
值:YES/NO
Banner指定包含在有人连接到服务器时显示的文本的文件名。
CertFile用于 SSL 加密连接的 DSA 证书
此选项指定用于 SSL 加密连接的 DSA 证书的位置。
ChrootEnable启用时,本地用户在登录后默认会进入其主目录中的 chroot 监狱。
警告:此选项具有安全隐患。值:YES/NO
EnableUpload如果启用,FTP 用户可以上传。
要允许匿名用户上传,请启用 AnonReadOnly。值:YES/NO
FTPUser定义匿名 FTP 用户。
FtpDirAnon匿名用户的 FTP 目录。
指定用于匿名 FTP 用户的目录。
FtpDirLocal已验证用户的 FTP 目录。
指定用于 FTP 已验证用户的目录。
LocalMaxRate本地已验证用户允许的最大数据传输速率。
KB/s
MaxClientsNumber允许连接的最大客户端数量。
MaxClientsPerIP定义一个 IP 的最大客户端数量。
这限制了从单个源 Internet 地址连接的客户端数量。
MaxIdleTime远程客户端在 FTP 命令之间可能等待的最长时间(超时)。
分钟
PasMaxPort用于被动连接回复的端口范围的最大值。
PassiveMode 需要设置为 YES。
PasMinPort用于被动连接回复的端口范围的最小值。
PassiveMode 需要设置为 YES。
PassiveMode启用被动模式
值:YES/NO
SSL安全设置
禁用 TLS/SSL:0;接受 TLS/SSL:1;拒绝无 TLS/SSL 的连接:2
SSLEnable如果启用,则允许 SSL 连接。
值:YES/NO
SSLv2如果启用,则允许 SSL 版本 2 连接。
值:YES/NO
SSLv3如果启用,则允许 SSL 版本 3 连接。
值:YES/NO
StartDaemonFTP 守护进程将如何启动。
手动:0;启动时:1;通过 systemd 套接字:2
TLS如果启用,则允许 TLS 连接。
值:YES/NO
Umask文件创建掩码,格式为(文件掩码):(目录掩码)。
例如,如果您感到偏执,则为 177:077。
UmaskAnon为匿名用户设置的文件创建掩码值。
要指定八进制值,请记住“0”前缀,否则该值将被视为十进制整数。
UmaskLocal已验证用户的 Umask。
要指定八进制值,请记住“0”前缀,否则该值将被视为十进制整数。
VerboseLogging启用时,所有 FTP 请求和响应都会被记录。
值:YES/NO
VirtualUser通过使用虚拟用户,可以管理 FTP 帐户而不会影响系统帐户。
值:YES/NO
FTP 服务器要正常运行,需要适当的防火墙设置。
配置您的 TFTP Internet 服务器设置。
使用此选项启用 TFTP(普通文件传输协议)服务器。服务器将使用 systemd 套接字启动。
请注意,TFTP 和 FTP 不同。
<tftp-server>
<start_tftpd config:type="boolean">true</start_tftpd>
<tftp_directory>/tftpboot</tftp_directory>
</tftp-server>启用 TFTP 服务器服务。值:true/ false。
引导镜像目录:指定提供文件的目录。
通常值为 /tftpboot。如果目录不存在,将创建它。服务器将此目录用作其根目录(使用 -s 选项)。
YaST 首次启动实用程序(YaST 初始系统配置)在安装完成后运行,可让您配置新安装的系统。在安装后的首次启动时,用户将通过一系列步骤进行指导,从而更轻松地配置系统。YaST 首次启动默认不运行,需要进行配置才能运行。
<firstboot>
<firstboot_enabled config:type="boolean">true</firstboot_enabled>
</firstboot>使用此模块的功能,您可以更改目标系统上的本地安全设置。本地安全设置包括引导配置、登录设置、密码设置、用户添加设置和文件权限。
自动配置安全设置类似于运行系统中可用的安全模块中的 Custom Settings。这允许您创建自定义配置。
有关以下示例中设置的含义和可能值,请参阅参考。
<security> <console_shutdown>ignore</console_shutdown> <displaymanager_remote_access>no</displaymanager_remote_access> <fail_delay>3</fail_delay> <faillog_enab>yes</faillog_enab> <gid_max>60000</gid_max> <gid_min>101</gid_min> <gdm_shutdown>root</gdm_shutdown> <lastlog_enab>yes</lastlog_enab> <encryption>md5</encryption> <obscure_checks_enab>no</obscure_checks_enab> <pass_max_days>99999</pass_max_days> <pass_max_len>8</pass_max_len> <pass_min_days>1</pass_min_days> <pass_min_len>6</pass_min_len> <pass_warn_age>14</pass_warn_age> <passwd_use_cracklib>yes</passwd_use_cracklib> <permission_security>secure</permission_security> <run_updatedb_as>nobody</run_updatedb_as> <uid_max>60000</uid_max> <uid_min>500</uid_min> <selinux_mode>permissive</selinux_mode> <lsm_select>selinux</lsm_select> </security>
使用 <pass_* 资源更改各种密码设置,例如最小密码长度、密码过期等。
使用 <encryption> 资源激活当前支持的加密方法之一。如果未设置,则配置 sha512。
您可以使用以下加密方法之一
md5 — 允许使用 128 位哈希值的更长密码
sha256 或 sha512 — 广泛使用的安全哈希算法
des — 由于安全性不足,我们不建议使用此加密方法
使用安全资源更改各种引导设置。
当控制台上的某人按下 Ctrl–Alt–Del 组合键时,系统通常会重新启动。有时,忽略此事件是可取的,例如,当系统既用作工作站又用作服务器时。
配置允许从 GDM 关闭机器的用户列表。
在 openSUSE Leap 15.4 及更高版本中,安装控制文件新增了一个选项 <lsm_select>,用于配置安装后默认激活哪个主要的 Linux 安全模块 (LSM):AppArmor、SELinux 或无。
可选。配置 SELinux 模式。值包括:permissive、enforcing 和 disabled。
可选。安装期间要选择的主要 Linux 安全模块。值包括:selinux、apparmor 或 none。
YaST 允许使用 OpenSCAP 安全策略进行系统加固。检查和应用安全策略分两个阶段进行
在安装时,YaST 会检查安全策略规则的子集,特别是那些在安装后难以修复的规则,例如加密文件系统。如果配置文件中描述的系统不符合这些规则中的任何一条,AutoYaST 将报告问题并中止安装。
此外,AutoYaST 会安装并配置 ssg-apply 工具。在首次启动期间,可以运行 ssg-apply 来扫描系统,并可选地修复系统以符合所选策略。
security_policy 部分选择安全策略并配置 ssg-apply。
选择要检查或应用的安全策略。目前,仅支持 国防信息系统局 安全技术实施指南 (DISA STIG)。使用名称 stig 指代此策略。此元素是强制性的。
指定 ssg-apply 在首次启动期间应执行的操作。
scan:在首次启动期间扫描系统。这是默认行为。
remediate:扫描并修复系统以符合所选策略。
none:配置但不在首次启动期间运行 ssg-apply。如果您想在加固系统之前修改策略,此选项很有用。
以下摘录指示 AutoYaST 检查 DISA STIG 策略并在首次启动期间修复系统。
<security>
<security_policy>
<policy>stig</policy>
<action>remediate</action>
</security_policy>
</security>此模块允许配置审计守护程序并为审计子系统添加规则。
<audit-laf>
<auditd>
<flush>INCREMENTAL</flush>
<freq>20</freq>
<log_file>/var/log/audit/audit.log</log_file>
<log_format>RAW</log_format>
<max_log_file>5</max_log_file>
<max_log_file_action>ROTATE</max_log_file_action>
<name_format>NONE</name_format>
<num_logs>4</num_logs>
</auditd>
<rules/>
</audit-laf>auditd/flush描述如何将数据写入磁盘。
如果设置为 INCREMENTAL,则 Frequency 参数指定在向磁盘发出显式刷新之前要写入多少条记录。NONE 表示:不进行特殊努力来刷新数据,DATA:保持数据部分同步,SYNC:保持数据和元数据完全同步。
auditd/freq此参数指定在向磁盘发出显式刷新之前要写入多少条记录。
参数 flush 需要设置为 INCREMENTAL。
auditd/log_file日志文件的完整路径名。
auditd/log_fomat需要记录多少信息。
设置为 RAW 以记录所有数据(以内核发送的精确格式存储)或 NOLOG 以丢弃所有审计信息而不是将其写入磁盘(不影响发送到调度程序的数据)。
auditd/max_log_file需要记录多少信息。
单位:兆字节
auditd/num_logs日志文件数量。
max_log_file_action 需要设置为 ROTATE
auditd/max_log_file_action如果日志容量已满,会发生什么。
如果操作设置为 ROTATE,则日志文件数量指定要保留的文件数量。设置为 SYSLOG 时,审计守护程序将向系统日志写入警告。使用 SUSPEND 时,守护程序停止向磁盘写入记录。IGNORE 表示不执行任何操作,KEEP_LOGS 类似于 ROTATE,但日志文件不会被覆盖。
auditd/name_format计算机名称格式描述如何将计算机名称写入日志文件。
如果设置为 USER,则使用用户定义的名称。NONE 表示不插入计算机名称。HOSTNAME 使用“gethostname”系统调用返回的名称。FQD 使用完全限定域名。
rulesauditctl 的规则
您可以手动编辑规则,我们只建议高级用户这样做。有关所有选项的更多信息,请参阅 man auditctl。
可以在 <users> 部分定义用户列表。为了能够登录,请确保设置了 root 用户或将 rootpassword 指定为 linuxrc 选项。
<users config:type="list">
<user>
<username>root</username>
<user_password>password</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
<user>
<username>tux</username>
<user_password>password</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
</users>以下示例展示了一个更复杂的场景。应用了 /etc/default/useradd 中的系统范围默认设置,例如 shell 或主目录的父目录。
<users config:type="list">
<user>
<username>root</username>
<user_password>password</user_password>
<uid>1001</uid>
<gid>100</gid>
<encrypted config:type="boolean">false</encrypted>
<fullname>Root User</fullname>
<authorized_keys config:type="list">
<listentry> ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKLt1vnW2vTJpBp3VK91rFsBvpY97NljsVLdgUrlPbZ/L51FerQQ+djQ/ivDASQjO+567nMGqfYGFA/De1EGMMEoeShza67qjNi14L1HBGgVojaNajMR/NI2d1kDyvsgRy7D7FT5UGGUNT0dlcSD3b85zwgHeYLidgcGIoKeRi7HpVDOOTyhwUv4sq3ubrPCWARgPeOLdVFa9clC8PTZdxSeKp4jpNjIHEyREPin2Un1luCIPWrOYyym7aRJEPopCEqBA9HvfwpbuwBI5F0uIWZgSQLfpwW86599fBo/PvMDa96DpxH1VlzJlAIHQsMkMHbsCazPNC0++Kp5ZVERiH root@example.net</listentry>
</authorized_keys>
</user>
<user>
<username>tux</username>
<user_password>password</user_password>
<uid>1002</uid>
<gid>100</gid>
<encrypted config:type="boolean">false</encrypted>
<fullname>Plain User</fullname>
<home>/Users/plain</home>
<password_settings>
<max>120</max>
<inact>5</inact>
</password_settings>
</user>
</users>authorized_keys 文件将被覆盖如果配置文件在 authorized_keys 部分为用户定义了一组 SSH 授权密钥,则现有的 $HOME/.ssh/authorized_keys 文件将被覆盖。如果不存在,则将创建文件并包含指定内容。通过不在 AutoYaST 控制文件中指定相应部分来避免覆盖现有的 authorized_keys 文件。
rootpassword 和 root 用户选项可以在 linuxrc 中指定 rootpassword,并为 root 用户设置一个用户部分。如果此部分缺少密码,则将使用 linuxrc 中的密码。配置文件中的密码优先于 linuxrc 密码。
root 的超级用户帐户虽然从技术上讲,可以创建一个用户 ID (uid) 为 0 且名称不是 root 的帐户,但某些应用程序、脚本或第三方产品可能依赖于名为 root 的用户的存在。虽然此类配置始终针对单个环境,但必要的调整可能会被供应商更新覆盖,因此这成为一项持续的任务,而不是一次性设置。在涉及第三方应用程序的非常复杂的设置中尤其如此,在这种情况下,需要与涉及的每个供应商核实是否支持重命名 root 帐户。
由于无法预见重命名 root 帐户的影响,SUSE 不支持重命名 root 帐户。
通常,重命名 root 帐户的目的是隐藏它或使其不可预测。但是,/etc/passwd 需要常规用户具有 644 权限,因此系统中的任何用户都可以检索用户 ID 0 的登录名。有关更好地保护 root 帐户的方法,请参阅 “安全和加固指南”丛书,第 14 章“用户管理”,第 14.5 节“限制 root 登录” 和 “安全和加固指南”丛书,第 14 章“用户管理”,第 14.5.3 节“限制 SSH 登录”。
uid)Linux 系统上的每个用户都有一个数字用户 ID。您可以通过使用 uid 在 AutoYaST 控制文件中手动指定此类用户 ID,或者不使用 uid 让系统自动选择用户 ID。
用户 ID 在整个系统中应该是唯一的。否则,某些应用程序(例如登录管理器 gdm)可能无法按预期工作。
在使用 AutoYaST 控制文件添加用户时,强烈建议不要混合使用用户定义的 ID 和自动提供的 ID。这样做时,无法保证 ID 的唯一性。要么为所有使用 AutoYaST 控制文件添加的用户指定 ID,要么让系统为所有用户选择 ID。
username文本
<username>lukesw</username>
必需。它应该是一个有效的用户名。如果不确定,请检查 man 8 useradd。
fullname文本
<fullname>Tux Torvalds</fullname>
可选。用户的全名。
forename文本
<forname>Tux</forename>
可选。用户的名字。
surname文本
<surname>Skywalker</surname>
可选。用户的姓氏。
uid编号
<uid>1001</uid>
可选。用户 ID。它应该是唯一的且必须是非负数。如果未指定,AutoYaST 将自动选择用户 ID。另请参阅 注意:指定用户 ID (uid) 以获取更多信息。
gid编号
<gid>100</gid>
可选。初始组 ID。它必须是唯一的且是非负数。此外,它必须引用现有组。
home路径
<home>/home/luke</home>
可选。用户主目录的绝对路径。默认情况下,将使用 /home/username(例如,alice 的主目录将是 /home/alice)。
home_btrfs_subvolume布尔值
<home_btrfs_subvolume config:type="boolean">true</home_btrfs_subvolume>
可选。在 Btrfs 子卷中生成主目录。默认禁用。
shell路径
<shell>/usr/bin/zsh</shell>
可选。/bin/bash 是默认值。如果您选择另一个,请确保已安装(将相应的软件包添加到 software 部分)。
user_password文本
<user_password>some-password</user_password>
可选。用户密码可以以纯文本形式(不推荐)或加密形式写入。要创建加密密码,请使用 mkpasswd。输入 /etc/shadow 中写入的密码(第二列)。要启用或禁用配置文件中加密密码的使用,请参阅 encrypted 参数。如果启用加密密码并输入感叹号 (!),则该值将复制到 /etc/shadow 的密码字段。因此,您将获得一个密码已锁定且无法在控制台上登录的帐户。
encrypted布尔值
<encrypted config:type="boolean">true</encrypted>
可选。如果不存在,则视为 false。指示配置文件中的用户密码是否加密。AutoYaST 支持标准加密算法(请参阅 man 3 crypt)。
password_settings密码设置
<password_settings> <expire/> <max>60</max> <warn>7</warn> </password_settings>
可选。可以自定义一些密码设置:expire(帐户过期日期,格式为 YYYY-MM-DD)、flag(/etc/shadow 标志)、inact(密码过期后帐户禁用的天数)、max(密码有效的最大天数)、min(密码过期后用户可以更改密码的宽限期天数)和 warn(密码更改提醒开始前的天数)。
authorized_keys授权密钥列表
<authorized_keys config:type="list"> <listentry>ssh-rsa ...</listentry> </authorized_keys>
要写入 $HOME/.ssh/authorized_keys 的授权密钥列表。请参见下面的示例。
配置文件可以为新用户指定一组默认值,例如密码过期、初始组、主目录前缀等。除了将它们用作配置文件中定义的用户的默认值之外,AutoYaST 还将这些设置写入 /etc/default/useradd 或任何其他适合 useradd 读取的文件。
group文本
<group>100</group>
可选。默认初始登录组。
home路径
<home>/home</home>
可选。用户主目录前缀。
expire日期
<expire>2017-12-31</expire>
可选。默认密码过期日期,格式为 YYYY-MM-DD。
inactive编号
<inactive>3</inactive>
可选。过期帐户被禁用后的天数。
shell路径
<shell>/usr/bin/fish</shell>
默认登录 shell。/bin/bash 是默认值。如果您选择另一个,请确保已安装(将相应的软件包添加到 software 部分)。
umask文件创建模式掩码
<umask>022</umask>
设置主目录的文件创建模式掩码。默认情况下,useradd 将使用 022。有关更多信息,请参阅 man 8 useradd 和 man 1 umask。
可以在 <groups> 中定义组列表,如示例所示。
<groups config:type="list">
<group>
<gid>100</gid>
<groupname>users</groupname>
<userlist>bob,alice</userlist>
</group>
</groups>groupname文本
<groupname>users</groupname>
必需。它应该是一个有效的组名。如果不确定,请检查 man 8 groupadd。
gid编号
<gid>100</gid>
可选。组 ID。它必须是唯一的且是非负数。
userlist用户列表
<userlist>bob,alice</userlist>
可选。属于该组的用户列表。用户名必须用逗号分隔。
可以通过 AutoYaST 配置文件启用两个特殊的登录设置:自动登录和无密码登录。两者都默认禁用。
<login_settings> <autologin_user>vagrant</autologin_user> <password_less_login config:type="boolean">true</password_less_login> </login_settings>
password_less_login布尔值
<password_less_login config:type="boolean">true</password_less_login>
可选。启用无密码登录。它只影响图形登录。
autologin_user文本
<autologin_user>alice</autologin_user>
可选。为给定用户启用自动登录。
通过将脚本添加到自动安装过程,您可以根据自己的需求自定义安装,并在安装的不同阶段进行控制。
在自动安装过程中,可以在安装的不同时间点执行五种类型的脚本
所有脚本都需要放在 <scripts> 部分。
pre-scripts(非常早,在其他任何事情真正发生之前)
postpartitioning-scripts(分区并挂载到 /mnt 之后,但在 RPM 安装之前)
chroot-scripts(软件包安装后,首次启动前)
post-scripts(已安装系统首次启动期间,没有服务运行)
init-scripts(已安装系统首次启动期间,所有服务都已启动并运行)
在 YaST 对系统进行任何实际更改之前(在分区和软件包安装之前,但在硬件检测之后)执行。
您可以使用前置脚本修改控制文件并让 AutoYaST 重新读取它。在 /tmp/profile/autoinst.xml 中找到您的控制文件。调整文件并将修改后的版本存储在 /tmp/profile/modified.xml 中。AutoYaST 将在前置脚本完成后读取修改后的文件。
还可以在前置脚本中修改存储设备。例如,您可以创建新分区或更改多路径等某些技术的配置。AutoYaST 始终在执行所有前置脚本后再次检查存储设备。
前置脚本在安装的早期阶段执行。这意味着如果您已请求确认安装,则这些脚本将在确认屏幕显示之前执行(profile/install/general/mode/confirm)。
要在前置脚本中调用 Zypper,您需要设置环境变量 ZYPP_LOCKFILE_ROOT="/var/run/autoyast" 以防止与正在运行的 YaST 进程发生冲突。
pre-script 元素必须按如下方式放置
<scripts>
<pre-scripts config:type="list">
<script>
...
</script>
</pre-scripts>
</scripts>在 YaST 完成分区并写入 /etc/fstab 后执行。空系统已挂载到 /mnt。
postpartitioning-script 元素必须按如下方式放置
<scripts>
<postpartitioning-scripts config:type="list">
<script>
...
</script>
</postpartitioning-scripts>
</scripts>Chroot 脚本在机器首次重启之前执行。您可以在安装 chroot 到已安装系统并配置引导加载程序之前执行 chroot 脚本,或者您可以在 chroot 到已安装系统之后执行脚本(为此请查看 chrooted 参数)。
chroot-scripts 元素必须按如下方式放置
<scripts>
<chroot-scripts config:type="list">
<script>
...
</script>
</chroot-scripts>
</scripts>这些脚本在 AutoYaST 完成系统配置并在首次启动系统后执行。
post-script 元素必须按如下方式放置
<scripts>
<post-scripts config:type="list">
<script>
...
</script>
</post-scripts>
</scripts>这些脚本在 YaST 完成后,在网络初始化后的初始引导过程中执行。这些最终脚本使用 /usr/lib/YaST2/bin/autoyast-initscripts.sh 执行,并且只执行一次。Init 脚本使用标签 init-scripts 进行配置。
init-script 元素必须按如下方式放置
<scripts>
<init-scripts config:type="list">
<script>
...
</script>
</init-scripts>
</scripts>Init 脚本与其他脚本类型不同,因为它们不是由 YaST 执行的,而是在 YaST 完成后执行的。因此,它们的 XML 表示与其他脚本类型不同。
位置定义脚本的获取位置。位置可以与配置文件相同(HTTP、FTP、NFS 等)。
<location>http://10.10.0.1/myInitScript.sh</location>
必须定义 <location> 或 <source>。
source脚本本身(源代码),封装在 CDATA 标签中。如果您不想将整个 shell 脚本放入 XML 配置文件中,请使用 location 参数。
<source> <![CDATA[echo "Testing the init script" >/tmp/init_out.txt]]></source>
必须定义 <location> 或 <source>。
filename脚本的文件名。它将存储在 /tmp 下的临时目录中
<filename>mynitScript5.sh</filename>
如果只有一个 init 脚本,则为可选。在这种情况下使用默认名称 (init-scripts)。如果指定了多个 init 脚本,则必须为每个脚本设置一个唯一的名称。
rerun通常,脚本只运行一次,即使您使用 ayast_setup 多次运行 XML 文件。通过将此布尔值设置为 true 来更改此默认行为。
<rerun config:type="boolean">true</rerun>
可选。默认值为 false(脚本只运行一次)。
手动添加到控制文件时,脚本需要包含在 CDATA 元素中,以避免与文件语法和控制文件中定义的其他标签混淆。
下面描述的大多数 XML 元素都可以用于上述所有脚本类型,除了 init 脚本,它们的定义只能包含这些元素的一个子集。有关它们的更多信息,请参阅 第 4.31.5 节,“Init 脚本”。
debug 是一个已弃用元素,可能会在未来的版本中删除。为了适应,请在 interpreter 中使用特定于解释器的调试参数。例如,使用 <interpreter>/bin/sh -x</interpreter> 而不是 <interpreter>shell</interpreter> 以获得与启用 debug 标志相同的结果。
位置定义脚本的获取位置。位置可以与控制文件相同(HTTP、FTP、NFS 等),例如
<location>http://10.10.0.1/myPreScript.sh</location>
位置也可以定义为相对 URL,其中路径是相对于包含控制文件的目录。如果使用相对 URL,location 属性显示如下
<location>relurl://script.sh</location>
或者,您可以使用 repo URI 方案。脚本位置是相对于安装源的,定义显示如下
<location>repo:/script.sh</location>
必须定义 location 或 source。
source脚本本身(源代码),封装在 CDATA 标签中。如果您不想将整个 shell 脚本放入 XML 控制文件,请参阅 location 参数。
<source> <![CDATA[ echo "Testing the pre script" > /tmp/pre-script_out.txt ]]> </source>
必须定义 location 或 source。
interpreter指定脚本必须使用的解释器。可以指定给定环境中可用的任何解释器。可以提供解释器的完整路径,包括参数。还有已弃用的关键字解释器“shell”、“perl”和“python”,它们受 debug 标志支持。
<interpreter>/bin/bash -x</interpreter>
可选;默认值为 shell。
file name脚本的文件名。它将存储在 /tmp 下的临时目录中。
<filename>myPreScript5.sh</filename>
可选;默认值是脚本的类型(在这种情况下是 pre-scripts)。如果您有多个脚本,则应为每个脚本定义不同的名称。如果未定义 filename 且定义了 location,则将使用 location 路径中的文件名。
feedback如果此布尔值为 true,则脚本的输出和错误消息(STDOUT 和 STDERR)将显示在弹出窗口中。用户需要通过“确定”按钮确认它们。
<feedback config:type="boolean">true</feedback>
可选;默认值为 false。
feedback_type这可以是 message、warning 或 error。在 <report> 部分设置这些弹出窗口的超时。
<feedback_type>warning</feedback_type>
可选;如果缺失,则使用始终阻塞的弹出窗口。
debug如果此值为 true,则 shell 脚本的每一行都将被记录。Perl 脚本将启用警告运行。这仅适用于已弃用的关键字 interpreter。对于其他语言,请在 interpreter 值中将解释器的路径作为参数提供,例如“<interpreter>ruby -w</interpreter>”。
<debug config:type="boolean">true</debug>
可选;默认值为 true。
notification此文本将在脚本在后台运行时显示在弹出窗口中。
<notification>Please wait while script is running...</notification>
可选;如果未配置,则不显示通知弹出窗口。
param-list可以指定传递给被调用脚本的参数。您可以有多个 param 条目。它们在脚本命令行上通过单个空格字符连接。如果需要任何 shell 引用(例如,为了保护嵌入的空格),您需要包含它。
<param-list config:type="list"> <param>par1</param> <param>par2 par3</param> <param>"par4.1 par4.2"</param> </param-list>
可选;如果未配置,则不向脚本传递任何参数。
rerun一个脚本只运行一次。即使您使用 ayast_setup 多次运行 XML 文件,脚本也只运行一次。通过将此布尔值设置为 true 来更改此默认行为。
<rerun config:type="boolean">true</rerun>
可选;默认值为 false,这意味着脚本只运行一次。
chrooted安装期间,新系统挂载在 /mnt。如果此参数设置为 false,AutoYaST 不会运行 chroot 并且在此阶段不安装引导加载程序。如果参数设置为 true,AutoYaST 会对 /mnt 执行 chroot 并安装引导加载程序。结果是,要更改新安装系统中的任何内容,您不再需要使用 /mnt 前缀。
<chrooted config:type="boolean">true</chrooted>
可选;默认值为 false。此选项仅适用于 chroot 环境脚本。
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<scripts>
<chroot-scripts config:type="list">
<script>
<chrooted config:type="boolean">true</chrooted>
<filename>chroot-post.sh</filename>
<interpreter>shell</interpreter>
<source><![CDATA[
echo "Testing chroot (chrooted) scripts"
ls
]]>
</source>
</script>
<script>
<filename>chroot-pre.sh</filename>
<interpreter>/bin/bash -x</interpreter>
<source><![CDATA[
echo "Testing chroot scripts"
df
cd /mnt
ls
]]>
</source>
</script>
</chroot-scripts>
<post-scripts config:type="list">
<script>
<filename>post.sh</filename>
<interpreter>shell</interpreter>
<source><![CDATA[
echo "Running Post-install script"
systemctl start portmap
mount -a 192.168.1.1:/local /mnt
cp /mnt/test.sh /tmp
umount /mnt
]]>
</source>
</script>
<script>
<filename>post.pl</filename>
<interpreter>perl</interpreter>
<source><![CDATA[
print "Running Post-install script";
]]>
</source>
</script>
</post-scripts>
<pre-scripts config:type="list">
<script>
<interpreter>shell</interpreter>
<location>http://192.168.1.1/profiles/scripts/prescripts.sh</location>
</script>
<script>
<filename>pre.sh</filename>
<interpreter>shell</interpreter>
<source><![CDATA[
echo "Running pre-script"
]]>
</source>
</script>
</pre-scripts>
<postpartitioning-scripts config:type="list">
<script>
<filename>postpart.sh</filename>
<interpreter>shell</interpreter>
<debug config:type="boolean">false</debug>
<feedback config:type="boolean">true</feedback>
<source><![CDATA[
touch /mnt/testfile
echo Hi
]]>
</source>
</script>
</postpartitioning-scripts>
</scripts>
</profile>安装完成后,脚本和输出日志可以在目录 /var/adm/autoinstall 中找到。脚本位于子目录 scripts 中,输出日志位于 log 目录中。
日志包含执行脚本时产生的输出,其中包含标准输出和标准错误输出的组合。
如果脚本以非零退出代码结束,则将显示带有日志内容的警告,除非提供了 feedback 选项。
使用 sysconfig 资源,可以直接在 sysconfig 存储库 (/etc/sysconfig) 中定义配置变量。Sysconfig 变量提供了根据您的需求精确调整许多系统组件和环境变量的可能性。
以下示例展示了如何使用 sysconfig 资源设置变量。
<sysconfig config:type="list" >
<sysconfig_entry>
<sysconfig_key>XNTPD_INITIAL_NTPDATE</sysconfig_key>
<sysconfig_path>/etc/sysconfig/xntp</sysconfig_path>
<sysconfig_value>ntp.host.com</sysconfig_value>
</sysconfig_entry>
<sysconfig_entry>
<sysconfig_key>HTTP_PROXY</sysconfig_key>
<sysconfig_path>/etc/sysconfig/proxy</sysconfig_path>
<sysconfig_value>proxy.host.com:3128</sysconfig_value>
</sysconfig_entry>
<sysconfig_entry>
<sysconfig_key>FTP_PROXY</sysconfig_key>
<sysconfig_path>/etc/sysconfig/proxy</sysconfig_path>
<sysconfig_value>proxy.host.com:3128</sysconfig_value>
</sysconfig_entry>
</sysconfig>可以提供相对路径和绝对路径。如果未提供绝对路径,则将其视为 /etc/sysconfig 目录下的 sysconfig 文件。
对于许多应用程序和服务,您可能有一个配置文件,应该将其复制到已安装系统上的适当位置。例如,如果您正在安装 Web 服务器,您可能有一个服务器配置文件 (httpd.conf)。
使用此资源,您可以通过指定已安装系统上的最终路径将文件嵌入到控制文件中。YaST 会将此文件复制到指定位置。
此功能需要安装 autoyast2 软件包。如果软件包缺失,AutoYaST 将在软件包缺失时自动安装。
您可以指定 file_location 以获取文件。这也可以是网络上的位置,例如 HTTP 服务器:<file_location>http://my.server.site/issue</file_location>。
也可以使用 relurl:// 前缀指定本地文件,例如:<file_location>relurl://path/to/file.conf</file_location>。
您可以指定以斜杠结尾的 file_path 来创建目录。
<files config:type="list">
<file>
<file_path>/etc/apache2/httpd.conf</file_path>
<file_contents>
<![CDATA[
some content
]]>
</file_contents>
</file>
<file>
<file_path>/mydir/a/b/c/</file_path> <!-- create directory -->
</file>
</files>下面显示了一个更高级的示例。此配置将使用 file_contents 中提供的内容创建文件,并更改文件的权限和所有权。文件复制到系统后,将执行一个脚本。这可用于修改文件并为客户端环境准备它。
<files config:type="list">
<file>
<file_path>/etc/someconf.conf</file_path>
<file_contents>
<![CDATA[
some content
]]>
</file_contents>
<file_owner>tux.users</file_owner>
<file_permissions>444</file_permissions>
<file_script>
<interpreter>shell</interpreter>
<source>
<![CDATA[
#!/bin/sh
echo "Testing file scripts" >> /etc/someconf.conf
df
cd /mnt
ls
]]>
</source>
</file_script>
</file>
</files>您可以选择在安装期间让用户决定控制文件中特定部分的值。如果您使用此功能,安装期间将弹出一个窗口,要求用户输入控制文件的特定部分。如果您想要完全自动安装,但用户应该设置本地帐户的密码,您可以通过控制文件中的 ask 指令来完成此操作。
下面列出的元素必须放置在以下 XML 结构中
<general>
<ask-list config:type="list">
<ask>
...
</ask>
</ask-list>
</general>question您想问用户的问题。
<question>Enter the LDAP server</question>
默认值是元素的路径(路径通常看起来很奇怪,所以我们建议输入一个问题)。
default为用户设置预选。文本条目将填充此值。复选框将为真或假,选择将预选给定值。
<default>dc=suse,dc=de</default>
可选。
help在问题左侧显示的可选帮助文本。
<help>Enter the LDAP server address.</help>
可选。
title在问题上方显示的可选标题。
<title>LDAP server</title>
可选。
类型您要更改的元素的类型。可能的值为 symbol、boolean、string 和 integer。分区部分中的文件系统是一个 symbol,而用户配置中的 encrypted 元素是一个 boolean。如果您查看控制文件中的 config:type="...." 属性,您可以看到该元素的类型。您还可以使用 static_text 作为类型。static_text 是一种不需要任何用户输入且可以显示帮助文本中未包含的信息的文本。
<type>symbol</type>
可选。默认值为 string。如果类型为 symbol,您还必须提供 selection 元素(请参阅下文)。
password如果此布尔值设置为 true,则会弹出一个密码对话框而不是简单的文本输入。将此设置为 true 仅在 type 为 string 时才有意义。
<password config:type="boolean">true</password>
可选。默认值为 false。
pathlistpath 元素列表。路径是以逗号分隔的元素列表,描述了您要更改的元素的路径。例如,网络配置元素可以在控制文件的 <networking> 部分中找到。因此,要更改该值,您需要将路径设置为 networking。
<pathlist config:type="list"> <path>networking,dns,hostname</path> <path>...</path> </pathlist>
要更改控制文件中第一个用户的密码,您需要将路径设置为 users,0,user_password。0 表示配置部分中的第一项。例如,在下面提到的 <users config:type="list"> 用户列表中,它与 root 相关。1 将是第二项,依此类推。
<users config:type="list">
<user>
<username>root</username>
<user_password>password to change</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
<user>
<username>tux</username>
<user_password>password to change</user_password>
<encrypted config:type="boolean">false</encrypted>
</user>
</users>如果 <user> 部分与上面类似,要为 root 设置密码,请使用如下所示的 <pathlist>
<pathlist config:type="list">
<path>users,0,user_password</path>
</pathlist>此信息是可选的,但您至少应该提供 path 或 file。
file您可以将问题的答案存储在文件中,以便稍后在您的某个脚本中使用。如果您在 stage=initial 期间询问,并且您想在 stage 2 中使用答案,则需要在一个作为 chrooted=false 运行的 chroot 脚本中复制答案文件。使用命令:cp /tmp/my_answer /mnt/tmp/。原因是 stage 1 中的 /tmp 在 RAM 磁盘中,并在重启后丢失,但已安装的系统已挂载在 /mnt/。
<file>/tmp/answer_hostname</file>
此信息是可选的,但您至少应该提供 path 或 file。
stageStage 配置了问题弹出的安装阶段。您可以将此值设置为 cont 或 initial。initial 意味着弹出窗口在安装的早期阶段出现,在前置脚本运行后不久。cont 意味着,带有问题的对话框在首次重启后,当系统首次启动时出现。您在 initial 阶段回答的问题会将答案写入硬盘上的控制文件。如果您在 initial 期间输入明文密码,则应注意这一点。当然,在 cont 阶段询问要使用的文件系统是没有意义的。在该阶段硬盘已分区,并且该问题将无效。
<stage>cont</stage>
可选。默认值为 initial。
selectionselection 元素包含 entry 元素列表。每个条目代表用户可以选择的一个可能选项。用户不能在文本框中输入值,但可以从值列表中选择。
<selection config:type="list">
<entry>
<value>
btrfs
</value>
<label>
Btrfs File System
</label>
</entry>
<entry>
<value>
ext3
</value>
<label>
Extended3 File System
</label>
</entry>
</selection>type=string 可选,type=boolean 不可能,type=symbol 强制。
dialog每个对话框可以提出多个问题。为此,请使用整数指定 dialog-id。所有具有相同 dialog-id 的问题都属于同一个对话框。对话框也按 id 排序。
<dialog config:type="integer">3</dialog>
可选。
element每个对话框可以有多个问题。为了实现这一点,您需要用整数指定 element-id。对话框中的问题按 ID 排序。
<element config:type="integer">1</element>
可选(参见 dialog)。
width您可以增加对话框的默认宽度。如果每个对话框有多个宽度规格,则使用最大的一个。该数字大致相当于字符数。
<width config:type="integer">50</width>
可选。
height您可以增加对话框的默认高度。如果每个对话框有多个高度规格,则使用最大的一个。该数字大致相当于行数。
<height config:type="integer">15</height>
可选。
frametitle每个对话框可以有多个问题。对话框上的每个问题都有一个框架,可以有一个框架标题,即每个问题的小标题。您可以将多个元素放入一个框架中。它们需要具有相同的框架标题。
<frametitle>User data</frametitle>
可选;默认无框架标题。
script您可以在回答问题后运行脚本。(有关脚本的详细说明,请参阅 第 4.34.1 节,“默认值脚本”。)
<script>...</script>
可选;默认无脚本。
ok_label您可以更改 按钮上的标签。最后指定对话框标签的元素获胜。
<ok_label>Finish</ok_label>
可选。
back_label您可以更改 按钮上的标签。最后指定对话框标签的元素获胜。
<back_label>change values</back_label>
可选。
timeout您可以在此处指定一个整数,用作以秒为单位的超时。如果用户在超时前未回答问题,则将默认值作为答案。当用户触摸或更改对话框中的任何小部件时,超时将关闭,并且需要通过 确认对话框。
<timeout config:type="integer">30</timeout>
可选;缺失的值被解释为 0,这意味着没有超时。
default_value_script您可以运行脚本来设置问题的默认值(有关默认值脚本的详细说明,请参阅 第 4.34.1 节,“默认值脚本”)。如果您可以计算默认值,此功能特别有用,尤其是在结合 timeout 选项使用时。
<default_value_script>...</default_value_script>
可选;默认无脚本。
您可以运行脚本来设置问题的默认值。如果您可以计算默认值,此功能特别有用,尤其是在结合 timeout 选项使用时。
通过将 第 4.31.6 节,“脚本 XML 表示” 中描述的元素放置在以下 XML 结构中来定义脚本
<general>
<ask-list config:type="list">
<ask>
<default_value_script>
...
</default_value_script>
</ask>
</ask-list>
</general>您 echo 到 STDOUT 的任何内容都将用作 ask-dialog 的默认值。如果您的脚本的退出代码不是 0,则使用正常的 default 元素。请注意使用 echo -n 来抑制 \n,并且您回显合理的值,而不是布尔值的““okay””(而是使用““true””)。
您可以在回答问题后运行脚本。
下面列出的元素必须放置在以下 XML 结构中
<general>
<ask-list config:type="list">
<ask>
<script>
...
</script>
</ask>
</ask-list>
</general>除了 第 4.31.6 节,“脚本 XML 表示” 中列出的元素外,<ask> 元素中的脚本还支持以下选项
filename脚本的文件名。
<filename>my_ask_script.sh</filename>
默认值为 ask_script.sh
environment一个布尔值,将问题答案的值作为环境变量传递给脚本。变量名为 VAL。
<environment config:type="boolean">true</environment>
可选。默认值为 false。
feedback一个布尔值,用于开启脚本执行的反馈。STDOUT 将显示在弹出窗口中,脚本执行后必须确认。
<feedback config:type="boolean">true</feedback>
可选,默认值为 false。
rerun_on_error保持对话框打开,直到脚本的退出代码为 0 (零)。您可以使用此功能验证用户的输入。脚本应打印有意义的错误消息并返回非零代码。请记住,您还应将 feedback 选项设置为 true,以便用户可以读取脚本中的错误消息。可选,默认值为 false。
您的脚本可以创建一个文件 /tmp/next_dialog,其中包含要显示的下一个对话框的 ID。值为 -1 会终止序列。
您可以在下面看到 ask 功能的用法示例。
<general>
<ask-list config:type="list">
<ask>
<pathlist config:type="list">
<path>ldap,ldap_server</path>
</pathlist>
<stage>cont</stage>
<help>Choose your server depending on your department</help>
<selection config:type="list">
<entry>
<value>ldap1.mydom.de</value>
<label>LDAP for development</label>
</entry>
<entry>
<value>ldap2.mydom.de</value>
<label>LDAP for sales</label>
</entry>
</selection>
<default>ldap2.mydom.de</default>
<default_value_script>
<source> <![CDATA[
echo -n "ldap1.mydom.de"
]]>
</source>
</default_value_script>
</ask>
<ask>
<pathlist config:type="list">
<path>networking,dns,hostname</path>
</pathlist>
<question>Enter Hostname</question>
<stage>initial</stage>
<default>enter your hostname here</default>
</ask>
<ask>
<pathlist config:type="list">
<path>partitioning,0,partitions,0,filesystem</path>
</pathlist>
<question>File System</question>
<type>symbol</type>
<selection config:type="list">
<entry>
<value config:type="symbol">ext4</value>
<label>default File System (recommended)</label>
</entry>
<entry>
<value config:type="symbol">ext3</value>
<label>Fallback File System</label>
</entry>
</selection>
</ask>
</ask-list>
</general>以下示例显示了在 AutoYaST 控制文件之间进行选择。AutoYaST 将在 ask-dialogs 完成后再次读取 modified.xml 文件。这样您就可以获取一个全新的控制文件。
<general>
<ask-list config:type="list">
<ask>
<selection config:type="list">
<entry>
<value>part1.xml</value>
<label>Simple partitioning</label>
</entry>
<entry>
<value>part2.xml</value>
<label>encrypted /tmp</label>
</entry>
<entry>
<value>part3.xml</value>
<label>LVM</label>
</entry>
</selection>
<title>XML Profile</title>
<question>Choose a profile</question>
<stage>initial</stage>
<default>part1.xml</default>
<script>
<filename>fetch.sh</filename>
<environment config:type="boolean">true</environment>
<source>
<![CDATA[
wget http://10.10.0.162/$VAL -O /tmp/profile/modified.xml 2>/dev/null
]]>
</source>
<debug config:type="boolean">false</debug>
<feedback config:type="boolean">false</feedback>
</script>
</ask>tion>
</ask-list>
</general>您可以使用如下脚本验证问题的答案
<general>
<ask-list config:type="list">
<ask>
<script>
<filename>my.sh</filename>
<rerun_on_error config:type="boolean">true</rerun_on_error>
<environment config:type="boolean">true</environment>
<source><![CDATA[
if [ "$VAL" = "myhost" ]; then
echo "Illegal Hostname!";
exit 1;
fi
exit 0
]]>
</source>
<debug config:type="boolean">false</debug>
<feedback config:type="boolean">true</feedback>
</script>
<dialog config:type="integer">0</dialog>
<element config:type="integer">0</element>
<pathlist config:type="list">
<path>networking,dns,hostname</path>
</pathlist>
<question>Enter Hostname</question>
<default>enter your hostname here</default>
</ask>
</ask-list>
</general>此功能仅适用于 S/390 架构。
通过 Kdump,如果整个内核崩溃,系统可以创建崩溃转储文件。崩溃转储文件包含系统崩溃时的内存内容。此类核心文件可以稍后由支持人员或(内核)开发人员分析,以找到系统崩溃的原因。Kdump 对于服务器最有用,因为您无法轻易重现此类崩溃,但修复问题很重要。
这也有一个缺点。启用 Kdump 需要额外保留 64 MB 到 128 MB 的系统 RAM 用于 Kdump,以防系统崩溃并需要生成转储。
本节仅描述如何使用 AutoYaST 设置 Kdump。它不描述 Kdump 的工作原理。有关详细信息,请参阅 kdump(7) 手册页。
以下示例显示了 Kdump 的通用配置。
<kdump>
<!-- memory reservation -->
<add_crash_kernel config:type="boolean">true</add_crash_kernel>
<crash_kernel>256M-:64M</crash_kernel>
<general>
<!-- dump target settings -->
<KDUMP_SAVEDIR>ftp://stravinsky.suse.de/incoming/dumps</KDUMP_SAVEDIR>
<KDUMP_FREE_DISK_SIZE>64</KDUMP_FREE_DISK_SIZE>
<KDUMP_KEEP_OLD_DUMPS>5</KDUMP_KEEP_OLD_DUMPS>
<!-- filtering and compression -->
<KDUMP_DUMPFORMAT>compressed</KDUMP_DUMPFORMAT>
<KDUMP_DUMPLEVEL>1</KDUMP_DUMPLEVEL>
<!-- notification -->
<KDUMP_NOTIFICATION_TO>tux@example.com</KDUMP_NOTIFICATION_TO>
<KDUMP_NOTIFICATION_CC>spam@example.com devnull@example.com</KDUMP_NOTIFICATION_CC>
<KDUMP_SMTP_SERVER>mail.example.com</KDUMP_SMTP_SERVER>
<KDUMP_SMTP_USER></KDUMP_SMTP_USER>
<KDUMP_SMTP_PASSWORD></KDUMP_SMTP_PASSWORD>
<!-- kdump kernel -->
<KDUMP_KERNELVER></KDUMP_KERNELVER>
<KDUMP_COMMANDLINE></KDUMP_COMMANDLINE>
<KDUMP_COMMANDLINE_APPEND></KDUMP_COMMANDLINE_APPEND>
<!-- expert settings -->
<KDUMP_IMMEDIATE_REBOOT>yes</KDUMP_IMMEDIATE_REBOOT>
<KDUMP_VERBOSE>15</KDUMP_VERBOSE>
<KEXEC_OPTIONS></KEXEC_OPTIONS>
</general>
</kdump>Kdump 默认启用。以下配置显示了如何禁用它。
<kdump> <add_crash_kernel config:type="boolean">false</add_crash_kernel> </kdump>
第一步是在启动时为 Kdump 预留内存。由于内存必须在启动过程的早期预留,因此配置是通过一个名为 crashkernel 的内核命令行参数完成的。预留的内存将用于加载第二个内核,如果第一个内核崩溃,该内核将在不重启的情况下执行。第二个内核有一个特殊的 initrd,其中包含保存转储到网络或磁盘、发送通知电子邮件以及最终重启所需的所有程序。
要为 Kdump 预留内存,请指定 amount(例如 64M 以从 RAM 预留 64 MB 内存)和 offset。语法是 crashkernel=AMOUNT@OFFSET。内核可以自动检测正确的偏移量(除了 Xen 管理程序,您需要指定 16M 作为偏移量)。需要预留的内存量取决于架构和主内存。
您还可以使用扩展命令行语法来根据系统 RAM 指定预留内存量。如果您为多个安装共享一个 AutoYaST 控制文件,或者经常在一台机器上移除或安装内存,这将很有用。语法是
BEGIN_RANGE_1-END_RANGE_1:AMOUNT_1,BEGIN_RANGE_2-END_RANGE_2:AMOUNT_2@OFFSET
BEGIN_RANGE_1 是第一个内存范围的开始(例如:0M),END_RANGE_1 是第一个内存范围的结束(如果应假定 infinity,则可以为空),依此类推。例如,256M-2G:64M,2G-:128M 在系统具有 256 MB 到 2 GB RAM 之间时预留 64 MB crashkernel 内存,在系统具有超过 2 GB RAM 时预留 128 MB crashkernel 内存。
另一方面,可以为 crashkernel 参数指定多个值。例如,当您需要预留低内存和高内存的不同段时,使用诸如 72M,low 和 256M,high 之类的值
<kdump>
<!-- memory reservation (high and low) -->
<add_crash_kernel config:type="boolean">true</add_crash_kernel>
<crash_kernel config:type="list">
<listentry>72M,low</listentry>
<listentry>256M,high</listentry>
</crash_kernel>
</kdump>以下列表显示了预留内存所需的设置
add_crash_kernel如果应预留内存并启用 Kdump,则设置为 true。
<add_crash_kernel config:type="boolean">true</add_crash_kernel>
required
crash_kernel使用上面讨论的 crashkernel 命令行语法。
<crash_kernel>256M:64M</crash_kernel>
还支持值列表。
<crash_kernel config:type="list"> <listentry>72M,low</listentry> <listentry>256M,high</listentry> </crash_kernel>
required
本节描述崩溃转储的存储位置和方式。
元素 KDUMP_SAVEDIR 指定保存转储的 URL。可能的方法有
file 保存到本地磁盘,
ftp 保存到 FTP 服务器(不加密),
sftp 保存到 SSH2 SFTP 服务器,
nfs 保存到 NFS 位置,以及
cifs 将转储保存到 Samba 或 Microsoft Windows 的 CIFS/SMP 导出。
有关详细信息,请参阅 kdump(5) 手册页。两个示例是:file:///var/crash(根据 FHS 的默认位置)和 ftp://user:password@host:port/incoming/dumps。将创建一个包含时间戳的子目录,并将转储保存到其中。
当转储保存到本地磁盘时,可以使用 KDUMP_KEEP_OLD_DUMPS 自动删除旧转储。将其设置为应保留的旧转储数量。如果目标分区最终剩余的可用磁盘空间少于 KDUMP_FREE_DISK_SIZE 中指定的值,则不保存转储。
内核转储未压缩和未过滤。它可能与您的系统 RAM 一样大。要获得更小的文件,请在之后压缩转储文件。转储在打开之前需要解压缩。
要使用页面压缩,该压缩会压缩每个页面并允许使用 crash(8) 调试工具进行动态解压缩,请将 KDUMP_DUMPFORMAT 设置为 compressed(默认)。
您可能不想保存所有内存页面,例如那些用零填充的页面。要过滤转储,请设置 KDUMP_DUMPLEVEL。0 生成完整转储,31 是最小转储。手册页 kdump(5) 和 makedumpfile(8) 列出了每个值将保存哪些页面。
KDUMP_SAVEDIR指定转储和相关文件将保存到的目标的 URL。
<KDUMP_SAVEDIR>file:///var/crash/</KDUMP_SAVEDIR>
required
KDUMP_FREE_DISK_SIZE保存转储后必须剩余的磁盘空间(以兆字节为单位)。如果没有足够的空间,转储将不会保存。
<KDUMP_FREE_DISK_SIZE>64</KDUMP_FREE_DISK_SIZE>
optional
KDUMP_KEEP_OLD_DUMPS如果 KDUMP_SAVEDIR 指向本地目录,则保留(不删除)的转储数量。如果您不想自动删除任何转储,请指定 0;如果除当前转储外的所有转储都应删除,请指定 -1。
<KDUMP_KEEP_OLD_DUMPS>4</KDUMP_KEEP_OLD_DUMPS>
optional
配置电子邮件通知,以便在机器崩溃并保存转储时收到通知。
由于 Kdump 在 initrd 中运行,本地邮件服务器无法发送通知电子邮件。需要指定一个 SMTP 服务器(请参阅下文)。
您需要在 KDUMP_NOTIFICATION_TO 中提供一个且仅一个地址。可以在 KDUMP_NOTIFICATION_CC 中指定更多地址。在两种情况下都只使用电子邮件地址,而不是真实姓名。
指定 KDUMP_SMTP_SERVER 和(如果服务器需要身份验证)KDUMP_SMTP_USER 和 KDUMP_SMTP_PASSWORD。目前不支持 TLS/SSL,但将来可能会添加。
KDUMP_NOTIFICATION_TO发送电子邮件的唯一电子邮件地址。其他收件人可以在 KDUMP_NOTIFICATION_CC 中指定。
<KDUMP_NOTIFICATION_TO >tux@example.com</KDUMP_NOTIFICATION_TO>
可选(如果为空则禁用通知)
KDUMP_NOTIFICATION_CC通知电子邮件的抄送行中的零个、一个或多个收件人。
<KDUMP_NOTIFICATION_CC >wilber@example.com suzanne@example.com</KDUMP_NOTIFICATION_CC>
optional
KDUMP_SMTP_SERVER用于邮件投递的 SMTP 服务器主机名。支持 SMTP 身份验证(参见 KDUMP_SMTP_USER 和 KDUMP_SMTP_PASSWORD),但不支持 TLS/SSL。
<KDUMP_SMTP_SERVER>email.suse.de</KDUMP_SMTP_SERVER>
可选(如果为空则禁用通知)
KDUMP_SMTP_USER与 KDUMP_SMTP_PASSWORD 一起用于 SMTP 身份验证的用户名。
<KDUMP_SMTP_USER>bwalle</KDUMP_SMTP_USER>
optional
KDUMP_SMTP_PASSWORD与 KDUMP_SMTP_USER 一起用于 SMTP 身份验证的密码。
<KDUMP_SMTP_PASSWORD>geheim</KDUMP_SMTP_PASSWORD>
optional
如前所述,会启动一个特殊内核来保存转储。如果您不想使用自动检测机制来找出使用哪个内核(请参阅 kdump(5) 手册页,其中描述了用于查找内核的算法),您可以在 KDUMP_KERNELVER 中指定自定义内核的版本。如果将其设置为 foo,则将使用位于 /boot/vmlinuz-foo 或 /boot/vmlinux-foo(在具有 vmlinuz 文件的平台上按此顺序)的内核。
您可以指定用于启动 Kdump 内核的命令行。通常使用引导命令行,减去与 Kdump 不相关的设置(如 crashkernel 参数),加上 Kdump 需要的一些设置(请参阅 kdump(5) 手册页)。要指定其他参数,请使用 KDUMP_COMMANDLINE_APPEND。如果您知道自己在做什么并且想要指定整个命令行,请设置 KDUMP_COMMANDLINE。
KDUMP_KERNELVER用于 Kdump 的内核版本字符串。留空以使用自动检测机制(强烈推荐)。
<KDUMP_KERNELVER >6.4.0-default</KDUMP_KERNELVER>
可选(如果为空则自动检测)
KDUMP_COMMANDLINE_APPENDKdump 内核的附加命令行参数。
<KDUMP_COMMANDLINE_APPEND >console=ttyS0,57600</KDUMP_COMMANDLINE_APPEND>
optional
KDUMP_Command Line覆盖自动生成的 Kdump 命令行。请谨慎使用。通常,KDUMP_COMMANDLINE_APPEND 应该足够了。
<KDUMP_COMMANDLINE_APPEND >root=/dev/sda5 nr_cpus=1 irqpoll</KDUMP_COMMANDLINE>
optional
KDUMP_IMMEDIATE_REBOOT
如果系统在保存转储后应自动重启,则为 true,否则为 false。默认是自动重启系统。
<KDUMP_IMMEDIATE_REBOOT >true</KDUMP_IMMEDIATE_REBOOT>
optional
KDUMP_VERBOSE指定 Kdump 过程应有多详细的位掩码。有关详细信息,请阅读 kdump(5)。
<KDUMP_VERBOSE>3</KDUMP_VERBOSE>
optional
KEXEC_OPTIONS加载 Kdump 内核时传递给 kexec 的附加选项。通常为空。
<KEXEC_OPTIONS>--noio</KEXEC_OPTIONS>
optional
Bind DNS 服务器可以通过添加 dns-server 资源进行配置。该资源的三个更直接的属性可以具有 1 的值以启用它们,或 0 以禁用它们。
|
属性 |
值 |
描述 |
|---|---|---|
|
|
0 / 1 |
DNS 服务器必须在 chroot 中进行监狱。 |
|
|
0 / 1 |
Bind 已启用(在系统启动时执行)。 |
|
|
0 / 1 |
将设置存储在 LDAP 中而不是本机配置文件中。 |
<dns-server> <chroot>0</chroot> <start_service>1</start_service> <use_ldap>0</use_ldap> </dns-server>
除了这些基本设置之外,还有三个列表类型的属性可用于微调服务配置。
|
列表 |
描述 |
|---|---|
|
|
DNS 服务器日志记录选项。 |
|
|
Bind 选项,例如要使用的文件和目录、转发器列表以及其他配置设置。 |
|
|
服务器已知的所有 DNS 区域列表,包括所有设置、记录和 SOA 记录。 |
<dns-server>
<logging config:type="list">
<listentry>
<key>channel</key>
<value>log_syslog { syslog; }</value>
</listentry>
</logging>
<options config:type="list">
<option>
<key>forwarders</key>
<value>{ 10.10.0.1; }</value>
</option>
</options>
<zones config:type="list">
<listentry>
<is_new>1</is_new>
<modified>1</modified>
<options config:type="list"/>
<records config:type="list">
<listentry>
<key>mydom.uwe.</key>
<type>MX</type>
<value>0 mail.mydom.uwe.</value>
</listentry>
<listentry>
<key>mydom.uwe.</key>
<type>NS</type>
<value>ns.mydom.uwe.</value>
</listentry>
</records>
<soa>
<expiry>1w</expiry>
<mail>root.aaa.aaa.cc.</mail>
<minimum>1d</minimum>
<refresh>3h</refresh>
<retry>1h</retry>
<serial>2005082300</serial>
<server>aaa.aaa.cc.</server>
<zone>@</zone>
</soa>
<soa_modified>1</soa_modified>
<ttl>2d</ttl>
<type>master</type>
<update_actions config:type="list">
<listentry>
<key>mydom.uwe.</key>
<operation>add</operation>
<type>NS</type>
<value>ns.mydom.uwe.</value>
</listentry>
</update_actions>
<zone>mydom.uwe</zone>
</listentry>
</zones>
</dns-server>dhcp-server 资源可以通过以下六个属性来配置 DHCP 服务器的所有设置。
|
元素 |
值 |
描述 |
|---|---|---|
|
|
0 / 1 |
值为 1 表示 DHCP 服务器必须在 chroot 中进行监狱。 |
|
|
0 / 1 |
将其设置为 1 以启用 DHCP 服务器(即,在系统启动时运行它)。 |
|
|
0 / 1 |
如果设置为 1,则设置将存储在 LDAP 中而不是本机配置文件中。 |
|
|
文本 |
字符串,包含启动时将传递给 DHCP 服务器可执行文件的参数。例如,使用 "-p 1234" 在非标准 1234 端口上监听。有关所有可能选项,请查阅 dhcpd 手册页。如果留空,将使用默认值。 |
|
|
列表 |
DHCP 服务器将运行的网络卡列表。有关确切格式,请参见下面的示例。 |
|
|
列表 |
用于配置 DHCP 服务器行为的设置列表。配置以树状结构定义,其中根表示全局选项,子网和主机嵌套于其下。 |
<dhcp-server>
<allowed_interfaces config:type="list">
<allowed_interface>eth0</allowed_interface>
</allowed_interfaces>
<chroot>0</chroot>
<other_options>-p 9000</other_options>
<start_service>1</start_service>
<use_ldap>0</use_ldap>
<settings config:type="list">
<settings_entry>
<children config:type="list"/>
<directives config:type="list">
<listentry>
<key>fixed-address</key>
<type>directive</type>
<value>192.168.0.10</value>
</listentry>
<listentry>
<key>hardware</key>
<type>directive</type>
<value>ethernet d4:00:00:bf:00:00</value>
</listentry>
</directives>
<id>static10</id>
<options config:type="list"/>
<parent_id>192.168.0.0 netmask 255.255.255.0</parent_id>
<parent_type>subnet</parent_type>
<type>host</type>
</settings_entry>
<settings_entry>
<children config:type="list">
<child>
<id>static10</id>
<type>host</type>
</child>
</children>
<directives config:type="list">
<listentry>
<key>range</key>
<type>directive</type>
<value>dynamic-bootp 192.168.0.100 192.168.0.150</value>
</listentry>
<listentry>
<key>default-lease-time</key>
<type>directive</type>
<value>14400</value>
</listentry>
<listentry>
<key>max-lease-time</key>
<type>directive</type>
<value>86400</value>
</listentry>
</directives>
<id>192.168.0.0 netmask 255.255.255.0</id>
<options config:type="list"/>
<parent_id/>
<parent_type/>
<type>subnet</type>
</settings_entry>
<settings_entry>
<children config:type="list">
<child>
<id>192.168.0.0 netmask 255.255.255.0</id>
<type>subnet</type>
</child>
</children>
<directives config:type="list">
<listentry>
<key>ddns-update-style</key>
<type>directive</type>
<value>none</value>
</listentry>
<listentry>
<key>default-lease-time</key>
<type>directive</type>
<value>14400</value>
</listentry>
</directives>
<id/>
<options config:type="list"/>
<parent_id/>
<parent_type/>
<type/>
</settings_entry>
</settings>
</dhcp-server>从 openSUSE Leap 15.0 开始,SuSEfirewall2 已被 firewalld 取代。使用 SuSEfirewall2 属性的配置文件将被转换为 firewalld 配置文件。但是,并非所有配置文件属性都可以转换。
对基于 SuSEfirewall2 的配置文件的支持将是部分支持,因为许多选项在 firewalld 中无效,并且一些缺失的配置可能会影响您的网络安全。
在 firewalld 中,通用配置只公开了几个属性,大部分配置是通过区域完成的。
|
属性 |
值 |
描述 |
|---|---|---|
|
|
布尔值 |
|
|
|
布尔值 |
|
|
|
区域名称 |
默认区域用于所有未明确分配的内容。 |
|
|
要记录的丢弃数据包类型 |
为选定的类型启用丢弃数据包的日志记录。值: |
|
|
区域标识符 |
用于标识区域。如果该区域尚不为人所知,则将创建一个新区域。 |
|
|
区域简要摘要 |
简要总结区域的目的。对于已存在的区域,此项将被忽略。如果未指定,则使用名称。 |
|
|
区域描述 |
描述区域的目的。对于已存在的区域,此项将被忽略。如果未指定,则使用名称。 |
|
|
默认操作 |
定义区域中没有规则匹配时的默认操作。可能的值是 |
firewalld 的配置基于多个区域的存在,这些区域定义了连接、接口或源地址的信任级别。每个区域的行为可以通过多种方式进行调整,尽管并非所有属性都已公开。
|
属性 |
值 |
描述 |
|---|---|---|
|
|
接口名称列表 |
分配给此区域的接口名称列表。接口或源只能属于一个区域。 |
|
|
服务列表 |
此区域中可访问的服务列表。 |
|
|
端口列表 |
要在指定区域中打开的单个端口或端口范围列表。 |
|
|
协议列表 |
要在指定区域中打开或可访问的协议列表。 |
|
|
启用网络地址转换 |
它将启用或禁用指定区域中的网络地址转换 (NAT)。 |
从 openSUSE Leap 15.3 开始,firewalld 配置文件通常在安装的第一阶段结束时应用。(要了解安装阶段,请参阅第 1.2 节,“概览和概念”。)但是,在某些情况下,配置文件会在第二阶段应用。以下列表指定了 firewalld 配置文件在第一或第二阶段应用的条件
您正在运行带有 firewalld 部分的 AutoYaST,并且未通过 SSH 或 VNC 安装 openSUSE Leap。防火墙在第一阶段配置。
您正在运行带有 firewalld 部分的 AutoYaST,通过 SSH 或 VNC 安装 openSUSE Leap,并且不需要第二阶段。防火墙在第一阶段配置。
您正在运行带有 firewalld 部分的 AutoYaST,通过 SSH 或 VNC 安装 openSUSE Leap,并且需要第二阶段。防火墙在第二阶段配置。
您正在运行不带 firewalld 部分的 AutoYaST。防火墙根据默认产品建议在第一阶段配置。
您正在运行带有或不带防火墙部分的 AutoYaST,并结合需要网络访问的自定义脚本。防火墙根据配置文件或产品建议在第一阶段配置,并且必须调整防火墙配置,以便自定义脚本根据需要具有网络访问权限。
防火墙部分(包括常规属性和区域特定属性)的完整示例如下所示。
<firewall>
<enable_firewall config:type="boolean">true</enable_firewall>
<log_denied_packets>all</log_denied_packets>
<default_zone>external</default_zone>
<zones config:type="list">
<zone>
<name>public</name>
<interfaces config:type="list">
<interface>eth0</interface>
</interfaces>
<services config:type="list">
<service>ssh</service>
<service>dhcp</service>
<service>dhcpv6</service>
<service>samba</service>
<service>vnc-server</service>
</services>
<ports config:type="list">
<port>21/udp</port>
<port>22/udp</port>
<port>80/tcp</port>
<port>443/tcp</port>
<port>8080/tcp</port>
</ports>
</zone>
<zone>
<name>dmz</name>
<interfaces config:type="list">
<interface>eth1</interface>
</interfaces>
</zone>
</zones>
</firewall>除了核心组件配置(如网络身份验证和安全性)之外,AutoYaST 还提供了各种硬件和系统配置选项,这些选项与任何手动和交互式安装的系统上默认可用的选项相同。例如,可以配置打印机、声卡、电视卡以及任何其他在 YaST 中具有模块的硬件组件。
添加到 YaST 的任何新配置选项都将自动在 AutoYaST 中可用。
AutoYaST 对打印的支持仅限于基本设置,这些设置定义了客户端如何通过网络使用 CUPS 进行打印。
AutoYaST 不支持设置本地打印队列。现代打印机通常通过 USB 连接。CUPS 通过型号特定的设备 URI(例如 usb://ACME/FunPrinter?serial=1a2b3c)访问 USB 打印机。通常无法提前预测正确的 USB 设备 URI,因为它是由 CUPS 后端 usb 在运行时确定的。因此,无法使用 AutoYaST 设置本地打印队列。
CUPS 如何在客户端工作站上通过网络打印的基础知识
在客户端工作站上,应用程序将打印作业提交给 CUPS 守护程序 (cupsd)。cupsd 将打印作业转发到网络中的 CUPS 打印服务器,并在该服务器上处理打印作业。服务器将打印机特定数据发送到打印机设备。
如果网络中只有一个 CUPS 打印服务器,则无需在每个客户端工作站上运行 CUPS 守护程序。相反,更简单的方法是在 /etc/cups/client.conf 中指定 CUPS 服务器并直接访问它(只能设置一个 CUPS 服务器条目)。在这种情况下,在客户端工作站上运行的应用程序将打印作业直接提交到指定的 CUPS 打印服务器。
示例 4.77,“打印机配置”显示了一个 printer 配置部分。cupsd_conf_content 条目包含 cupsd 配置文件 /etc/cups/cupsd.conf 的全部逐字内容。client_conf_content 条目包含 /etc/cups/client.conf 的全部逐字内容。printer 部分包含 cupsd 配置,但它未指定 cupsd 是否应运行。
<printer>
<client_conf_content>
<file_contents><![CDATA[
... verbatim content of /etc/cups/client.conf ...
]]></file_contents>
</client_conf_content>
<cupsd_conf_content>
<file_contents><![CDATA[
... verbatim content of /etc/cups/cupsd.conf ...
]]></file_contents>
</cupsd_conf_content>
</printer>/etc/cups/cups-files.conf在 1.6 版本中,CUPS 配置文件已分为两个文件:cupsd.conf 和 cups-files.conf。从 openSUSE Leap 15.6 开始,AutoYaST 仅支持修改 cupsd.conf,因为 cups-files.conf 中的默认设置足以满足常见的打印设置。
下面显示了使用配置系统创建的声音配置示例。
<sound>
<autoinstall config:type="boolean">true</autoinstall>
<modules_conf config:type="list">
<module_conf>
<alias>snd-card-0</alias>
<model>M5451, ALI</model>
<module>snd-ali5451</module>
<options>
<snd_enable>1</snd_enable>
<snd_index>0</snd_index>
<snd_pcm_channels>32</snd_pcm_channels>
</options>
</module_conf>
</modules_conf>
<volume_settings config:type="list">
<listentry>
<Master config:type="integer">75</Master>
</listentry>
</volume_settings>
</sound>YaST 允许从以前的安装中导入 SSH 密钥和服务器配置。此功能的行为也可以通过 AutoYaST 配置文件进行控制。
<ssh_import> <import config:type="boolean">true</import> <copy_config config:type="boolean">true</copy_config> <device>/dev/sda2</device> </ssh_import>
|
属性 |
值 |
描述 |
|---|---|---|
|
|
true / false |
SSH 密钥将被导入。如果设置为 |
|
|
true / false |
此外,还将导入 SSH 服务器配置。如果将 |
|
|
分区 |
要从中导入密钥和配置的分区。如果未设置,则使用包含最近访问的密钥的分区。 |
AutoYaST 允许将部分配置委派给配置管理工具,例如 Salt。AutoYaST 负责基本系统安装(分区、网络设置等),其余配置任务可以委派。
虽然本文档中提到了 Puppet,但目前仅支持 Salt。尽管如此,如果您发现 Puppet 的任何问题,请随时报告。
AutoYaST 支持两种不同的方法
使用配置管理服务器。在这种情况下,AutoYaST 会设置一个配置管理工具。它连接到主服务器以获取配置系统的指令。
从其他地方(例如,HTTP 服务器或 USB 闪存盘)获取配置,并以独立模式运行配置管理工具。
当配置管理服务器(Salt 和 Puppet 术语中的主服务器)已就位时,此方法特别有用。在这种情况下,最困难的部分可能是设置适当的身份验证机制。
Salt 和 Puppet 都支持以下身份验证方法
即时手动身份验证。当 AutoYaST 启动客户端时,会生成新的身份验证请求。管理员可以在服务器上手动接受此请求。AutoYaST 将重试连接。如果在此期间密钥被接受,AutoYaST 将继续安装。
使用预置密钥。请参阅您选择的配置管理系统的文档,了解如何生成它们。使用 keys_url 选项告诉 AutoYaST 在哪里查找它们。
通过下面的配置示例,AutoYaST 将启动客户端以生成身份验证请求。它将尝试连接最多三次,每次尝试之间等待 15 秒。
<configuration_management>
<type>salt</type>
<master>my-salt-server.example.net</master>
<auth_attempts config:type="integer">3</auth_attempts>
<auth_time_out config:type="integer">15</auth_time_out>
</configuration_management>但是,通过以下示例,AutoYaST 将从闪存盘(例如,USB 闪存盘)检索密钥,并使用它们连接到主服务器。
<configuration_management>
<type>salt</type>
<master>my-salt-server.example.net</master>
<keys_url>usb:/</keys_url>
</configuration_management>下表总结了这些场景支持的选项。
|
属性 |
值 |
描述 |
|---|---|---|
|
|
String |
配置管理名称。目前仅支持 |
|
|
String |
配置管理服务器的主机名或 IP 地址。 |
|
|
Integer |
连接到服务器的最大尝试次数。默认值为三次尝试。 |
|
|
Integer |
连接到服务器尝试之间的时间(以秒为单位)。默认值为 15 秒。 |
|
|
使用的密钥的 URL |
HTTP 服务器、硬盘、闪存盘或类似设备(包含 |
|
|
True/False |
在安装后在客户端启用配置管理服务。默认值为 |
对于简单的场景,部署配置管理服务器是不必要的。相反,使用 Salt 或 Puppet 的独立(或无主)模式。
由于没有服务器,AutoYaST 需要知道从哪里获取配置。将配置放入 TAR 档案并将其存储在任何地方(例如,在闪存盘、HTTP/HTTPS 服务器、NFS/SMB 共享上)。
TAR 档案必须具有与 Salt 服务器中 /srv 下预期的相同布局。这意味着您需要将 Salt 状态文件放置在 salt 目录中,并将公式放置在单独的 formulas 目录中。
此外,您可以拥有一个包含 pillar 数据的 pillar 目录。或者,您可以通过使用 pillar_url 选项在单独的 TAR 档案中提供该数据。
<configuration_management>
<type>salt</type>
<states_url>my-salt-server.example.net</states_url>
<pillar_url>my-salt-server.example.net</pillar_url>
</configuration_management>|
属性 |
值 |
描述 |
|---|---|---|
|
|
String |
配置管理名称。目前仅支持 |
|
|
URL |
Salt 状态 TAR 档案的位置。它可能包括公式和 pillar。文件必须位于 |
|
|
URL |
包含 pillar 的 TAR 档案的位置。 |
|
|
URL |
Puppet 模块的位置。 |
在处理多个系统的安装时,使用单个配置(或一组较小的配置),使其能够自动适应每个系统可能很有用。在这方面,AutoYaST 提供了三种不同的机制来在安装时修改配置。
规则和类允许以不同的方式定制机器集的安装
ERB 模板用于在 AutoYaST 配置中嵌入 Ruby 代码,以便在安装过程中修改配置。通过这种方法,您可以检查系统并调整配置,例如设置值、添加或跳过部分等。
第 4.31.1 节,“预脚本”已经描述了如何使用预脚本修改当前配置文件。简而言之,如果脚本创建了一个 /tmp/profile/modified.xml 文件,AutoYaST 会导入该配置文件并放弃初始配置文件。
在处理多个系统的安装时,使用单个配置(或一组较小的配置),使其能够自动适应每个系统可能很有用。在这方面,AutoYaST 提供了三种不同的机制来在安装时修改配置。
规则和类提供了在安装过程中通过合并多个控制文件来配置系统的可能性。您可以在第 6 章,“规则和类”部分阅读有关此功能的更多信息。
AutoYaST 支持嵌入式 Ruby (ERB) 模板语法,用于在安装过程中修改配置文件的内容。第 7 章,“ERB 模板”部分描述了如何使用它们。
您可以使用预安装脚本在安装过程中修改甚至创建全新的配置文件。第 4.31.1 节,“预脚本”描述了如何利用它们。
作为替代方案,AutoYaST 可以在运行时向用户询问要在配置文件中使用的值。在这种情况下,安装不是完全无人值守的,但对于设置用户名、密码、IP 地址等非常有用。您可以在第 4.34 节,“在安装期间询问用户值”部分找到有关此功能的更多信息。
规则和类允许以不同的方式定制机器集的安装
规则允许根据系统属性配置系统。
类代表目标系统组的配置。类可以分配给系统。
autoyast 启动选项规则和类仅由启动参数 autoyast=URL 支持。
不支持 autoyast2=URL,因为此选项仅下载单个 AutoYaST 控制文件。
规则提供了在安装过程中通过合并多个控制文件,根据系统属性配置系统的可能性。基于规则的安装由规则文件控制。
例如,这对于一次性安装两个部门的系统可能很有用。假设一个场景,其中部门 A 的机器需要安装为办公桌面,而部门 B 的机器需要安装为开发人员工作站。您将创建一个包含两个不同规则的规则文件。对于每个规则,您可以使用不同的系统参数来区分安装。每个规则还将包含指向每个部门的相应配置文件的链接。
规则文件是一个 XML 文件,其中包含您要自动安装的每个系统组(或单个系统)的规则。一组规则根据一个或多个系统属性区分一组系统。通过所有规则后,每个系统组都链接到一个控制文件。规则文件和控制文件都必须位于预定义且可访问的位置。
仅当不使用 autoyast 关键字提供特定控制文件时,才会检索规则文件。例如,如果使用以下内容,则不会评估规则文件
autoyast=http://10.10.0.1/profile/myprofile.xml autoyast=http://10.10.0.1/profile/rules/rules.xml
改为使用
autoyast=http://10.10.0.1/profile/
这将加载 http://10.10.0.1/profile/rules/rules.xml(目录名称末尾的斜杠很重要)。
如果多条规则适用,则使用合并脚本即时生成每个组的最终控制文件。合并过程基于规则的顺序,后面的规则会覆盖早期规则中的配置数据。请注意,为了合并成功,合并的 XML 文件中的顶层部分的名称需要按字母顺序排列。
规则文件的使用是可选的。如果未找到规则文件,系统安装将以标准方式进行,即使用提供的控制文件或根据系统的 MAC 或 IP 地址搜索控制文件。
以下简单示例说明了如何使用规则文件检索具有已知硬件的客户端的配置。
<?xml version="1.0"?>
<!DOCTYPE autoinstall>
<autoinstall xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<rules config:type="list">
<rule>
<disksize>
<match>/dev/sdc 1000</match>
<match_type>greater</match_type>
</disksize>
<result>
<profile>department_a.xml</profile>
<continue config:type="boolean">false</continue>
</result>
</rule>
<rule>
<disksize>
<match>/dev/sda 1000</match>
<match_type>greater</match_type>
</disksize>
<result>
<profile>department_b.xml</profile>
<continue config:type="boolean">false</continue>
</result>
</rule>
</rules>
</autoinstall>最后一个示例定义了两条规则,并为每条规则提供了不同的控制文件。在这种情况下使用的规则是 disksize。解析规则文件后,YaST 尝试将目标系统与 rules.xml 文件中的规则进行匹配。当目标系统与规则中定义的所有系统属性匹配时,就会发生规则匹配。当系统匹配一条规则时,相应的资源将添加到 AutoYaST 将用于创建最终控制文件的控制文件堆栈中。continue 属性告诉 AutoYaST 在找到匹配项后是否应继续执行其他规则。
如果第一条规则不匹配,则检查列表中的下一条规则,直到找到匹配项。
使用 disksize 属性,您可以为具有不同大小硬盘的系统提供不同的配置。第一条规则检查设备 /dev/sdc 是否可用,以及它是否大于 1 GB(使用 match 属性)。
规则必须至少有一个要匹配的属性。如果您需要检查更多属性,例如内存或架构,您可以在规则资源中添加更多属性,如以下示例所示。
以下示例说明了如何使用规则文件检索具有已知硬件的客户端的配置。
<?xml version="1.0"?>
<!DOCTYPE autoinstall>
<autoinstall xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<rules config:type="list">
<rule>
<disksize>
<match>/dev/sdc 1000</match>
<match_type>greater</match_type>
</disksize>
<memsize>
<match>1000</match>
<match_type>greater</match_type>
</memsize>
<result>
<profile>department_a.xml</profile>
<continue config:type="boolean">false</continue>
</result>
</rule>
<rule>
<disksize>
<match>/dev/sda 1000</match>
<match_type>greater</match_type>
</disksize>
<memsize>
<match>256</match>
<match_type>greater</match_type>
</memsize>
<result>
<profile>department_b.xml</profile>
<continue config:type="boolean">false</continue>
</result>
</rule>
</rules>
</autoinstall>规则目录必须位于引导时通过 autoyast 关键字指定的同一目录中。如果客户端使用 autoyast=http://10.10.0.1/profiles/ 引导,AutoYaST 将在 http://10.10.0.1/profiles/rules/rules.xml 搜索规则文件。
如果 AutoYaST 为规则提供的属性不足以满足您的目的,请使用自定义规则。自定义规则包含一个 Shell 脚本。可以评估脚本的输出(STDOUT,STDERR 被忽略)。
以下是自定义规则的使用示例
<rule>
<custom1>
<script>
if grep -i intel /proc/cpuinfo > /dev/null; then
echo -n "intel"
else
echo -n "non_intel"
fi;
</script>
<match>*</match>
<match_type>exact</match_type>
</custom1>
<result>
<profile>@custom1@.xml</profile>
<continue config:type="boolean">true</continue>
</result>
</rule>此规则中的脚本可以向 STDOUT 输出 intel 或 non_intel(在这种情况下,grep 命令的输出必须重定向到 /dev/null)。规则脚本的输出将填充在两个“@”字符之间,以确定要获取的控制文件的文件名。AutoYaST 将读取输出并获取名为 intel.xml 或 non_intel.xml 的文件。此文件可以包含用于软件选择的 AutoYaST 配置文件部分;例如,如果您希望在 Intel 硬件上使用与在其他硬件上不同的软件选择。
自定义规则的数量限制为五条。因此您可以使用 custom1 到 custom5。
您可以使用五种不同的匹配类型
exact(默认)
大于
小于
范围
regex(一个简单的 =~ 运算符,类似于 Bash 中的)
如果使用 exact,字符串必须与指定内容完全匹配。regex 可用于匹配子字符串,例如 ntel 将匹配 Intel、intel 和 intelligent。greater 和 lower 可用于 memsize 或 totaldisk 等。它们只能与返回整数值的规则匹配。范围也只适用于整数值,形式为 value1-value2,例如 512-1024。
多个属性可以通过逻辑运算符组合。可以使规则匹配,如果 disksize 大于 1GB 或 memsize 恰好是 512MB。
您可以使用 rules.xml 文件中的 operator 元素来完成此操作。and 和 or 是可能的运算符,and 是默认值。这是一个示例
<rule>
<disksize>
<match>/dev/sda 1000</match>
<match_type>greater</match_type>
</disksize>
<memsize>
<match>256</match>
<match_type>greater</match_type>
</memsize>
<result>
<profile>machine2.xml</profile>
<continue config:type="boolean">false</continue>
</result>
<operator>or</operator>
</rule>下表列出了您可以在规则文件中匹配的预定义系统属性。
如果您不确定系统上的值,请运行 /sbin/yast2 ayast_probe ncurses。显示检测值的文本框可以滚动。请注意,当其他需要锁的 YaST 进程(例如安装程序)正在运行时,此命令将不起作用。因此,您不能在安装期间运行它。
|
属性 |
值 |
描述 |
|---|---|---|
|
|
主机的 IP 地址 |
此属性必须始终完全匹配。 |
|
|
主机的名称 |
此属性必须始终完全匹配。 |
|
|
主机的域名 |
此属性必须始终完全匹配。 |
|
|
要安装的产品名称。 |
此属性必须始终完全匹配。 |
|
|
要安装的产品版本。 |
此属性必须始终完全匹配。 |
|
|
主机网络地址 |
此属性必须始终完全匹配。 |
|
|
主机的 MAC 地址 |
此属性必须始终完全匹配(MAC 地址应采用 |
|
|
系统上已安装的 Linux 分区数量 |
此属性可以为 0 或更多。 |
|
|
系统上已安装的非 Linux 分区数量 |
此属性可以为 0 或更多。 |
|
|
图形适配器所需的 X 服务器 |
此属性必须始终完全匹配。 |
|
|
主机上可用内存(以兆字节为单位) |
所有匹配类型均可用。 |
|
|
主机上可用总磁盘空间(以兆字节为单位) |
所有匹配类型均可用。 |
|
|
IP 地址的十六进制表示 |
需要精确匹配 |
|
|
主机架构 |
需要精确匹配 |
|
|
主机内核架构(例如 SMP 内核、Xen 内核) |
需要精确匹配 |
|
|
驱动器设备和大小(以兆字节为单位) |
所有匹配类型均可用。 |
|
|
SMBIOS 中指定的硬件产品名称 |
需要精确匹配 |
|
|
SMBIOS 中指定的硬件供应商 |
需要精确匹配 |
|
|
SMBIOS 中指定的系统主板名称 |
需要精确匹配 |
|
|
SMBIOS 中指定的系统主板供应商 |
需要精确匹配 |
|
|
使用 Shell 脚本的自定义规则 |
所有匹配类型均可用。 |
您可以使用带复选框的对话弹出窗口来选择要匹配的规则。
下面列出的元素必须放置在 rules.xml 文件中的以下 XML 结构内
<rules config:type="list">
<rule>
<dialog>
...
</dialog>
</rule>
</rules>对话框编号所有具有相同 dialog_nr 的规则都会显示在同一个弹出对话框中。同一个 dialog_nr 可以出现在多个规则中。
<dialog_nr config:type="integer">3</dialog_nr>
此元素是可选的,缺少 dialog_nr 的默认值始终为 0。要为所有规则使用一个弹出窗口,您无需指定 dialog_nr。
element指定一个唯一的 ID。即使您有多个对话框,也绝不能两次使用相同的 ID。不支持在对话框 1 上使用 ID 1 并在对话框 2 上使用 ID 1。(此行为与 ask 对话框相反,在 ask 对话框中,您可以使用相同的 ID 用于多个对话框。)
<element config:type="integer">3</element>
可选。如果省略,AutoYaST 会在内部添加自己的 ID。那么您就不能指定冲突规则(请参见下文)。
title弹出对话框的标题
<title>Desktop Selection</title>
可选
question复选框后面弹出窗口中显示的问题。
<question>GNOME Desktop</question>
可选。如果您在此处未配置文本,则将显示此规则触发的 XML 文件的名称。
timeout超时(以秒为单位),之后对话框将自动““按下””确定按钮。对于与规则对话框结合使用的非阻塞安装很有用。
<timeout config:type="integer">30</timeout>
可选。缺少超时将停止安装过程,直到用户确认对话框。
冲突与此规则冲突的元素 ID(规则)列表。如果此规则匹配或被用户选择,则弹出窗口中所有冲突规则都将被取消选择和禁用。请注意不要造成死锁。
<conflicts config:type="list"> <element config:type="integer">1</element> <element config:type="integer">5</element> ... </conflicts>
可选
以下是如何使用带对话框的规则的示例
<rules config:type="list">
<rule>
<custom1>
<script>
echo -n 100
</script>
<match>100</match>
<match_type>exact</match_type>
</custom1>
<result>
<profile>rules/gnome.xml</profile>
<continue config:type="boolean">true</continue>
</result>
<dialog>
<element config:type="integer">0</element>
<question>GNOME Desktop</question>
<title>Desktop Selection</title>
<conflicts config:type="list">
<element config:type="integer">1</element>
</conflicts>
<dialog_nr config:type="integer">0</dialog_nr>
</dialog>
</rule>
<rule>
<custom1>
<script>
echo -n 100
</script>
<match>101</match>
<match_type>exact</match_type>
</custom1>
<result>
<profile>rules/gnome.xml</profile>
<continue config:type="boolean">true</continue>
</result>
<dialog>
<element config:type="integer">1</element>
<dialog_nr config:type="integer">0</dialog_nr>
<question>Gnome Desktop</question>
<conflicts config:type="list">
<element config:type="integer">0</element>
</conflicts>
</dialog>
</rule>
<rule>
<custom1>
<script>
echo -n 100
</script>
<match>100</match>
<match_type>exact</match_type>
</custom1>
<result>
<profile>rules/all_the_rest.xml</profile>
<continue config:type="boolean">false</continue>
</result>
</rule>
</rules>类表示目标系统组的配置。与规则不同,类需要在控制文件中配置。然后可以将类分配给目标系统。
以下是类定义的一个示例
<classes config:type="list">
<class>
<class_name>TrainingRoom</class_name>
<configuration>Software.xml</configuration>
</class>
</classes>在上面的示例中,文件 Software.xml 必须放置在子目录 classes/TrainingRoom/ 中。它将从与 AutoYaST 控制文件和规则相同的位置获取。
如果您有多个控制文件并且这些控制文件共享部分,最好对公共部分使用类。您还可以使用 XInclude。
使用配置管理系统,您可以定义一组类。类定义由以下变量组成
名称:类名称
描述
顺序:迁移堆栈中类的顺序(或优先级)
您可以根据需要创建任意数量的类,但是建议将类的集合保持尽可能小,以使配置系统简洁。例如,可以使用以下类集合
站点:描述物理位置或站点的类,
机器:描述机器类型的类,
角色:描述机器功能的类,
组:描述站点或位置内的部门或组的类。
保存在类目录中的文件可以具有与常规控制文件相同的语法和格式,但表示配置的子集。例如,要为具有特定网络接口的计算机创建新的控制文件,您只需要控制网络配置的控制文件资源。如果有多种网络类型,您可以将特定硬件所需的网络类型与其他类文件合并,并创建适合要安装系统的新控制文件。
在自动安装会话期间,可以混合使用规则和类。例如,您可以使用包含类定义的规则来识别系统。该过程在图 图 A.1,“规则检索过程”中描述。
检索规则并合并后,将解析生成的控制文件并检查类定义。如果定义了类,则从原始存储库中检索类文件,并启动新的合并过程。
对于类和规则,多个 XML 文件会合并为一个生成的 XML 文件。这个合并过程通常会让人感到困惑,因为它与人们预期的行为不同。首先,重要的是要注意,合并的 XML 文件中的顶层部分的名称必须按字母顺序排列,合并才能成功。
例如,以下两个 XML 部分应合并
<partitioning config:type="list">
<drive>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">swap</filesystem>
<format config:type="boolean">true</format>
<mount>swap</mount>
<partition_id config:type="integer">130</partition_id>
<size>2000mb</size>
</partition>
<partition>
<filesystem config:type="symbol">xfs</filesystem>
<partition_type>primary</partition_type>
<size>4Gb</size>
<mount>/data</mount>
</partition>
</partitions>
</drive>
</partitioning><partitioning config:type="list">
<drive>
<initialize config:type="boolean">false</initialize>
<partitions config:type="list">
<partition>
<format config:type="boolean">true</format>
<filesystem config:type="symbol">xfs</filesystem>
<mount>/</mount>
<partition_id config:type="integer">131</partition_id>
<partition_type>primary</partition_type>
<size>max</size>
</partition>
</partitions>
<use>all</use>
</drive>
</partitioning>您可能期望控制文件包含三个分区。但事实并非如此。最终您将得到两个分区,并且第一个分区是交换分区和根分区的混合。在两个分区中配置的设置,例如 mount 或 size,将从第二个文件中使用。仅存在于第一个或第二个分区中的设置也将复制到合并的分区中。
在此示例中,您不想要第二个 drive。这两个驱动器应该合并为一个。关于分区,应该定义三个独立的分区。使用 dont_merge 方法可以解决合并问题
<classes config:type="list">
<class>
<class_name>swap</class_name>
<configuration>largeswap.xml</configuration>
<dont_merge config:type="list">
<element>partition</element>
</dont_merge>
</class>
</classes><rule>
<board_vendor>
<match>ntel</match>
<match_type>regex</match_type>
</board_vendor>
<result>
<profile>classes/largeswap.xml</profile>
<continue config:type="boolean">true</continue>
<dont_merge config:type="list">
<element>partition</element>
</dont_merge>
</result>
<board_vendor>
<match>PowerEdge [12]850</match>
<match_type>regex</match_type>
</board_vendor>
<result>
<profile>classes/smallswap.xml</profile>
<continue config:type="boolean">true</continue>
<dont_merge config:type="list">
<element>partition</element>
</dont_merge>
</result>
</rule>ERB 模板用于在 AutoYaST 配置中嵌入 Ruby 代码,以便在安装过程中修改配置。通过这种方法,您可以检查系统并调整配置,例如设置值、添加或跳过部分等。
要激活 ERB 处理,配置文件必须具有扩展名 .erb(例如,autoyast.xml.erb)。因此,无法将规则/类与 ERB 模板结合使用。
ERB 代表嵌入式 Ruby。ERB 利用 Ruby 编程语言的强大功能来生成不同类型的内容。通过 ERB,您可以在配置文件中包含一些 Ruby 代码,以在运行时根据安装系统进行调整。
使用 ERB 时,Ruby 代码包含在 <% 和 %> 符号之间。使用等号 = 将命令输出包含在生成的配置文件中。
<bootloader>
<% require "open-uri" %>
<%= URI.open("http://192.168.1.1/profiles/bootloader-common.xml").read %>
</bootloader> <!-- this line gets replaced with the content of bootloader-common.xml -->您可以使用 Ruby 功能运行任意命令。如果您想获取命令的输出,请将其括在反引号之间。如果您想知道命令是否成功,请使用 system 函数运行命令。
<% files = `ls` %> <!-- files contains the output of the command (for instance "file1\nfile2\nfile3") -->
<% success = system("dmidecode | grep some-model") %> <!-- success contains true or false -->此外,您还可以使用更高级的 Ruby 代码结构,例如条件和循环。
<% ip_forward = File.read("/proc/sys/net/ipv4/ip_forward").strip %>
<% if ip_forward == "1" %>
<!-- something -->
<% end %>
<% files = `ls /tmp/config/*.xml` %>
<% files.split.each do |file| %>
<%= file.read %>
<% end %>AutoYaST 提供了一小部分辅助函数来检索底层系统的信息,例如 disks 或 network_cards。您可以在第 7.2 节,“模板辅助函数”部分查看辅助函数及其值的列表。
模板辅助函数是一组 Ruby 方法,可在配置文件中使用,以检索有关安装系统的信息。
boot_efi? 是一个布尔辅助函数,用于返回系统是否使用 EFI 启动。在下面的示例中,配置文件根据当前启动模式配置引导加载程序。
<% if env.boot_efi? %> <loader_type>grub2-efi</loader_type> <% else %> <loader_type>grub2</loader_type> <% end %>
disks 辅助函数返回检测到的磁盘列表。列表的每个元素都包含一些基本信息,例如设备名称或大小。
|
键 |
类型 |
值 |
|---|---|---|
|
|
String |
设备内核名称(例如 |
|
|
String |
磁盘型号 |
|
|
String |
序列号 |
|
|
Integer |
磁盘大小(是磁盘扇区的计数) |
|
|
Array<String> |
磁盘 udev 名称列表。您可以使用其中任何一个来引用设备。 |
|
|
String |
磁盘供应商名称 |
下面示例中的配置文件将系统安装到最大的磁盘上。它按大小对现有磁盘列表进行排序并取最后一个。然后它使用 :device 键作为 device 元素的值。
<partitioning t="list">
<drive>
<% disk = disks.sort_by { |d| d[:size] }.last %> <!-- find the largest disk -->
<device><%= disk[:device] %></device> <!-- print the disk device name -->
<initialize t="boolean">true</initialize>
<use>all</use>
</drive>
</partitioning>network_cards 辅助函数返回网络卡列表,包括它们的名称、状态信息(例如,它们是否已连接)。
|
键 |
类型 |
值 |
|---|---|---|
|
|
String |
设备名称(例如 |
|
|
String |
MAC 地址 |
|
|
布尔值 |
设备是否处于活动状态 |
|
|
布尔值 |
设备是否已连接 |
|
|
String |
磁盘供应商名称 |
以下示例查找连接到网络的第一个网卡并将其配置为使用 DHCP。
<interfaces t="list">
<% with_link = netword_cards.sort_by { |n| n[:name] }.find { |n| n[:link] } %>
<% if with_link %>
<interface>
<device><%= with_link[:device] %></device>
<startmode>auto</startmode>
<bootproto>dhcp</bootproto>
</interface>
<% end >
</interfaces>os_release 辅助函数返回操作系统信息,该信息包含在 /etc/os-release 文件中。
|
键 |
类型 |
值 |
|---|---|---|
|
|
String |
分发 ID(例如 |
|
|
String |
分发名称(例如 |
|
|
String |
分发版本(例如 |
您可以使用此信息来决定要安装的产品,对所有产品(SLE 或 openSUSE 分发)使用几乎相同的配置文件。
<products t="list"> <% if os_release[:id] == 'sle' %> <product>SLES</product> <% else %> <product>openSUSE</product> <% end %> </products>
hardware 辅助函数提供额外的硬件信息。它返回 hwinfo 命令的所有信息。您可以将此辅助函数用作在通过描述的辅助函数提供的信息不足以满足要求的情况下的回退。在下一个示例中,hardware 辅助函数用于过滤 USB 设备。请查看第 7.3 节,“运行 ERB 辅助函数”以了解如何检查 hardware 辅助函数提供的所有信息。
<% usb_disks = hardware["disk"].select { |d| d["driver"] != "usb-storage" } %>您可以使用 Ruby 控制台运行 AutoYaST ERB 辅助函数并了解它们提供的功能。所有 ERB 辅助函数都通过 Y2Autoinstallation::Y2ERB::TemplateEnvironment 类的一个实例进行访问。以 root 身份运行 irb -ryast -rautoinstall/y2erb 启动 Ruby 交互式解释器。
irb > env = Y2Autoinstallation::Y2ERB::TemplateEnvironment.new # the env variable gives access to the helpers
irb > env.disks
=>
[{:vendor=>"WDC", :device=>"sda", ...},
{:vendor=>"TOSHIBA", :device=>"sdb", ...},
...]
irb > env.hardware.keys
=>
["architecture",
"bios",
"bios_video",
...]
irb > env.hardware["architecture"]
=>
"x86_64"AutoYaST 命令行提供了一个 check-profile 命令,可用于从 ERB 文件生成配置文件。此命令要求 AutoYaST 解析、运行 ERB 代码并生成结果配置文件。您可以检查渲染的配置文件以检查一切是否按预期工作。有关它支持的所有选项,请参阅命令帮助:autoyast check-profile --help。在以下示例中,check-profile 要求 AutoYaST 下载并解析配置文件,解释 ERB 代码并运行预脚本。结果将转储到 result.xml 文件中。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.erb output=result.xml run-scripts=true run-erb=true
check-profile 权限在大多数情况下,check-profile 需要 root 权限,因此在以 root 身份运行预安装脚本和 ERB 配置文件时请务必小心。仅使用您信任的配置文件。
对于您想要停止 ERB 评估并检查正在发生的情况的情况,YaST 提供与 byebug 调试器的集成。安装 rubygem(byebug) 软件包并将 Y2DEBUGGER 环境变量设置为 1。
>sudozypper --non-interactive in "rubygem(byebug)">sudoY2DEBUGGER=1 yast2 autoyast check-profile ...
添加断点就像在您想要停止的位置添加 <% byebug %> 一样简单。有关 byebug 的更多信息,请参阅 https://github.com/deivid-rodriguez/byebug。
<% byebug %>
<% if system("dmidecode | grep some-model") %>
<!-- do something -->
%<% end %>尽管 ERB 和规则/类都能够动态生成配置文件,但通常 ERB 配置文件更易于阅读和理解。一个重要的区别是规则和类可以合并配置文件,而 ERB 不能。有关合并配置文件的更多信息,请参阅第 6 章,“规则和类”。另一方面,ERB 带来了高级语言 Ruby 的所有强大功能。让我们看一个同时使用两者的示例。在以下示例中,如果 /dev/sdb 存在,我们希望将 /home 目录放置在其中。
<rule>
<custom1>
<script>
if blkid | grep /dev/sdb > /dev/null; then
echo -n "yes"
else
echo -n "no"
fi;
</script>
<match>yes</match>
<match_type>exact</match_type>
</custom1>
<result>
<profile>classes/sdb_home.xml</profile>
<dont_merge config:type="list">
<element>partition</element>
</dont_merge>
</result>
</rule><% home_in_sdb = disks.map { |d| d[:device] }.include?("sdb") %>
<partitioning config:type="list">
<drive>
...
</drive>
<% if home_in_sdb %>
<drive>
<device>/dev/sdb</device>
<disklabel>none</disklabel>
<partitions t="list">
<partition>
<format t="boolean">true</format>
<filesystem t="symbol">xfs</filesystem>
<mount>/home</mount>
</partition>
</partitions>
</drive>
<% end %>
</partitioning>
第 4.31.1 节,“预脚本”已经描述了如何使用预脚本修改当前配置文件。简而言之,如果脚本创建了一个 /tmp/profile/modified.xml 文件,AutoYaST 会导入该配置文件并放弃初始配置文件。
这是一种非常灵活的方法,唯一的限制是您需要依赖安装介质中可用的语言和库。
与规则不同,ERB 模板可以与脚本结合使用。AutoYaST 将在运行脚本之前评估您在脚本中包含的任何 ERB 标签。此行为仅适用于配置文件中定义的脚本,而不适用于外部脚本。
下面的脚本下载一个基于 MAC 地址命名的配置文件。将文件保存为 /tmp/profile/modified.xml 将导致 AutoYaST 加载并使用下载的配置文件。
<scripts>
<pre-scripts config:type="list">
<script>
<interpreter>shell</interpreter>
<filename>load_profile.sh</filename>
<% mac = network_cards.first >
<source><![CDATA[#!/bin/bash
wget -O /tmp/profile/modified.xml http://myserver/<%= network_cards.first[:mac] %>.xml
]]></source>
</script>
</pre-scripts>
</scripts>可以在 Ruby 脚本中使用 ERB 辅助函数。要使用这些辅助函数,您需要要求 yast 和 autoinstall/y2erb 库,并使用 Y2Autoinstall::Y2ERB::TemplateEnvironment 类访问它们。
<scripts>
<pre-scripts config:type="list">
<script>
<interpreter>/usr/bin/ruby</interpreter>
<filename>load_profile.rb</filename>
<source><![CDATA[#!/usr/bin/env ruby
require "yast"
require "autoinstall/y2erb"
helpers = Y2Autoinstallation::Y2ERB::TemplateEnvironment.new
# Now you can use the TemplateEnvironment instance to call the helpers
disk_devices = helpers.disks.map { |d| d[:device] }
File.write("/root/disks.txt", disk_devices.join("\n"))
]]></source>
</script>
</pre-scripts>
</scripts>系统启动进入自动安装并检索控制文件后,YaST 根据控制文件中提供的信息配置系统。所有配置设置都汇总在一个默认显示且应在完全…
系统启动进入自动安装并检索控制文件后,YaST 根据控制文件中提供的信息配置系统。所有配置设置都汇总在一个默认显示且应在需要完全自动安装时停用的窗口中。
当 YaST 显示配置摘要时,YaST 只探测了硬件并为自动安装做好了准备。系统尚未进行任何更改。如果出现任何错误,您仍然可以中止该过程。
系统应可自动安装,无需任何图形适配器或显示器。尽管如此,建议为客户端机器连接显示器,以便您可以监督过程并在出现错误时获得反馈。在图形和基于文本的 Ncurses 界面之间进行选择。对于无头客户端,可以使用串行控制台监视系统消息。
通过向内核命令行添加关键字 console(例如 console=ttyS0)来使用串行控制台开始安装系统。这将在控制台模式下启动 linuxrc,然后 YaST 在串行控制台模式下启动。
有多种方法可以引导客户端。计算机可以从其网络接口卡 (NIC) 引导,通过 DHCP 或 TFTP 接收引导映像。或者,可以从闪存盘(例如 USB 闪存盘)或可引导 DVD-ROM 加载合适的内核和 initrd 映像。
YaST 将在启动时检查引导介质或 initrd 的根目录中是否存在 autoinst.xml,如果找到,则切换到自动安装。如果控制文件名称不同或位于其他位置,请使用参数 AutoYaST=URL 在内核命令行上指定其位置。
或者,您可以将 autoinst.xml 放置在物理或虚拟挂载的、标记为 OEMDRV 的设备中。在这种情况下,您无需在内核命令行上指定 autoinst.xml 的位置。autoinst.xml 必须位于设备的根目录中。
出于测试/救援目的,或者因为网卡没有 PROM 或 PXE,您可以构建一个可引导的闪存盘与 AutoYaST 一起使用。闪存盘还可以存储控制文件。
使用以下命令将安装映像的内容复制到可移动闪存盘。
>sudodd if=IMAGE of=FLASH_DISK bs=4M && sync
IMAGE 需要替换为 SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso 映像文件的路径。FLASH_DISK 需要替换为闪存设备。要识别设备,请插入它并运行
# grep -Ff <(hwinfo --disk --short) <(hwinfo --usb --short)
disk:
/dev/sdc General USB Flash Disk确保设备的大小足以容纳所需的映像。您可以使用以下命令检查设备的大小
# fdisk -l /dev/sdc | grep -e "^/dev"
/dev/sdc1 * 2048 31490047 31488000 15G 83 Linux在此示例中,设备的容量为 15 GB。用于 SLE-15-SP6-Full-ARCH-GM-media1.iso 的命令将是
dd if=SLE-15-SP6-Full-ARCH-GM-media1.iso of=/dev/sdc bs=4M && sync
运行 dd 命令时,设备不得挂载。请注意,分区上的所有数据都将被擦除!
您可以将 SUSE Linux Enterprise 安装介质(SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso)与其他介质结合使用。例如,控制文件可以通过闪存盘或网络上指定的位置提供。或者,创建一个包含控制文件的自定义安装介质。
通过 PXE 引导需要在您的网络中有一个 DHCP 和一个 TFTP 服务器。然后计算机将无需物理介质即可引导。
如果您通过 PXE 安装,安装将陷入无限循环。这是因为在第一次重启后,机器会再次执行 PXE 引导,并重新启动安装,而不是从硬盘引导进行安装的第二阶段。
有几种方法可以解决此问题。您可以使用 HTTP 服务器提供 AutoYaST 控制文件。或者,不是使用静态控制文件,而是在 Web 服务器上运行 CGI 脚本来提供控制文件并更改目标主机的 TFTP 服务器配置。这样,机器的下一次 PXE 引导将默认从硬盘进行。
另一种方法是使用 AutoYaST 通过控制文件为目标主机上传新的 PXE 引导配置
<pxe>
<pxe_localboot config:type="boolean">true</pxe_localboot>
<pxelinux-config>
DEFAULT linux
LABEL linux
localboot 0
</pxelinux-config>
<tftp-server>192.168.1.115</tftp-server>
<pxelinux-dir>/pxelinux.cfg</pxelinux-dir>
<filename>__MAC__</filename>
</pxe>此条目将在第一次重启发生前不久,将目标主机的新配置上传到 TFTP 服务器。在大多数安装中,TFTP 守护程序以用户 nobody 运行。您需要确保此用户对 pxelinux.cfg 目录具有写入权限。您还可以配置将要上传的文件名。如果您使用““魔术”” __MAC__ 文件名,则文件名将是您机器的 MAC 地址,例如 01-08-00-27-79-49-ee。如果缺少文件名设置,则 IP 地址将用作文件名。
要在同一台机器上进行另一次自动安装,您需要从 TFTP 服务器中删除该文件。
添加命令行变量 autoyast 会导致 linuxrc 在自动化模式下启动。linuxrc 程序在以下位置搜索配置文件,该文件应与主控制文件区分开来
用于引导系统的初始 RAM 磁盘的根目录中;
引导介质的根目录中。
linuxrc 配置文件支持多个关键字。有关 linuxrc 如何工作以及其他关键字的详细说明,请参阅附录 C,“高级 linuxrc 选项”。其中一些更常见的包括
使用 AutoYaST 启动自动升级;请参阅第 4.10 节,“升级”。
自动安装控制文件的位置;有关详细信息,请参阅AutoYaST 控制文件位置。
配置并启动网络。如果 AutoYaST 要从远程位置获取,则需要此项。有关详细信息,请参阅第 C.3 节,“高级网络设置”。
要加载的内核模块
安装目录的位置,例如 install=nfs://192.168.2.1/CDs/。
当您使用 HTTPS 时,默认情况下会启用 SSL 检查。如有必要,您可以通过在 HTTPS URL 后附加 ssl_verify=no 来禁用 SSL 检查,如下例所示
install=https://192.168.2.1/CDs/?ssl_verify=no
如果您传递多个查询选项,请用和号分隔它们
install=https://192.168.2.1/CDs/?foo=bar&ssl_verify=no
有关更多信息,请参阅 man 8 zypper 的“FTP/HTTP/HTTPS 目录树”部分。
安装模式,例如 nfs、http 等(如果设置了 install 则不需要)。
如果 AutoYaST 配置文件中未指定,则为 root 用户的密码
联系 NFS 服务器以获取源目录
NFS 服务器上的目录
即使控制文件中包含 <confirm>no</confirm>,确认建议也会出现。
这些变量和关键字将使系统达到 YaST 可以接管主控制文件的程度。目前,源介质会自动发现,这在某些情况下使得无需向 linuxrc 提供任何指令即可启动自动安装过程。
传统的 linuxrc 配置文件 (info) 的功能是向客户端提供足够的关于安装服务器和源位置的信息。通常,此文件不是必需的,但在不使用 DHCP 和 BOOTP 的特殊网络环境或需要加载特殊内核模块时,则需要此文件。
您可以使用内核命令行向 linuxrc 传递关键字。这可以通过几种方式完成。您可以在引导时以通常的方式交互式地指定 linuxrc 关键字以及其他内核参数。您还可以将内核参数插入自定义网络可引导磁盘映像中。还可以配置 DHCP 服务器以结合 Etherboot 或 PXE 传递内核参数。
autoyast2 引导选项而不是 autoyastautoyast2 选项类似于 autoyast 选项,但 linuxrc 会解析提供的值,例如,在需要时尝试配置网络。本文档中未描述此选项。有关 AutoYaST 和 linuxrc URI 语法之间差异的信息,请参阅 linuxrc 附录:附录 C,“高级 linuxrc 选项”。AutoYaST 的规则和类不受支持。
命令行变量 autoyast 可以按照以下列表中的格式使用。
用于控制文件位置的 URI 的 autoyast 语法可能令人困惑。格式为 SCHEMA://HOST/PATH-TO-FILE。使用的正斜杠数量各不相同。对于控制文件的远程位置,URI 看起来像此 NFS 服务器的示例,带有两个斜杠:autoyast=nfs://SERVER/PATH。
当您的控制文件在本地文件系统上时,情况有所不同。例如,autoyast=usb:///profile.xml 与 autoyast=usb:///profile.xml 相同。您可以省略本地主机名,但必须保留第三个斜杠。autoyast=usb://profile.xml 将失败,因为 profile.xml 被解释为主机名。
对于升级,自动离线升级不需要 autoyast 变量,请参阅过程 4.1,“在离线升级模式下启动 AutoYaST”。
对于新安装,如果名为 autoinst.xml 的文件位于以下三个位置之一,则将启动 autoyast
安装闪存盘(例如 USB 闪存盘)的根目录
安装介质的根目录
用于引导系统的初始 RAM 磁盘的根目录
autoyast=file:///PATH在指定路径中查找控制文件,该路径是相对于源根目录的,例如,当控制文件位于任何本地文件系统(包括 CD 或 USB 驱动器等已挂载的外部设备)的顶层目录中时,使用 file:///autoinst.xml。(这与 file://localhost/autoinst.xml 相同。)
autoyast=device://DEVICE/FILENAME在存储设备上查找控制文件。不要指定设备的完整路径,只需指定设备名称(例如,device://vda1/autoyast.xml)。您也可以省略指定设备,并触发 autoyast 搜索所有设备,例如 autoyast=device://localhost/autoinst.xml 或 autoyast=device:///autoinst.xml。
autoyast=nfs://SERVER/PATH在 NFS 服务器上查找控制文件。
autoyast=http://[user:password@]SERVER/PATH使用 HTTP 协议从 Web 服务器检索控制文件。指定用户名和密码是可选的。
autoyast=https://[user:password@]SERVER/PATH使用 HTTPS 从 Web 服务器检索控制文件。指定用户名和密码是可选的。
autoyast=tftp://SERVER/PATH通过 TFTP 检索控制文件。
autoyast=ftp://[user:password@]SERVER/PATH通过 FTP 检索控制文件。指定用户名和密码是可选的。
autoyast=usb:///PATH从 USB 设备检索控制文件(autoyast 将搜索所有连接的 USB 设备)。
autoyast=relurl://PATH从安装源检索控制文件:可以从默认安装源,也可以从 install=INSTALLATION_SOURCE_PATH 中定义的安装源。
autoyast=repo:/PATH从指定的路径检索控制文件。路径必须是相对于安装源的。
autoyast=cifs://SERVER/PATH在 CIFS 服务器上查找控制文件。
autoyast=label://LABEL/PATH在带有指定标签的设备上搜索控制文件。
使用不同类型的基础设施和源媒体可以实现几种自动安装场景。最简单的方法是使用 openSUSE Leap 的相应安装媒体 (SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso)。但要启动自动安装过程,应在系统引导时输入自动安装命令行变量,并且 YaST 必须能够访问控制文件。
在脚本上下文中,您可以为虚拟机使用串行控制台,这允许您在文本模式下工作。然后,您可以从 expect 脚本或等效脚本中传递所需的参数。
以下场景列表说明了如何提供控制文件。
使用原始安装媒体时 (需要 SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso),控制文件需要通过闪存盘(例如,USB 闪存盘)或网络访问
闪存盘(例如,USB 闪存盘)。 通过 autoyast=usb://PATH 选项访问控制文件。
网络。 通过以下命令访问控制文件:autoyast=nfs://..、autoyast=ftp://..、autoyast=http://..、autoyast=https://..、autoyast=tftp://.. 或 autoyast=cifs://..。网络访问需要使用 linuxrc 中的引导选项定义。这可以通过 DHCP 完成:netsetup=dhcp autoyast=http://163.122.3.5/autoyast.xml
在这种情况下,您可以将控制文件直接包含在安装媒体上。如果将其放置在根目录中并命名为 autoinst.xml,它将自动被找到并用于安装。否则,使用 autoyast=file:///PATH 指定控制文件的路径。
此选项最重要,因为通常使用 SLP 或 NFS 服务器以及 BOOTP 和 DHCP 等其他网络服务来安装多台计算机。使控制文件可用的最简单方法是将其放置在安装源的根目录中,并将其命名为 autoinst.xml。在这种情况下,它将自动被找到并用于安装。控制文件也可以位于以下位置:
闪存盘(例如,USB 闪存盘)。 通过 autoyast=usb://PATH 选项访问控制文件。
网络。 通过以下命令访问控制文件:autoyast=nfs://..、autoyast=ftp://..、autoyast=http://..、autoyast=https://..、autoyast=tftp://.. 或 autoyast=cifs://..。
要在不需要或不可用的安装期间禁用网络,例如从 DVD-ROM 自动安装时,请使用 linuxrc 选项 netsetup=0 来禁用网络设置。
通过所有 AutoYaST 调用选项,可以通过以下方式指定控制文件的位置:
指定控制文件的确切位置
autoyast=http://192.168.1.1/control-files/client01.xml
指定包含多个控制文件的目录
autoyast=http://192.168.1.1/control-files/
在这种情况下,相关的控制文件将通过 IP 的十六进制数字表示形式进行检索,如下所述。
此目录的路径需要以 / 结尾。
目录中的文件不能有任何扩展名,例如 .xml。因此,文件名只能是 IP 或 MAC 地址。
> ls -r control-files
C00002 0080C8F6484C default如果只定义了路径前缀变量,YaST 将以以下方式从指定位置获取控制文件:
首先,它将使用其自己的 IP 地址的十六进制大写表示形式搜索控制文件,例如 192.0.2.91 -> C000025B。
如果找不到此文件,YaST 将删除一个十六进制数字并重试。此操作重复进行,直到找到具有正确名称的文件。最终,它将尝试查找以客户端 MAC 地址作为文件名的文件(MAC 应具有以下语法:0080C8F6484C),如果找不到,则查找名为 default(小写)的文件。
例如,对于 192.0.2.91,HTTP 客户端将按以下顺序尝试:
C000025B C000025 C00002 C0000 C000 C00 C0 C 0080C8F6484C default
按此顺序。
要确定客户端 IP 地址的十六进制表示形式,请使用 syslinux 软件包提供的实用程序 /usr/bin/gethostip。
> /usr/bin/gethostip 10.10.0.1
10.10.0.1 10.10.0.1 0A0A0001在没有任何网络连接的情况下自动安装系统的最简单方法是使用原始的 openSUSE Leap DVD-ROM 和一个闪存盘(例如,USB 闪存盘)。您不需要设置安装服务器或网络环境。
创建控制文件并将其命名为 autoinst.xml。将文件 autoinst.xml 复制到闪存盘。
如果您选择使用 info 文件或作为引导选项将信息传递给 linuxrc,您可以将关键字集成到 AutoYaST 控制文件中。添加一个 info_file 部分,如以下示例所示。此部分包含关键字-值对,用冒号分隔,每行一个对。
linuxrc 选项 #....
<install>
....
<init>
<info_file>
install: nfs://192.168.1.1/CDs/full-x86_64
dud: https://example.com/driver_updates/filename.dud
upgrade: 1
textmode: 1
</info_file>
</init>
......
</install>
....请注意,autoyast2 关键字必须指向同一个文件。如果它位于闪存盘(例如,USB 闪存盘)上,则需要使用 usb:// 选项。如果 info 文件存储在初始 RAM 磁盘中,则需要使用 file:/// 选项。
自动安装期间的系统配置是整个过程中最重要的部分。正如您在前面的章节中看到的,目标系统上几乎所有内容都可以自动配置。除了预定义的指令,您还可以随时使用后脚本来更改系统中的其他内容。此外,您可以更改任何系统变量,如果需要,可以将完整的配置文件复制到目标系统。
安装后和系统配置在最后一个软件包安装到目标系统后立即启动,并在系统首次引导后继续。
在系统首次引导之前,AutoYaST 会写入安装过程中收集的所有数据,并在指定位置写入引导加载程序。除了这些常规任务,AutoYaST 还会执行控制文件中指定的 chroot 脚本。请注意,这些脚本在系统尚未挂载时执行。
如果安装了与默认内核不同的内核,则需要硬重启。在自动安装期间,也可以强制硬重启,无论安装的内核如何。使用 general 资源的 reboot 属性(参见 第 4.1 节 “一般选项”)。
在某些情况下,在正在运行的系统中运行 AutoYaST 很有用。请记住,在此场景中,partitioning 部分将被忽略。
在某些情况下,在正在运行的系统中运行 AutoYaST 很有用。请记住,在此场景中,partitioning 部分将被忽略。
在以下示例中,将安装一个额外的软件包(foo)。要运行此软件,需要添加一个用户并配置一个 NTP 客户端。
相应的 AutoYaST 配置文件需要包含软件包安装部分(第 4.9.7 节 “在阶段 2 中安装软件包”)、用户部分(第 4.30.1 节 “用户”)和 NTP 客户端部分(第 4.21 节 “NTP 客户端”)。
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<ntp-client>
<peers config:type="list">
<peer>
<address>us.pool.ntp.org</address>
<comment/>
<options> iburst</options>
<type>server</type>
</peer>
</peers>
<start_at_boot config:type="boolean">true</start_at_boot>
<start_in_chroot config:type="boolean">false</start_in_chroot>
<sync_interval config:type="integer">5</sync_interval>
<synchronize_time config:type="boolean">false</synchronize_time>
</ntp-client>
<software>
<post-packages config:type="list">
<package>ntp</package>
<package>yast2-ntp-client</package>
<package>foo</package>
</post-packages>
</software>
<users config:type="list">
<user>
<encrypted config:type="boolean">false</encrypted>
<fullname>Foo user</fullname>
<gid>100</gid>
<home>/home/foo</home>
<password_settings>
<expire/>
<flag/>
<inact/>
<max>99999</max>
<min>0</min>
<warn>7</warn>
</password_settings>
<shell>/bin/bash</shell>
<uid>1001</uid>
<user_password>linux</user_password>
<username>foo</username>
</user>
</users>
</profile>将此文件存储为 /tmp/install_foo.xml 并通过调用以下命令启动 AutoYaST 安装过程:
>sudoyast2 ayast_setup setup filename=/tmp/install_foo.xml dopackages="yes"
有关更多信息,请运行 yast2 ayast_setup longhelp
下图说明了规则的处理方式以及检索和合并的过程。
如何调用 AutoYaST 安装?
linuxrc 选项
linuxrc 是一个在内核加载后,但在 AutoYaST 或其他阶段之前运行的小程序。它为安装准备系统。它允许用户加载模块、启动已安装的系统或救援系统,以及指导 YaST 的操作。
本附录包含 GNU 自由文档许可协议版本 1.2。
在所有 openSUSE Leap 版本中,通过将 autoyast=<PATH_TO_PROFILE> 添加到内核参数列表来调用自动安装。例如,添加 autoyast=http://MYSERVER/MYCONFIG.xml 将启动自动安装,其中包含 AutoYaST 配置的配置文件将从 Web 服务器 myserver 获取。有关更多信息,请参阅 第 9.3 节 “调用自动安装过程”。
配置文件是 AutoYaST 配置文件。AutoYaST 配置文件的内容决定了系统将如何配置以及将安装哪些软件包。这包括分区、网络设置和软件源等。运行系统中的 YaST 几乎所有可配置的内容都可以在 AutoYaST 配置文件中配置。配置文件格式是 ASCII XML 文件。
创建 AutoYaST 配置文件最简单的方法是使用现有的 openSUSE Leap 系统作为模板。在已安装的系统上,启动 › › 。现在从菜单中选择 › 。选择您要包含在配置文件中的系统组件。或者,通过从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。
这两种方法都将创建文件 /root/autoinst.xml。在命令行上创建的版本可用于设置与创建配置文件的系统完全相同的克隆。但是,通常您会希望调整文件,以便可以安装多个非常相似但不完全相同的机器。这可以通过使用您喜欢的文本/XML 编辑器调整配置文件来完成。
检查您创建的 AutoYaST 配置文件最有效的方法是使用 jing 或 xmllint。
有关详细信息,请参阅 第 3.3 节 “手动创建/编辑控制文件”。
如果在 AutoYaST 配置文件中没有定义某个部分,则将使用通用 YaST 安装建议的设置。但是,您至少需要指定 root 密码才能在安装后登录到机器。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<users config:type="list">
<user>
<encrypted config:type="boolean">false</encrypted>
<user_password>linux</user_password>
<username>root</username>
</user>
</users>
</profile>在您的配置文件中使用以下 sound 部分:
<sound> <autoinstall config:type="boolean">true</autoinstall> <configure_detected config:type="boolean">true</configure_detected> </sound>
将配置文件放在 DVD 的根目录中。使用 file:///PROFILE.xml 引用它。
要合并两个配置文件 a.xml 和 base.xml,请运行以下命令:
> /usr/bin/xsltproc --novalid --param replace "'false'" \
--param dontmerge1 "'package'" --param with "'a.xml'" --output out.xml \
/usr/share/autoinstall/xslt/merge.xslt base.xml这要求两个配置文件中的部分都按字母顺序排列(例如,
dontmerge1 参数是可选的,它是一个示例,说明当您在配置文件中使用 dont_merge 元素时该怎么做。有关更多信息,请参阅 第 6.4 节 “规则和类的合并”。
Zypper 只能从 AutoYaST init 脚本调用,因为在后脚本阶段,YaST 仍然对 RPM 数据库具有独占锁定。
如果您确实需要使用其他脚本类型(例如后脚本),则需要自行承担风险解除锁定:
<post-scripts config:type="list">
<script>
<filename>yast_clone.sh</filename>
<interpreter>shell</interpreter>
<location/>
<feedback config:type="boolean">false</feedback>
<source><![CDATA[#!/bin/sh
mv /var/run/zypp.pid /var/run/zypp.sav
zypper in foo
mv /var/run/zypp.sav /var/run/zypp.pid
]]></source>
</script>
</post-scripts>实际上,顺序并不重要。配置文件中各部分的顺序对 AutoYaST 工作流程没有影响。但是,为了合并不同的配置文件,各部分需要按字母顺序排列。
linuxrc 报告 File not signed,导致安装受阻。我需要手动交互。
linuxrc 找到了一个未签名的文件,例如驱动程序更新。要使用未签名的文件,您可以通过将 insecure=1 传递给 linuxrc 参数列表(与 autoyast=... 参数一起)来抑制该消息。
您需要将 ifcfg 传递给 linuxrc。这是设置网络所必需的,否则 AutoYaST 无法从远程主机下载配置文件。有关更多信息,请参阅 第 C.3 节 “高级网络设置”。
/)?是的,但这比其他方法更复杂。环境(DHCP、TFTP 等)必须非常仔细地设置。AutoYaST 配置文件必须如下所示:
<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
<partitioning config:type="list">
<drive>
<device>/dev/nfs</device>
<initialize config:type="boolean">false</initialize>
<type config:type="symbol">CT_NFS</type>
<partitions config:type="list">
<partition>
<filesystem config:type="symbol">nfs</filesystem>
<fstopt>nolock</fstopt>
<device>10.10.1.53:/tmp/m4</device>
<mount>/</mount>
</partition>
</partitions>
<use>all</use>
</drive>
</partitioning>
</profile>有一个 AutoYaST 邮件列表,您可以在其中发布您的问题。请访问 https://lists.opensuse.org/opensuse-autoinstall/ 加入我们。
linuxrc 是一个在内核加载后,但在 AutoYaST 或其他阶段之前运行的小程序。它为安装准备系统。它允许用户加载模块、启动已安装的系统或救援系统,以及指导 YaST 的操作。
linuxrc 设置不完全相同某些 linuxrc 设置与 AutoYaST 在其 autoyast.xml 文件中使用的设置名称碰巧相同。这并不意味着它们采用相同的参数或以相同的方式运行。例如,AutoYaST 采用 self_update 设置。如果此值设置为 1,则会读取并遵循另一个设置 self_update_url。尽管 linuxrc 也具有 self_update 设置,但 linuxrc 的设置采用 0 或 URL 的值。
不要将 AutoYaST 参数传递给 linuxrc,因为这几乎肯定不会得到期望的结果。
如果机器上安装了 linuxrc,可以在目录 /usr/share/doc/packages/linuxrc/ 中找到有关它的信息。另外,其文档可以在线获取:https://en.opensuse.net.cn/SDB:Linuxrc。
linuxrc如果您在已安装的系统上运行 linuxrc,它将略有不同,以免破坏您的安装。因此,您无法以这种方式测试所有功能。
为了尽可能减小 linuxrc 二进制文件的大小,它的所有库和其他辅助文件都直接链接到主程序二进制文件中。这意味着初始 RAM 磁盘 initrd 中不需要任何共享库。
除非 linuxrc 处于手动模式,否则它将在这些位置查找 info 文件:首先是闪存盘(例如 USB 闪存盘)上的 /info,如果不存在,则在 initrd 中查找 /info。之后,它会解析内核命令行以获取参数。您可以通过设置 info 命令行参数来更改 linuxrc 读取的 info 文件。如果您不希望 linuxrc 读取内核命令行(例如,因为您需要指定 linuxrc 也识别的内核参数),请使用 linuxrc=nocmdline。
linuxrc 将始终查找并解析名为 /linuxrc.config 的文件。如果需要,请使用此文件更改默认值。一般来说,最好使用 info 文件。请注意,即使在手动模式下,/linuxrc.config 也会在任何 info 文件之前读取。
以 # 开头的行是注释。有效条目的格式为:
key: value
请注意,value 延伸到行的末尾,因此可能包含空格。key 的匹配不区分大小写。
您可以使用 key=value 语法在内核命令行上使用相同的键值对。不符合上述格式的行将被忽略。
下表列出了重要的键和示例值。有关 linuxrc 参数的完整列表,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc。
linuxrc 关键字 #|
关键字:示例值 |
描述 |
|---|---|
|
|
如果为 0,则从不要求交换;如果参数为正数 |
|
|
自动安装文件的位置;激活自动安装模式。有关详细信息,请参阅 AutoYaST 控制文件位置。 |
|
|
BOOTP 请求的超时时间为 10 秒。 |
|
|
网络激活和启动 bootp 之间暂停 5 秒。 |
|
|
设置菜单颜色方案。 |
|
|
运行命令。 |
|
|
运行 |
|
|
将安装系统加载到 RAM 磁盘。 |
|
|
设置并启动网络。有关更多信息,请参阅 第 C.3 节 “高级网络设置”。 |
|
|
加载 MODULE。 |
|
|
从 URL 指定的存储库安装。有关 URL 语法,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc#url_descr。 |
|
|
要加载的虚拟控制台键盘映射。 |
|
|
安装预选的语言。 |
|
|
通过 UDP 端口 514 启用 syslog 远程日志记录 |
|
|
通过 TCP 端口 514 启用 syslog 远程日志记录 |
|
|
如果空闲内存超过 50000 KB,则将安装系统加载到 RAM 磁盘。 |
|
|
如果可用内存低于 10000 KB,则要求交换。 |
|
|
如果可用内存低于 20000 KB,则在文本模式下运行 YaST。 |
|
|
如果可用内存低于 10000 KB,则在启动 YaST 之前要求交换。 |
|
|
定义 HTTP 代理服务器。有关完整的参数语法,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc#p_proxy。 |
|
|
加载救援系统;URL 变体明确指定救援映像的位置。 |
|
|
救援系统映像的位置。 |
|
|
安装系统映像的位置。 |
|
|
以文本模式启动 YaST。 |
|
|
加载 USB 模块后等待四秒。 |
|
|
覆盖控制文件中的 confirm 参数,并请求确认安装建议。 |
即使将 hostip、nameserver 和 gateway 等参数传递给 linuxrc,网络也只会在需要时启动(例如,通过 SSH 或 VNC 安装时)。由于 autoyast 不是 linuxrc 参数(此参数被 linuxrc 忽略,仅传递给 YaST),因此在为 AutoYaST 配置文件指定远程位置时,网络不会自动启动。
因此,需要显式启动网络。这通过使用参数 ifcfg 完成。ifcfg 直接控制 /etc/sysconfig/network/ifcfg-* 文件的内容。
配置 DHCP 的通用语法是:
ifcfg=INTERFACE=DHCP*,OPTION1=VALUE1,OPTION2=VALUE2
其中 INTERFACE 是接口名称,例如 eth0,或 eth* 表示所有接口。DHCP* 可以是 dhcp(IPv4 和 IPv6)、dhcp4 或 dhcp6。
要为 eth0 设置 DHCP,请使用:
ifcfg=eth0=dhcp
要为所有接口设置 DHCP,请使用:
ifcfg=eth*=dhcp
配置静态网络的通用语法是:
ifcfg=INTERFACE=IP_LIST,GATEWAY_LIST,NAMESERVER_LIST,DOMAINSEARCH_LIST,\ OPTION1=value1,...
其中 INTERFACE 是接口名称,例如 eth0。如果使用 eth*,则将使用第一个可用设备。其他参数需要按给定顺序替换为相应的值。示例:
ifcfg=eth0=192.168.2.100/24,192.168.5.1,192.168.1.116,example.com
为参数指定多个地址时,请使用空格分隔它们并引用完整的字符串。以下示例使用两个名称服务器和包含两个域的搜索列表。
ifcfg="eth0=192.168.2.100/24,192.168.5.1,192.168.1.116 192.168.1.117,example.com example.net"
有关更多信息,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc#Network_Configuration。
本附录包含 GNU 自由文档许可协议版本 1.2。
版权所有 (C) 2000、2001、2002 自由软件基金会,公司。地址:51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA。任何人均可复制和分发此许可文档的逐字副本,但禁止修改它。
本许可协议的目的是使一份手册、教科书或其他功能性和实用文档“自由”的含义为自由:确保每个人都能有效地复制和重新分发它,无论是否进行修改,无论是商业用途还是非商业用途。次要地,本许可协议为作者和出版商保留了一种获得对其作品认可的方式,同时不被认为对其作品的修改负责。
本许可协议是一种“复制保留”协议,这意味着该文档的衍生作品也必须以相同的方式自由。它补充了 GNU 通用公共许可协议,该协议是一种专为自由软件设计的复制保留许可协议。
我们设计本许可协议是为了将其用于自由软件的手册,因为自由软件需要自由文档:自由程序应该附带提供与软件相同的自由的手册。但本许可协议不限于软件手册;它可以用于任何文本作品,无论主题如何,无论是否作为印刷书籍出版。我们主要推荐本许可协议用于那些目的在于指导或参考的作品。
本许可协议适用于任何手册或其他作品,以任何媒介形式,其中包含版权所有者放置的通知,说明它可以根据本许可协议的条款进行分发。这样的通知授予全球性的、免版税的许可,期限无限,以根据本文档中规定的条件使用该作品。下文中的“文档”是指任何这样的手册或作品。公众的任何成员都是被许可人,并被称作“您”。如果您以需要根据版权法获得许可的方式复制、修改或分发该作品,则您接受该许可。
“文档的修改版本”是指包含文档或其一部分的任何作品,无论是逐字复制的,还是经过修改和/或翻译成另一种语言的。
“辅助章节”是文档的一个命名附录或前言章节,专门处理出版者或作者与文档的总体主题(或相关事项)的关系,并且不包含任何可能直接属于该总体主题的内容。(因此,如果文档部分是数学教科书,辅助章节可能不能解释任何数学知识。)这种关系可能是与主题或相关事项的历史联系,或与它们相关的法律、商业、哲学、伦理或政治立场。
“不变章节”是某些辅助章节,其标题被指定为不变章节,在说明文档根据本许可协议发布时发布的通知中。如果某个章节不符合上述辅助章节的定义,则不允许将其指定为不变章节。文档可以包含零个不变章节。如果文档未识别任何不变章节,则不存在不变章节。
“封面文字”是某些短文段,在说明文档根据本许可协议发布时发布的通知中列为前封面文字或后封面文字。前封面文字最多为 5 个单词,后封面文字最多为 25 个单词。
“透明”的文档副本是指机器可读的副本,以一种向公众提供规范的格式表示,该格式适合使用通用文本编辑器或(对于由像素组成的图像)通用绘画程序或(对于绘图)一些广泛可用的绘图编辑器进行直接修改文档,并且适合输入文本格式化程序或自动翻译成各种适合输入文本格式化程序的格式。以其他透明文件格式制作的副本,其标记或缺少标记被安排以阻碍或阻止读者进行后续修改,不是透明的。如果用于大量文本,则图像格式不是透明的。不是“透明”的副本称为“不透明”。
适合透明副本的格式示例包括纯 ASCII 无标记、Texinfo 输入格式、LaTeX 输入格式、使用公开可用的 DTD 的 SGML 或 XML,以及符合标准的简单 HTML、PostScript 或 PDF,这些格式专为人工修改而设计。透明图像格式的示例包括 PNG、XCF 和 JPG。不透明格式包括只能由专有文字处理器读取和编辑的专有格式,DTD 和/或处理工具不易获得的 SGML 或 XML,以及一些文字处理器为输出目的而生成的机器生成的 HTML、PostScript 或 PDF。
“标题页”是指印刷书籍的标题页本身,以及所有需要以易读方式容纳本许可协议要求出现在标题页上的材料的后续页面。对于没有标题页的格式的作品,“标题页”是指作品标题最突出显示位置附近的文本。
一个章节“题为 XYZ”是指文档的一个命名子单元,其标题完全是 XYZ,或者在另一种语言中翻译 XYZ 后跟有 XYZ 的文本。 (此处 XYZ 代表下面提到的特定章节名称,例如“致谢”、“献词”、“认可”或“历史”。)要修改文档时“保留标题”,意味着它仍然是一个根据此定义“题为 XYZ”的章节。
文档可以包含与声明本许可协议适用于文档的通知相邻的免责声明。这些免责声明被视为在本许可协议中通过引用包含,但仅限于免除担保:这些免责声明可能具有的任何其他含义无效,并且对本许可协议的含义没有影响。
您可以以任何媒介形式复制和分发文档,无论是商业用途还是非商业用途,前提是本许可协议、版权声明和许可声明说明本许可协议适用于该文档,都必须在所有副本中重现,并且您不能向这些许可协议添加任何其他条件。您不得使用技术措施来阻止或控制您制作或分发的副本的阅读或进一步复制。但是,您可以接受为副本提供的补偿。如果您分发足够数量的副本,还必须遵守第 3 节的规定。
您也可以在相同条件下的基础上借出副本,并且您可以公开展示副本。
如果您发布印刷副本(或通常带有印刷封面的媒体中的副本)的文档,数量超过 100 个,并且文档的许可声明需要封面文字,则必须将副本包含在封面中,封面清晰且易于阅读地承载所有这些封面文字:前封面文字在正面封面上,后封面文字在背面封面上。两个封面还必须清晰且易于阅读地将您识别为这些副本的出版商。正面封面上必须以同样突出和可见的方式呈现完整的标题。您可以在封面中添加其他材料。只要它们保留文档的标题并满足这些条件,就可以将限制在封面上的更改视为其他方面的逐字复制。
如果所需的封面文字太多而无法清晰地适应,您应该将首先列出的文字(尽可能多地适应)放在实际的封面上,并将剩余的文字继续放在相邻的页面上。
如果您发布或分发超过 100 个不透明的文档副本,则必须在每个不透明副本中包含一个机器可读的透明副本,或者在每个不透明副本中说明一个计算机网络位置,公众可以使用公共标准网络协议从该位置下载文档的完整透明副本,无需添加任何材料。如果您使用后一种选项,则必须采取合理的预防措施,在开始分发大量不透明副本时,以确保该透明副本将继续可从所述位置访问,直到您最后一次分发该版本的副本(直接或通过您的代理或零售商)给公众至少一年之后。
建议,但不是必需的,您在重新分发大量副本之前联系文档的作者,以便给他们一个机会向您提供文档的更新版本。
您可以根据上述第 2 节和第 3 节的条件复制和分发文档的修改版本,前提是您根据本许可协议发布修改版本,修改版本充当文档的角色,从而许可向拥有其副本的任何人分发和修改修改版本。此外,您必须在修改版本中执行以下操作
在标题页(如果有封面,则在封面上)使用与文档不同的标题,以及与以前的版本(如果存在,应在文档的历史记录部分中列出)不同的标题。如果您获得原始版本发布者的许可,则可以使用以前版本的相同标题。
在标题页上,列出负责修改版本创作的一个或多个个人或实体,以及文档的所有主要作者(如果文档少于五个主要作者),除非他们免除您此要求。
在标题页上说明修改版本的出版商名称,作为出版商。
保留文档的所有版权声明。
在您的修改旁边添加适当的版权声明。
在版权声明之后包含一个许可声明,授予公众根据本许可协议使用修改版本的权限,形式如下所示的附录。
在许可声明中保留文档许可声明中给出的所有不变章节和所需的封面文字的完整列表。
包含本许可协议的未更改副本。
保留标题为“历史记录”的部分,保留其标题,并添加一个项目,说明修改版本的标题、年份、新作者和出版商,如标题页上所述。如果文档中没有标题为“历史记录”的部分,则创建一个说明文档的标题、年份、作者和出版商,如其标题页上所述,然后添加一个描述修改版本,如上一句所述的项目。
保留文档中提供的用于公开访问文档的透明副本的网络位置(如果有),以及文档中基于其文档的网络位置。这些可以放在“历史记录”部分。您可以省略对发布时间早于文档本身至少四年的作品的网络位置,或者如果原始版本发布者允许,则可以省略。
对于标题为“致谢”或“献词”的任何章节,保留章节标题,并在章节中保留所有贡献者的致谢和/或献词的实质和语气。
保留文档的所有不变章节,文本和标题均未更改。章节编号或等效内容不被视为章节标题的一部分。
删除标题为“认可”的任何章节。这样的章节不能包含在修改版本中。
不要将任何现有章节重新命名为“认可”或与任何不变章节的标题冲突。
保留任何免责声明。
如果修改版本包含新的前言章节或附录,这些章节符合辅助章节的资格并且不包含从文档中复制的任何材料,您可以选择将其中一些或全部章节指定为不变章节。为此,请将它们的标题添加到修改版本许可声明中的不变章节列表中。这些标题必须与任何其他章节标题不同。
您可以添加一个标题为“认可”的章节,前提是它仅包含对您的修改版本由各种方提供的认可——例如,同行评审声明或该文本已被组织批准为标准的权威定义。
您可以添加最多五个单词的前封面文字,以及最多 25 个单词的后封面文字,添加到修改版本中封面文字列表的末尾。任何一个实体(或其代表)只能添加一个前封面文字和一个后封面文字。如果文档已经包含由您或您代表的同一实体添加的相同封面的封面文字,则您不能添加另一个;但是,您可以获得先前添加旧版本的先前出版商的明确许可来替换旧版本。
文档的作者和出版商通过本许可协议不授予使用其姓名进行宣传或断言或暗示认可任何修改版本的许可。
您可以将本文档与其他根据本许可证发布的文档结合起来,遵循上述第 4 条中关于修改版本的规定,前提是您在组合中包含所有原始文档的所有不变章节,未经修改,并将它们全部列为组合作品的许可通知中的不变章节,并且保留所有它们的保修声明。
组合作品只需包含一份本许可证的副本,并且多个相同的不可变章节可以用一份副本代替。如果有多个名称相同但内容不同的不可变章节,请通过在章节标题末尾添加括号内的原始作者或发布者名称(如果已知),或者添加一个唯一的编号,使每个章节的标题唯一。在组合作品的许可通知中的不可变章节列表中对章节标题进行相同的调整。
在组合中,您必须将各个原始文档中标题为“历史”的部分组合成一个标题为“历史”的部分;同样地,组合任何标题为“致谢”的部分,以及任何标题为“献词”的部分。您必须删除所有标题为“推荐”的部分。
您可以创建一个包含本文档和其他根据本许可证发布的文档的集合,并将各个文档中的本许可证的副本替换为包含在集合中的单个副本,前提是您遵循本许可证关于对每个文档进行逐字复制的规则。
您可以从这样的集合中提取单个文档,并以本许可证的形式单独分发它,前提是您将本许可证的副本插入到提取的文档中,并遵循本许可证关于该文档逐字复制的所有其他规定。
将本文档或其衍生作品与其他独立作品在存储或分发介质的卷中组合,如果由此产生的版权不用于限制组合作品用户超出各个作品允许的法律权利,则称为“聚合”。当本文档包含在聚合中时,本许可证不适用于聚合中本身不是本文档衍生作品的其他作品。
如果第 3 条的封面文字要求适用于这些文档的副本,那么如果文档小于整个聚合的一半,则文档的封面文字可以放置在包围文档的封面上,或者如果文档是电子形式,则放置在电子封面上。否则,它们必须出现在包围整个聚合的印刷封面上。
翻译被认为是一种修改,因此您可以根据第 4 条的规定以本许可证的形式分发文档的翻译。用翻译替换不变章节需要其版权所有者的特别许可,但您可以包含不变章节的一些或全部翻译,以及这些不变章节的原始版本。您可以包含本许可证的翻译,以及文档中的所有许可通知和任何保修声明,前提是您也包含本许可证的原始英文版本以及这些通知和声明的原始版本。如果翻译与本许可证或通知或声明的原始版本之间存在分歧,则原始版本将优先。
如果文档中的某个部分标题为“致谢”、“献词”或“历史”,则第 4 条要求保留其标题(第 1 条)通常需要更改实际标题。
您不得复制、修改、再许可或分发本文档,除非本许可证明确规定。任何其他尝试复制、修改、再许可或分发本文档都是无效的,并将自动终止您在本许可证下的权利。但是,从您这里根据本许可证收到副本或权利的各方,只要这些方始终完全遵守本许可证,其许可证将不会被终止。
自由软件基金会可能会不时发布 GNU 自由文档许可证的新修订版本。这些新版本将与当前版本精神相似,但可能在细节上有所不同,以解决新的问题或疑虑。请参阅 https://gnu.ac.cn/copyleft/。
许可证的每个版本都赋予一个不同的版本号。如果文档指定本许可证的特定编号版本“或任何后续版本”适用于它,您可以选择遵循该指定版本的条款和条件,或自由软件基金会发布的任何后续版本(不作为草案发布)。如果文档未指定本许可证的版本号,您可以选择自由软件基金会发布的任何版本(不作为草案发布)。
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
如果您有不变章节、封面文字和封底文字,请将“with...Texts.”行替换为以下内容
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
如果您有不变章节而没有封面文字,或者这三者中的其他组合,请将这两种替代方案合并以适应情况。
如果您的文档包含程序代码的非平凡示例,我们建议您以您选择的自由软件许可证(例如 GNU 通用公共许可证)并行发布这些示例,以允许它们在自由软件中使用。