跳转到内容
openSUSE Leap 15.6

AutoYaST 指南

摘要

AutoYaST 是一个用于无人值守大规模部署 openSUSE Leap 系统的系统。它使用包含安装和配置数据的 AutoYaST 配置文件。本书将引导您完成自动安装的基本步骤:准备、安装和配置。

发布日期: 2024年6月10日
前言
可用文档
改进文档
文档约定
1 AutoYaST 简介
1.1 动机
1.2 概述和概念
I 理解和创建 AutoYaST 控制文件
2 AutoYaST 控制文件
2.1 简介
2.2 格式
2.3 结构
3 创建 AutoYaST 控制文件
3.1 收集信息
3.2 使用配置管理系统 (CMS)
3.3 手动创建/编辑控制文件
3.4 通过脚本和 XSLT 创建控制文件
3.5 检查控制文件
II AutoYaST 配置示例
4 配置和安装选项
4.1 常规选项
4.2 报告
4.3 GRUB 2 引导加载程序
4.4 Systemd 引导加载程序
4.5 分区
4.6 iSCSI 发起程序概述
4.7 以太网上的光纤通道配置 (FCoE)
4.8 国家/地区设置
4.9 软件
4.10 升级
4.11 服务和目标
4.12 网络配置
4.13 代理
4.14 NIS 客户端和服务器
4.15 NIS 服务器
4.16 主机定义
4.17 Windows 域成员身份
4.18 Samba 服务器
4.19 身份验证客户端
4.20 NFS 客户端和服务器
4.21 NTP 客户端
4.22 邮件服务器配置
4.23 Apache HTTP 服务器配置
4.24 Squid 服务器
4.25 FTP 服务器
4.26 TFTP 服务器
4.27 Firstboot 工作流
4.28 安全设置
4.29 Linux 审计框架 (LAF)
4.30 用户和组
4.31 自定义用户脚本
4.32 系统变量 (sysconfig)
4.33 添加完整的配置
4.34 在安装期间要求用户提供值
4.35 内核转储
4.36 DNS 服务器
4.37 DHCP 服务器
4.38 防火墙配置
4.39 各种硬件和系统组件
4.40 导入 SSH 密钥和配置
4.41 配置管理
III 使用动态配置文件管理批量安装
5 支持的动态配置文件方法
6 规则和类
6.1 基于规则的自动安装
6.2
6.3 混合规则和类
6.4 规则和类的合并
7 ERB 模板
7.1 什么是 ERB?
7.2 模板助手
7.3 运行 ERB 助手
7.4 渲染 ERB 配置文件
7.5 调试 ERB 配置文件
7.6 ERB 与规则和类的比较
8 组合 ERB 模板和脚本
8.1 在脚本中嵌入 ERB
8.2 从 Ruby 脚本访问 ERB 助手
IV 理解自动安装过程
9 自动安装过程
9.1 简介
9.2 选择合适的启动介质
9.3 调用自动安装过程
9.4 系统配置
V AutoYaST 在已安装系统中的用途
10 在已安装系统中运行 AutoYaST
VI 附录
A 处理规则
B AutoYaST 常见问题解答
C 高级 linuxrc 选项
C.1 将参数传递给 linuxrc
C.2 info 文件格式
C.3 高级网络设置
D GNU 许可协议
D.1 GNU 自由文档许可
示例列表
2.1 AutoYaST 控制文件(配置文件)
2.2 控制文件容器
2.3 嵌套资源
2.4 空映射
3.1 通过脚本替换主机名/域的示例文件
4.1 常规选项
4.2 报告行为
4.3 基于 LVM 的引导式分区
4.4 创建 //homeswap 分区
4.5 将整个磁盘用作文件系统
4.6 选定驱动器上的自动分区
4.7 在多个驱动器上安装
4.8 挂载选项
4.9 保留分区
4.10 自动检测要保留的分区。
4.11 创建 LVM 物理卷
4.12 LVM 逻辑卷
4.13 RAID10 配置
4.14 无分区的 RAID10
4.15 旧式 RAID10 配置
4.16 使用多路径设备
4.17 列出多路径设备
4.18 使用 WWID 识别多路径设备
4.19 bcache 定义
4.20 多设备 Btrfs 配置
4.21 NFS 共享定义
4.22 tmpfs 定义
4.23 iSCSI 客户端
4.24 FCoE 配置
4.25 语言
4.26 时区
4.27 键盘
4.28 控制文件中使用模式和包部分的包选择
4.29 使用正则表达式选择包
4.30 激活镜像部署
4.31 使用附加软件包 inst-source-utils.rpm 创建软件包数据库
4.32 add_on_products.xml
4.33 添加 SDK 扩展和用户定义的存储库
4.34 控制文件中的内核选择
4.35 控制文件中的软件包选择
4.36 升级和备份
4.37 配置服务和目标
4.38 网络配置
4.39 绑定接口配置
4.40 桥接接口配置
4.41 多个 IP 地址
4.42 使用 MAC 地址分配持久名称
4.43 网络路由配置
4.44 网络配置:代理
4.45 网络配置:NIS
4.46 NIS 服务器配置
4.47 /etc/hosts
4.48 Samba 客户端配置
4.49 Samba 服务器配置
4.50 网络配置:NFS 客户端
4.51 网络配置:NFS 服务器
4.52 网络配置:NTP 客户端
4.53 邮件配置
4.54 HTTP 服务器配置
4.55 Squid 服务器配置
4.56 FTP 服务器配置:
4.57 TFTP 服务器配置:
4.58 启用首次启动工作流
4.59 安全配置
4.60 选择 国防信息系统局 安全技术实施指南
4.61 LAF 配置
4.62 最小用户配置
4.63 复杂用户配置
4.64 组配置
4.65 启用自动登录和无密码登录
4.66 脚本配置
4.67 Sysconfig 配置
4.68 将文件转储到已安装系统
4.69 将文件转储到已安装系统
4.70 Kdump 配置
4.71 禁用 Kdump 配置
4.72 多值 Kdump 内存预留
4.73 基本 DNS 服务器设置
4.74 配置 DNS 服务器区域和高级设置
4.75 dhcp-server 部分示例
4.76 防火墙部分示例
4.77 打印机配置
4.78 声音配置
4.79 从 /dev/sda2 导入 SSH 密钥和配置
4.80 客户端/服务器手动身份验证
4.81 客户端/服务器预置密钥
4.82 独立模式
6.1 简单规则文件
6.2 简单规则文件
7.1 使用 ERB 包含文件
7.2 使用 Ruby 运行命令
7.3 使用 Ruby 结构
7.4 配置引导加载程序
7.5 使用最大磁盘
7.6 配置连接的网卡
7.7 为不同发行版重用相同配置文件
7.8 过滤 USB 设备
7.9 运行帮助程序
7.10 渲染配置文件
7.11 准备调试环境
7.12 添加断点
7.13 规则和类
7.14 ERB
8.1 使用 MAC 地址获取配置文件
8.2 从 Ruby 脚本访问 ERB 帮助程序
9.1 确定 IP 地址的十六进制代码
9.2 AutoYaST 控制文件中的 linuxrc 选项

版权所有 © 2006–2024 SUSE LLC 及其贡献者。保留所有权利。

在 GNU 自由文档许可协议第 1.2 版或(可选)第 1.3 版的条款下,允许复制、分发和/或修改本文档,其中本版权声明和许可协议为不变部分。许可协议第 1.2 版的副本包含在题为 GNU 自由文档许可协议 的章节中。

有关 SUSE 商标,请参阅 https://www.suse.com/company/legal/。所有第三方商标均为其各自所有者的财产。商标符号(®、™ 等)表示 SUSE 及其关联公司的商标。星号 (*) 表示第三方商标。

本书中的所有信息均经过仔细核实。但是,这不能保证完全准确。SUSE LLC、其关联公司、作者和译者对可能出现的错误或由此产生的后果不承担任何责任。

1 可用文档 编辑源文件

在线文档

我们的文档可在 https://doc.opensuse.net.cn 上在线获取。浏览或下载各种格式的文档。

Note
注意:最新更新

最新的更新通常可在本文档的英文版本中获得。

SUSE 知识库

如果您遇到问题,请查看在线提供的技术信息文档 (TID),网址为 https://www.suse.com/support/kb/。搜索 SUSE 知识库,以获取由客户需求驱动的已知解决方案。

在您的系统中

为了离线使用,发布说明也可用在您的系统上的 /usr/share/doc/release-notes 下。各个软件包的文档可用在 /usr/share/doc/packages 下。

许多命令也在其 手册页 中进行了描述。要查看它们,请运行 man,后跟特定的命令名称。如果您的系统上未安装 man 命令,请使用 sudo zypper install man 进行安装。

2 改进文档 编辑源文件

欢迎您对本文档提出反馈和贡献。以下是提供反馈的渠道:

错误报告

请在 https://bugzilla.opensuse.org/ 上报告文档问题。

为了简化此过程,请单击 HTML 版本本文档中标题旁边的 报告问题 图标。这将预先选择 Bugzilla 中的正确产品和类别,并添加指向当前章节的链接。您可以立即开始编写错误报告。

需要一个 Bugzilla 帐户。

贡献

要贡献本文档,请单击 HTML 版本本文档中标题旁边的 编辑源文档 图标。这将带您到 GitHub 上的源代码,您可以在那里打开一个拉取请求。

需要一个 GitHub 帐户。

Note
注意:编辑源文档 仅适用于英文

编辑源文档”图标仅适用于每份文档的英文版本。对于所有其他语言,请改用“报告问题”图标。

有关用于本文档的文档环境的更多信息,请参阅存储库的 README 文件。

邮件

您还可以将错误报告和有关文档的反馈发送至 <>。请包含文档标题、产品版本和文档的发布日期。此外,请包含相关的章节编号和标题(或提供 URL),并提供问题的简洁描述。

帮助

如果您在 openSUSE Leap 上需要进一步的帮助,请参阅 https://en.opensuse.net.cn/Portal:Support

3 文档约定 编辑源文件

本文档中使用了以下通知和排版约定:

  • /etc/passwd:目录名和文件名

  • 占位符:将 占位符 替换为实际值

  • PATH:环境变量

  • ls--help:命令、选项和参数

  • user:用户名或组名

  • 软件包名:软件包的名称

  • AltAltF1:要按下的键或键组合。键以键盘上的大写字母显示。

  • 文件文件 › 另存为:菜单项、按钮

  • 第 1 章,《示例章节:对本指南中另一个章节的交叉引用。

  • 必须使用 root 权限运行的命令。您也可以使用 sudo 命令以非特权用户的身份运行这些命令。

    # command
    > sudo command
  • 可以由非特权用户运行的命令

    > command
  • 命令可以通过行尾的反斜杠字符 (\) 分成两行或多行。反斜杠告知 shell 命令调用将在行尾之后继续。

    > echo a b \
    c d
  • 一个代码块,显示命令(前面带有提示符)和 shell 返回的相应输出。

    > command
    output
  • 通知

    Warning
    警告:警告通知

    在继续之前您必须了解的重要信息。警告您有关安全问题、潜在的数据丢失、硬件损坏或物理危害。

    Important
    重要:重要通知

    在继续之前您应该了解的重要信息。

    Note
    注意:注意通知

    其他信息,例如关于软件版本差异的信息。

    Tip
    提示:提示通知

    有用的信息,例如指南或实用建议。

  • 紧凑型通知

    Note

    其他信息,例如关于软件版本差异的信息。

    Tip

    有用的信息,例如指南或实用建议。

1 AutoYaST 简介 编辑源文件

1.1 动机 编辑源文件

openSUSE Leap 的标准安装基于向导工作流。这在少量机器上安装时是用户友好且高效的。但是,当在多台机器上安装时,这会变得重复且耗时。

为了避免这种情况,您可以通过复制首次成功安装的硬盘来大规模部署。不幸的是,这导致了一个问题,即每台机器之间即使是微小的配置更改也需要单独处理。例如,当使用静态 IP 地址时,这些 IP 地址需要为每台机器重置。

openSUSE Leap 的常规安装默认是半自动的。用户在安装开始时(通常只有语言)被提示选择必要的信息。YaST 然后根据不同的因素和系统参数生成一个底层系统的提案。通常——特别是对于新系统——这样的提案可以用于安装系统并提供一个可用的安装。提案之后的步骤是完全自动化的。

AutoYaST 可用于不需要用户干预或需要自定义的情况。使用 AutoYaST 配置文件,YaST 为自定义安装准备系统,并且不与用户交互,除非在控制安装的文件中指定。

AutoYaST 不是一个自动化的 GUI 系统。这意味着通常会跳过许多屏幕——例如,您永远不会看到语言选择界面。AutoYaST 只会简单地将语言参数传递给子系统,而不会显示任何与语言相关的界面。

1.2 概述和概念 编辑源文件

使用 AutoYaST,可以轻松并行快速安装多个系统。它们需要共享相同的环境和相似(但不一定相同)的硬件。安装由 XML 配置文件(通常命名为 autoinst.xml)定义,该文件称为AutoYaST 配置文件。您可以使用现有的配置资源创建此文件,并轻松地为任何特定环境进行定制。

AutoYaST 已完全集成,并提供各种安装和配置系统的选项。与其他自动安装系统相比,主要优点是能够通过使用现有模块来配置计算机,并避免使用通常在安装结束时执行的自定义脚本。

本文档将引导您完成自动安装的三个步骤

  • 准备:收集有关目标系统的所有相关信息,并将其转换为配置文件中的适当指令。配置文件传输到目标系统,其指令将被解析并馈送给 YaST。

  • 安装:YaST 使用 AutoYaST 配置文件中的数据执行目标系统的安装和基本配置(例如,分区、网络、防火墙)。

  • 安装后配置:在基本系统安装和配置之后,系统可以运行第二阶段以执行任何需要目标系统已经运行的额外配置,例如安装后脚本、第三方模块或某些 YaST 模块。

Note
注意:第二阶段

openSUSE Leap 15.6 的常规安装在一个阶段中完成。然而,自动安装过程分为两个阶段。在基本系统安装和主要配置之后,系统引导到第二阶段以执行任何安装后配置步骤。

需要安装 autoyast2autoyast2-installation 包才能在已安装的系统中正确运行第二阶段。否则,在引导到已安装系统之前将显示错误。

第二阶段仅在严格必要时运行,并且可以使用 second_stage 参数完全关闭第二阶段。

<general>
  <mode>
    <confirm config:type="boolean">false</confirm>
    <second_stage config:type="boolean">false</second_stage>
  </mode>
</general>

第一部分 I 理解和创建 AutoYaST 控制文件 编辑源文件

2 AutoYaST 控制文件

一个 控制文件,也称为 配置文件,是单个系统的配置描述。它由具有属性的资源集合组成,包括对复杂结构(如列表、记录、树和大型嵌入或引用对象)的支持。

3 创建 AutoYaST 控制文件

要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息

2 AutoYaST 控制文件 编辑源文件

2.1 简介 编辑源文件

一个 控制文件,也称为 配置文件,是单个系统的配置描述。它由具有属性的资源集合组成,包括对复杂结构(如列表、记录、树和大型嵌入或引用对象)的支持。

2.2 格式 编辑源文件

XML 配置格式提供了一致的文件结构,在尝试配置新系统时易于学习和记忆。

AutoYaST 控制文件使用 XML 来描述系统安装和配置。XML 是一种常用的标记,许多用户熟悉该语言的概念和用于处理 XML 文件的工具。如果您编辑现有控制文件或创建新控制文件,强烈建议验证控制文件。这可以使用验证 XML 解析器完成,例如 xmllintjing(参见 第 3.3 节,“手动创建/编辑控制文件”)。

以下示例显示了 XML 格式的控制文件

示例 2.1: 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/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>

2.3 结构 编辑源文件

下面是一个基本控制文件容器的示例,其实际内容将在本章后面解释。

示例 2.2: 控制文件容器
<?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> 元素(根节点)包含一个或多个不同的资源元素。允许的资源元素在模式文件中指定

2.3.1 资源和属性 编辑源文件

资源元素要么包含多个不同的属性和资源元素,要么包含相同资源元素的多个实例,要么为空。资源元素的允许内容在模式文件中指定。

属性元素要么为空,要么包含字面值。每个资源元素中允许的属性元素和值在模式文件中指定。

元素可以是其他元素的容器(资源),也可以具有字面值(属性);它不能两者兼备。此限制在模式文件中指定。具有多个值的配置组件必须表示为属性值中的嵌入列表或嵌套资源。

空元素,例如 <foo></foo><bar/>,将在解析的数据模型中。通常这被解释为需要一个合理的默认值。在需要显式空字符串的情况下,请使用 CDATA 部分:<foo><![CDATA[]]></foo>

2.3.2 嵌套资源 编辑源文件

嵌套资源元素允许构建任意深度的配置组件的树状结构。

有两种嵌套资源:映射和列表。映射,也称为关联数组、哈希或字典,包含混合内容,由其标签名称标识。列表或数组,所有项都具有相同的类型。

示例 2.3: 嵌套资源
...
<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 资源是一个包含 sizemount 属性的映射。

嵌套资源的默认类型是映射,尽管您可以根据需要指定它。列表必须使用 config:type="list" 属性标记。

Tip
提示:使用排序器类型注解

openSUSE Leap 15.3 开始,可以使用属性 t 而不是 config:type 来指定元素类型。

<mode t="boolean">true</mode>

2.3.3 属性 编辑源文件

全局属性用于定义资源和属性的元数据。属性用于定义上下文切换。它们还用于命名和键入属性,如前几节所示。属性位于单独的命名空间中,因此它们不需要在默认命名空间中作为保留字处理。

config:type 属性确定解析数据模型中资源或属性的类型。对于资源,列表需要 list 类型,而映射是默认类型,不需要属性。有一个例外。当映射为空时,需要将其标记为映射,以免与简单的字符串值混淆。

示例 2.4: 空映射
<general t="map" />

对于属性,可以使用 booleansymbolinteger,默认是字符串。

除了映射和字符串值(如前所述)之外,属性不是可选的。属性可能看起来是可选的,因为模式的各个部分在使用数据类型时不太一致。在某些地方,枚举由符号表示,而在其他地方则需要字符串。一个资源需要 config:type="integer",另一个资源将从字符串属性中解析数字。某些资源使用 config:type="boolean",而另一些资源则需要 yes 甚至 1。如果有疑问,请查阅模式文件。

3 创建 AutoYaST 控制文件 编辑源文件

3.1 收集信息 编辑源文件

要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息

  • 硬盘类型和大小

  • 图形界面和连接的显示器(如果有)

  • 网络接口和 MAC 地址(如果已知,例如在使用 DHCP 时)

还要验证是否已安装 autoyast2-installationautoyast2

3.2 使用配置管理系统 (CMS) 编辑源文件

为了为一台或多台计算机创建控制文件,提供了基于 YaST 的配置界面。该系统依赖于通常在正常操作模式下(例如,在安装 openSUSE Leap 之后)用于配置计算机的现有模块。

配置管理系统让您轻松创建控制文件并管理配置存储库,以便在具有多个客户端的网络环境中使用。

Configuration system
图 3.1: 配置系统

3.2.1 创建新的控制文件 编辑源文件

创建 AutoYaST 配置文件的最简单方法是使用现有 openSUSE Leap 系统作为模板。在已安装的系统上,启动 YaST › 杂项 › 自动安装配置。然后从菜单中选择 工具 › 创建参考配置文件。选择要包含在配置文件中的系统组件。或者,通过启动 YaST › 杂项 › 自动安装克隆系统 或从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。

这两种方法都将创建文件 /root/autoinst.xml。克隆的配置文件可用于设置与创建它的系统完全相同的克隆系统。但是,您通常会希望调整文件以允许安装非常相似但不完全相同的多台机器。这可以通过使用您喜欢的文本/XML 编辑器调整配置文件来完成。

Warning
警告:配置文件中的敏感数据

请注意,配置文件可能包含敏感信息,例如密码哈希和注册密钥。

仔细检查导出的配置文件,并确保文件权限保持严格。

除少数例外,控制文件的几乎所有资源都可以使用配置管理系统进行配置。该系统提供了灵活性,并且某些资源的配置与 YaST 控制中心中可用的配置相同。除了现有和熟悉的模块之外,还为特殊和复杂的配置创建了新界面,例如分区、一般选项和软件。

此外,使用 CMS 可以保证生成控制文件的有效性及其直接用于启动自动化安装。

确保配置系统已安装(软件包 autoyast2)。使用 YaST 控制中心或以 root 身份使用以下命令调用 AutoYaST(确保 DISPLAY 变量设置正确以启动图形用户界面而不是基于文本的用户界面)

/sbin/yast2 autoyast

3.3 手动创建/编辑控制文件 编辑源文件

如果手动编辑控制文件,请确保它具有有效的语法。要检查语法,请使用发行版上已有的工具。例如,要验证文件格式是否良好(具有有效的 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.rngyast2-schema-default 包提供。此文件描述了 AutoYaST 配置文件的语法和类。

Note
注意:架构扩展

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) 之间的接口

Tip
提示:将 Emacs 用作 XML 编辑器

内置的 nxml 模式将 Emacs 转换为功能齐全的 XML 编辑器,具有自动标签完成和验证功能。有关如何设置 nxml 模式的说明,请参阅 Emacs 帮助。

3.4 通过 XSLT 脚本创建控制文件 编辑源文件

如果您有一个模板并且想通过脚本或命令行更改一些内容,请使用 XSLT 处理器,例如 xsltproc。例如,如果您有一个 AutoYaST 控制文件并且出于任何原因想通过脚本填写主机名。(如果经常这样做,您应该考虑将其脚本化。)

首先,创建一个 XSL 文件

示例 3.1: 通过脚本替换主机名/域的示例文件
<?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

3.5 检查控制文件 编辑源文件

根据用例,创建 AutoYaST 配置文件可能很困难,特别是如果您使用规则/类、ERB 模板或预脚本构建动态配置文件。有关更多信息,请参见第三部分,“使用动态配置文件管理大规模安装”

openSUSE Leap 15.3 开始,AutoYaST 在安装过程中验证配置文件,将发现的任何问题报告给用户。虽然建议检查配置文件是否正确,但您可以通过将 YAST_SKIP_XML_VALIDATION 引导参数设置为 1 来禁用此行为。

此外,为了简化测试和调试过程,AutoYaST 提供了 check-profile 命令,该命令负责获取、构建并(可选)导入配置文件以检测任何潜在问题。

Note
注意:结果可能有所不同

尽管此命令使用与安装相同的方法,但结果可能会因当前系统和安装介质之间的差异而异:YaST 软件包版本、架构等。

Warning
警告:仅使用受信任的配置文件

运行此命令时必须小心,因为预安装脚本和 ERB 代码将以 root 用户身份运行。仅使用您信任的配置文件。

3.5.1 基本检查 编辑源文件

使用此命令的最简单方法是简单地读取和验证配置文件

> sudo  yast2 autoyast check-profile filename=autoinst.xml output=result.xml

result.xml 文件包含评估配置文件的结果。请记住,即使您不使用任何高级功能,autoinst.xmlresult.xml 的内容也可能不同。原因在于 AutoYaST 在处理配置文件时会进行一些清理。

check-profile 也可以处理远程文件

> sudo  yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml

3.5.2 运行预脚本 编辑源文件

可选地,AutoYaST 可以运行配置文件中包含的脚本,报告执行过程中发现的任何错误。如果您使用预安装脚本修改配置文件,这尤其相关。要启用此功能,您需要将 run-scripts 选项设置为 true

> sudo  yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml run-scripts=true
Warning
警告:脚本以 root 身份运行

启用 run-scripts 选项时必须小心,因为脚本将以 root 身份运行,并且可能会影响当前系统。

3.5.3 导入配置文件 编辑源文件

即使配置文件有效且正确,导入时也可能遇到一些问题。原因是 AutoYaST 在获取、构建和验证配置文件时不会执行任何逻辑检查。

为了预测这些问题,check-profile 命令会导入配置文件并报告其检测到的问题。由于这可能需要一些时间,您可以通过将 import-all 选项设置为 false 来禁用此行为。

> sudo  yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml import-all=false

导入配置文件是一个安全操作,不会以任何方式更改底层系统。

第二部分 II AutoYaST 配置示例 编辑源文件

4 配置和安装选项

本节包含服务、注册、用户和组管理、升级、分区、配置管理、SSH 密钥管理、防火墙配置和其他安装选项的配置示例。

4 配置和安装选项 编辑源文件

摘要

本节包含服务、注册、用户和组管理、升级、分区、配置管理、SSH 密钥管理、防火墙配置和其他安装选项的配置示例。

本章介绍了控制文件中用于标准目的的重要部分。要了解其他可用选项,请使用配置管理系统。

请注意,为了使某些配置选项生效,需要安装额外的软件包,具体取决于您配置的软件选择。如果您选择安装最小系统,则某些软件包可能会缺失,需要将其添加到单个软件包选择中。

YaST 将在安装的第二阶段和 AutoYaST 的安装后阶段开始之前安装所需的软件包。但是,如果系统中没有必要的 YaST 模块,重要的配置步骤将被跳过。例如,如果未安装 yast2-security,则不会配置安全设置。

4.1 一般选项 编辑源文件

通用部分包括所有影响安装工作流程的设置。本节的整体结构如下所示

<?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>

4.1.1 模式部分 编辑源文件

模式部分配置 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>
Important
重要:驱动程序可能需要重启

某些驱动程序,例如 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_stage

openSUSE Leap 的常规安装在一个阶段中完成。但是,自动安装过程分为两个阶段。在基本系统安装之后,系统引导到第二阶段,在此阶段完成系统配置。将此选项设置为 false 以禁用第二阶段。此值的设置是可选的。默认值为 true

<general>
 <mode>
  <second_stage config:type="boolean">true</second_stage>
 </mode>
 ...
</general>

4.1.2 配置安装设置屏幕 编辑源文件

AutoYaST 允许您配置 安装设置 屏幕,该屏幕显示安装设置的摘要。在此屏幕上,用户可以在确认设置以开始安装之前更改设置。使用 proposal 标签,您可以控制在安装屏幕中显示哪些设置(提案)。您的产品有效提案列表可在安装介质上的 /control.xml 文件中找到。此设置是可选的。默认情况下将显示所有配置选项。

<proposals config:type="list">
 <proposal>partitions_proposal</proposal>
 <proposal>timezone_proposal</proposal>
 <proposal>software_proposal</proposal>
</proposals>

4.1.3 自更新部分 编辑源文件

在安装过程中,YaST 可以更新自身,以解决发布后发现的安装程序中的错误。有关此功能的更多信息,请参阅部署指南。

使用以下标签配置 YaST 自更新

self_update

如果设置为 truefalse,此选项将启用或禁用 YaST 自更新功能。此值的设置是可选的。默认值为 true

<general>
 <self_update config:type="boolean">true</self_update>
 ...
</general>

或者,您可以在内核命令行上指定引导参数 self_update=1

self_update_url

在 YaST 自更新期间使用的更新存储库的位置。有关更多信息,请参阅《启动指南》,“第 3 章:安装步骤”,“第 3.2.2 节:自定义自更新存储库”

Important
重要提示:仅安装程序自更新仓库

self_update_url 参数仅需要安装程序自更新存储库 URL。请勿提供任何其他存储库 URL——例如,软件更新存储库的 URL。

<general>
 <self_update_url>
  http://example.com/updates/$arch
 </self_update_url>
 ...
</general>

URL 可能包含变量 $arch。它将被系统的架构替换,例如 x86_64s390x 等。

或者,您可以在内核命令行上指定引导参数 self_update=1self_update=URL

4.1.4 半自动部分 编辑源文件

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>

4.1.5 签名处理部分 编辑源文件

默认情况下,AutoYaST 只会从具有已知 GPG 密钥的源安装已签名的软件包。使用此部分覆盖默认设置。

Warning
警告:覆盖签名处理默认值

安装未签名软件包、校验和检查失败的软件包或来自您不信任的源的软件包存在重大的安全风险。软件包可能已被修改,并可能在您的机器上安装恶意软件。仅当您确定存储库和软件包可信时,才覆盖本节中的默认值。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>

4.1.6 等待部分 编辑源文件

在安装的第二阶段,系统通过运行模块进行配置,例如网络配置。在 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>

4.1.7 general 部分的示例 编辑源文件

在此部分中查找涵盖多个用例的示例。

示例 4.1: 一般选项

此示例显示了通用部分中最常用的选项。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>&gt;![CDATA[
echo "Sleeping 10 seconds"
      ]]&gt;</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>&gt;![CDATA[
echo "Sleeping 10 seconds"
      ]]&gt;</source>
      <debug config:type="boolean">false</debug>
     </script>
    </module>
   </post-modules>
  </wait>
 </general>
</profile>

4.2 报告 编辑源文件

report 资源管理安装期间可能出现的三种类型的弹出窗口

  • 消息弹出窗口(通常是非关键的,信息性消息),

  • 警告弹出窗口(如果可能出现问题),

  • 错误弹出窗口(如果发生错误)。

示例 4.2: 报告行为
<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 秒超时的警告/消息。

Warning
警告:关键系统消息

请注意,安装期间并非所有消息都由 report 资源控制。某些关于软件包安装和分区的关键消息将出现,而忽略您在 report 部分中的设置。通常,这些消息需要用 回答。

4.3 GRUB 2 引导加载程序 编辑源文件

本文档适用于 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 将把默认值与配置文件中指定的值合并。

4.3.1 加载器类型 编辑源文件

这定义了使用哪个引导加载程序(UEFI 或 BIOS/传统)。并非所有架构都支持引导加载程序的传统和 EFI 变体。最安全的(default)选项是将决定权留给安装程序。

<loader_type>LOADER_TYPE</loader_type>

LOADER_TYPE 的可能值为

  • default:安装程序选择正确的引导加载程序。这是未定义选项时的默认值。

  • grub2:使用传统的 BIOS 引导加载程序。

  • grub2-efi:使用 EFI 引导加载程序。

  • none:引导过程不由安装程序管理和配置。

4.3.2 全局变量 编辑源文件

这是一个重要但可选的部分。在此处定义 GRUB 2 的安装位置以及引导过程将如何工作。同样,如果您未定义配置,yast2-bootloader 将提出一个配置。通常,AutoYaST 控制文件只包含此部分,所有其他部分在安装期间由 yast2-bootloader 自动添加。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。

Tip
提示:休眠

这是一个重要但可选的部分。在此处定义 GRUB 2 的安装位置以及引导过程将如何工作。同样,如果您未定义配置,yast2-bootloader 会提出一个配置。通常,AutoYaST 控制文件只包含此部分,所有其他部分在安装期间由 yast2-bootloader 自动添加。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。

Tip
提示:休眠

如果需要特定的休眠设置,可以在 append 配置中使用 resumenoresume

要禁用休眠,无论安装程序提议什么,请在 append 部分中将 noresume 指定为内核参数。

要指定休眠设备,请使用 resume 键和设备路径。获得稳定结果的推荐方法是配置您自己的分区并拥有一个带标签的交换设备。

        <append>quiet resume=/dev/disk/by-label/my_swap</append>

如果您不使用 resumenoresume,或者如果 resume 指定了在已安装系统上不存在的设备,则安装程序可能会为 resume 提出一个正确的值,或者它可能会完全删除休眠参数,具体取决于安装程序逻辑。

<global>
  <activate>true</activate>
  <timeout config:type="integer">10</timeout>
  <terminal>gfxterm</terminal>
  <gfxmode>1280x1024x24</gfxmode>
</global>
引导加载程序全局选项
activate

在引导分区上设置引导标志。如果没有单独的 /boot 分区,引导分区可以是 /。如果引导分区在逻辑分区上,引导标志将设置为扩展分区。

<activate>true</activate>
append

内核参数添加到正常和恢复模式的引导条目末尾。

<append>nomodeset vga=0x317</append>
boot_boot

将 GRUB 2 写入单独的 /boot 分区。如果没有单独的 /boot 分区,GRUB 2 将写入 /

<boot_boot>false</boot_boot>
boot_custom

将 GRUB 2 写入自定义设备。

<boot_custom>/dev/sda3</boot_custom>
boot_extended

将 GRUB 2 写入扩展分区(如果您想使用通用引导代码并且 /boot 分区是逻辑分区,则很重要)。注意:如果引导分区是逻辑分区,您应该使用 boot_mbr(将 GRUB 2 写入 MBR)而不是 generic_mbr

<boot_extended>false</boot_extended>
boot_mbr

将 GRUB 2 写入第一个磁盘的 MBR。(device.map 包含磁盘的顺序。)

<boot_mbr>false</boot_mbr>
boot_root

将 GRUB 2 写入 / 分区。

<boot_root>false</boot_root>
cpu_mitigations

允许您选择 CPU 缓解的内核引导命令行参数的默认设置(同时在安全性和性能之间取得平衡)。

可能的值是

auto

启用 CPU 模型所需的所有缓解措施,但不保护免受跨 CPU 线程攻击。此设置可能会在一定程度上影响性能,具体取决于工作负载。

nosmt

提供全套可用的安全缓解措施。启用 CPU 模型所需的所有缓解措施。此外,它还禁用同步多线程 (SMT) 以避免跨多个 CPU 线程的侧信道攻击。此设置可能会进一步影响性能,具体取决于工作负载。

off

禁用所有缓解措施。对 CPU 的侧信道攻击是可能的,具体取决于 CPU 模型。此设置对性能没有影响。

manual

不设置任何缓解级别。使用内核命令行选项手动指定 CPU 缓解措施。

<cpu_mitigations>auto</cpu_mitigations>

如果未在 AutoYaST 中设置,则可以通过内核命令行更改相应的设置。默认情况下,使用安装介质上 /control.xml 文件中的(产品特定)设置(如果未指定其他内容)。

generic_mbr

将通用引导代码写入 MBR(如果 boot_mbr 设置为 true,则将被忽略)。

<generic_mbr config:type="boolean">false</generic_mbr>
gfxmode

GRUB 2 屏幕的图形分辨率(需要将 <terminal> 设置为 gfxterm)。

有效条目为 auto HORIZONTALxVERTICALHORIZONTALxVERTICAL xCOLOR DEPTH。您可以通过在正在运行的系统中的 GRUB 2 命令行中使用 vbeinfo 命令来查看 GRUB 2 在特定系统上支持的屏幕分辨率。

<gfxmode>1280x1024x24</gfxmode>
os_prober

如果设置为 true,则在安装过程中自动搜索已安装的操作系统并为其生成引导条目。

<os_prober>false</os_prober>
password

如果定义了此项,它将使用密码保护引导加载程序。系统在输入密码之前不会启动。

它有三个子元素:valueencryptedunrestricted

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>
suse_btrfs

已过时且不再使用。从 Btrfs 快照启动会自动启用。

serial

如果 GRUB 2 终端模式设置为 serial,则执行的命令。

<serial>serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1</serials>
secure_boot

如果设置为 false,则 UEFI 安全启动被禁用。仅适用于 grub2-efi 引导加载程序。

<secure_boot>false</secure_boot>
terminal

指定要使用的 GRUB 2 终端模式。有效条目包括 consolegfxtermserial。如果设置为 serial,还需要使用 <serial> 指定串行命令。

<terminal>serial</terminal>
timeout

在默认启动项自动启动之前的超时时间(秒)。

<timeout config:type="integer">10</timeout>
trusted_boot

如果设置为 true,则使用受信任的 GRUB。受信任的 GRUB 支持受信任平台模块 (TPM)。仅适用于 grub2 引导加载程序。

<trusted_boot">true</trusted_boot>
update_nvram

如果设置为 true,则 AutoYaST 会为固件中的引导加载程序添加一个 NVRAM 条目。这是理想的行为,除非您想保留特定设置或需要解决固件问题。

<update_nvram>true</update_nvram>
vgamode

将内核参数 vga=VALUE 添加到启动项。

<vgamode>0x317</vgamode>
xen_append

添加到 Xen 客户机启动项末尾的内核参数。

<xen_append>nomodeset vga=0x317</xen_append>
xen_kernel_append

添加到 VM 主机服务器上 Xen 内核启动项末尾的内核参数。

<xen_kernel_append>dom0_mem=768M</xen_kernel_append>

4.3.3 设备映射 编辑源

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>

4.4 Systemd 引导加载程序 编辑源

此文档适用于 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>

4.4.1 加载程序类型 编辑源

这定义了要使用的引导加载程序 (systemd-boot)。并非所有架构都支持引导加载程序的传统和 EFI 变体。

<loader_type>systemd-boot</loader_type>

4.4.2 全局 编辑源

这是一个重要但可选的部分。在此处定义 systemd-boot 的安装位置以及引导过程如何工作。yast2-bootloader 会在您未定义配置时建议一个配置。除非您有特殊要求,否则不要在 XML 文件中指定引导加载程序配置。

<global>
  <timeout config:type="integer">10</timeout>
  <secure_boot>false</secure_boot>
</global>
引导加载程序全局选项
secure_boot

如果设置为 false,则禁用 UEFI 安全引导。

<secure_boot>false</secure_boot>
timeout

在默认启动项自动启动之前的超时时间(秒)。

<timeout config:type="integer">10</timeout>

4.5 分区 编辑源

在分区方面,我们可以将 AutoYaST 的用例分为三个不同的级别

  • 自动分区。用户不关心分区,并相信 AutoYaST 会做出正确的选择。

  • 引导式分区。用户想要设置一些基本设置。例如,用户想要使用 LVM,但不知道如何配置分区、卷组等。

  • 专家分区。用户指定布局应如何。但是,不需要完整的定义,AutoYaST 应该为缺失的部分提供合理的默认值。

在某种程度上,这就像使用常规安装程序一样。您可以跳过分区屏幕并相信 YaST,使用引导式建议,或者通过专家分区程序定义分区布局。

4.5.1 自动分区 编辑源

AutoYaST 可以在没有任何用户指示的情况下提出合理的分区布局。尽管这取决于所选的安装产品,但 AutoYaST 通常会建议一个 Btrfs 根文件系统、一个使用 XFS 的单独 /home 和一个交换分区。此外,根据架构,它还会添加可能需要启动的任何分区(如 BIOS GRUB 分区)。

但是,这些默认值可能会根据可用磁盘空间等因素而改变。例如,是否拥有单独的 /home 取决于可用磁盘空间的大小。

如果您想影响这些默认值,可以使用 第 4.5.2 节,“引导式分区” 中描述的方法。

4.5.2 引导式分区 编辑源

尽管 AutoYaST 可以在没有任何用户指示的情况下提出分区布局,但有时设置一些通用参数并让 AutoYaST 完成其余工作是很有用的。例如,您可能对使用 LVM 或加密文件系统感兴趣,而无需处理详细信息。这类似于您在常规安装中使用引导式建议时会做的事情。

示例 4.3,“基于 LVM 的引导式分区” 中的 storage 部分指示 AutoYaST 设置使用 LVM 的分区布局并删除所有 Windows 分区,无论它们是否需要。

示例 4.3:基于 LVM 的引导式分区
<general>
   <storage>
     <proposal>
       <lvm config:type="boolean">true</lvm>
       <windows_delete_mode config:type="symbol">all</windows_delete_mode>
     </proposal>
   </storage>
</general>
lvm

创建基于 LVM 的建议。默认值为 false

<lvm config:type="boolean">true</lvm>
lvm_vg_reuse

告诉安装程序是否应在建议中重用现有 LVM。默认值为 true

<lvm_vg_reuse config:type="boolean">false</lvm_vg_reuse>
resize_windows

当设置为 true 时,如果需要为安装腾出空间,AutoYaST 会调整 Windows 分区的大小。

<resize_windows config:type="boolean">false</resize_windows>
windows_delete_mode
  • none 不移除 Windows 分区。

  • ondemand 在需要时移除 Windows 分区。

  • all 移除所有 Windows 分区。

<windows_delete_mode config:type="symbol">ondemand</windows_delete_mode>
linux_delete_mode
  • none 不移除 Linux 分区。

  • ondemand 在需要时移除 Linux 分区。

  • all 移除所有 Linux 分区。

<linux_delete_mode config:type="symbol">ondemand</linux_delete_mode>
other_delete_mode
  • none 不移除其他分区。

  • ondemand 在需要时移除其他分区。

  • all 移除所有其他分区。

<other_delete_mode config:type="symbol">ondemand</other_delete_mode>
encryption_password

使用指定的密码启用加密。默认情况下,加密是禁用的。

<encryption_password>some-secret</encryption_password>

4.5.3 专家分区 编辑源

作为引导式分区的替代方案,AutoYaST 允许通过 partitioning 部分描述分区布局。但是,AutoYaST 不需要知道每个细节,可以从相当不完整的规范中构建一个合理的布局。

partitioning 部分是 drive 元素的列表。这些部分中的每一个都描述了分区布局的一个元素,如磁盘、LVM 卷组、RAID、多设备 Btrfs 文件系统等。

示例 4.4,“创建 //homeswap 分区” 要求 AutoYaST 使用整个磁盘创建 //homeswap 分区。请注意,缺少一些信息,例如每个分区应使用哪个文件系统。但是,这不是问题,AutoYaST 会为它们建议合理的值。

示例 4.4:创建 //homeswap 分区
<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>
Tip
提示:建议一个引导分区

AutoYaST 检查配置文件中描述的布局是否可引导。如果不可引导,它会添加缺失的分区。因此,如果您不确定需要哪些分区才能引导,可以依赖 AutoYaST 做出正确的决定。

4.5.3.1 驱动器配置 编辑源

下面列出的元素必须放置在以下 XML 结构中

<profile>
  <partitioning config:type="list">
    <drive>
     ...
    </drive>
  </partitioning>
</profile>
属性、值、描述
device

可选,您要配置的设备。如果省略,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 节,“多路径支持”

initialize

可选,默认值为 false。如果设置为 true,则在 AutoYaST 开始分区计算之前会擦除分区表。

<initialize config:type="boolean">true</initialize>
partitions

可选,<partition> 条目列表(请参阅 第 4.5.3.2 节,“分区配置”)。

<partitions config:type="list">
          <partition>...</partition>
          ...
          </partitions>

如果未指定分区,AutoYaST 将创建合理的分区布局(请参阅 第 4.5.3.5 节,“填补空白”)。

pesize

可选,仅适用于 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>
disklabel

可选。默认情况下,YaST 会根据情况进行决策。如果已存在不同类型的分区表,则仅当它不包含任何应保留或重用的分区时,才会使用给定类型重新创建它。要在不创建任何分区的情况下使用磁盘,请将此元素设置为 none。以下是所有选项的列表

msdos

gpt

none

<disklabel>gpt</disklabel>
keep_unknown_lv

可选,默认值为 false

此值仅对 type=CT_LVM 驱动器有意义。如果您正在重用一个逻辑卷组并将其设置为 true,则除非在 <partitioning> 部分中指定,否则该组中的所有现有逻辑卷将不会被触及。因此,您可以保留现有逻辑卷而无需指定它们。

<keep_unknown_lv config:type="boolean">false</keep_unknown_lv>
enable_snapshots

可选,默认值为 true

在挂载到 / 的 Btrfs 文件系统上启用快照(不适用于其他文件系统,或未挂载到 / 的 Btrfs 文件系统)。

<enable_snapshots config:type="boolean">false</enable_snapshots>
quotas

可选,默认值为 false

启用 Btrfs 子卷配额支持。将此元素设置为 true 将启用文件系统配额支持。但是,您需要为每个子卷设置限制。有关更多信息,请查看 第 4.5.3.3 节,“Btrfs 子卷”

<quotas config:type="boolean">true</quotas>
Important
重要:谨防数据丢失

use 属性中提供的值决定了如何处理现有数据和分区。all 值意味着整个磁盘将被擦除。如果您需要保留一些带有重要数据的分区,请进行备份并使用 confirm 属性。否则,不会有任何弹出窗口通知您分区被删除。

Tip
提示:跳过设备

您可以影响 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

4.5.3.2 分区配置 编辑源

下面列出的元素必须放置在以下 XML 结构中

<drive>
  <partitions config:type="list">
    <partition>
      ...
    </partition>
  </partitions>
</drive>
create

指定是否必须创建此分区或逻辑卷,或者它是否已存在。如果设置为 false,您还需要设置 partition_nrlv_namelabeluuid 中的一个,以告诉 AutoYaST 要使用哪个设备。

<create config:type="boolean">false</create>
crypt_method

可选,分区将使用以下方法之一进行加密

  • 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_pbkdfcrypt_ciphercrypt_key_size 自定义加密的多个方面,具体取决于所使用的 LUKS 精确变体。请记住,加密方法及其相应的设置可能会极大地影响完成安装过程所需的 RAM 量。使用默认参数的常规 LUKS2 通常意味着系统需要几 GB 的 RAM 才能加密设备。

crypt_fs

分区将被加密,默认值为 false。此元素已弃用。请改用 crypt_method

<crypt_fs config:type="boolean">true</crypt_fs>
crypt_key

如果 crypt_method 已设置为需要密码的方法(即 luks1luks2pervasive_luks2),则必需。

<crypt_key>xxxxxxxx</crypt_key>
crypt_cipher

用于 LUKS 加密的密码。仅当 crypt_method 的值为 luks1luks2 时,此值才有效。字符串的格式和值必须与 cryptsetup 命令的 --cipher 参数兼容。

<crypt_cipher>aes-xts-plain64</crypt_cipher>
crypt_key_size

用于 LUKS 加密的密钥大小(比特)。仅当 crypt_method 的值为 luks1luks2 时,此值才有效。该值必须是 8 的倍数。可能的密钥大小受所用密码的限制。

<crypt_key_size config:type="integer">256</crypt_key_size>
crypt_pbkdf

用于 LUKS2 加密的基于密码的密钥派生函数。这仅在 crypt_methodluks2 时相关。可能的值为 pbkdf2argon2iargon2id。如果省略,设备将使用 cryptsetup 命令的默认函数进行加密。请注意,Argon2 的两种变体都旨在在加密过程中故意消耗大量内存。使用任何这些函数或省略此设置(这很可能导致使用 Argon2)意味着与未加密设置相比,完成安装过程需要更多的 RAM。

<crypt_pbkdf config:type="symbol">argon2id</crypt_pbkdf>
crypt_label

加密设备的 LUKS 标签。这仅在 crypt_methodluks2 时相关。

<crypt_label>crypt_home</crypt_label>
mount

您应该至少有一个根分区 (/) 和一个交换分区。

<mount>/</mount><mount>swap</mount>
fstopt

此分区的挂载选项;有关可用挂载选项,请参阅 man mount

<fstopt>ro,noatime,user,data=ordered,acl,user_xattr</fstopt>
label

分区的标签。在格式化设备时(尤其是当 mountby 参数设置为 label 时)以及识别已存在的设备时(请参阅上面的 create)很有用。有关示例,请参阅 man e2label

<label>mydata</label>
uuid

分区的 uuid。仅用于识别现有设备(请参阅上面的 create)。对于新设备无法强制执行 uuid。(请参阅 man uuidgen。)

<uuid>1b4e28ba-2fa1-11d2-883f-b9a761bde3fb</uuid>
size

分区的大小,例如 4G、4500M 等。/boot 分区和交换分区可以将 auto 作为大小。然后 AutoYaST 会计算一个合理的大小。一个分区可以具有 max 值以使用所有剩余空间。

您还可以以百分比指定大小。因此,10% 将使用硬盘或卷组大小的 10%。您可以根据需要混合使用 automaxsize 和百分比。

<size>10G</size>

openSUSE Leap 15 开始,所有值(包括 automax)也可以用于调整分区大小。

format

指定 AutoYaST 是否应格式化分区。如果将 create 设置为 true,那么您也很可能希望将此选项设置为 true

<format config:type="boolean">false</format>
file system

可选。根分区 (/) 的默认值为 btrfs,数据分区的默认值为 xfs。指定此分区上要使用的文件系统

  • btrfs

  • ext2

  • ext3

  • ext4

  • fat

  • xfs

  • swap

    <filesystem config:type="symbol">ext3</filesystem>
mkfs_options

可选,为 mkfs 指定一个选项字符串。仅当您知道自己在做什么时才使用此选项。(请参阅您要使用的文件系统的相关 mkfs 手册页。)

<mkfs_options>-I 128</mkfs_options>
partition_nr

此分区的编号。如果您已将 create=false 或使用 LVM,则可以通过 partition_nr 指定分区。

<partition_nr config:type="integer">2</partition_nr>
partition_id

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
partition_type

可选。允许的值为 primary。使用 msdos 分区表时,此元素将分区类型设置为 primary。当使用 gpt 分区表时,此值将被忽略,因为在这种情况下不存在这种区别。

<partition_type>primary</partition_type>
mountby

除了分区号,您还可以告诉 AutoYaST 通过 devicelabeluuidpathid 挂载分区,这些是 udev 路径和 udev id(请参阅 /dev/disk/...)。

请参阅上面的 labeluuid 文档。默认值取决于 YaST,通常是 id

<mountby config:type="symbol">label</mountby>
subvolumes

要为 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>
create_subvolumes

确定是否应创建 Btrfs 子卷。默认设置为 true。设置为 false 时,不会创建任何子卷。

subvolumes_prefix

设置 Btrfs 子卷前缀名称。如果不需要前缀,则必须将其设置为空值

<subvolumes_prefix><![CDATA[]]></subvolumes_prefix>

默认设置为 @

lv_name

如果此分区位于卷组中的逻辑卷上,请在此处指定逻辑卷名称(请参阅驱动器配置中的 type 参数)。

<lv_name>opt_lv</lv_name>
stripes

一个整数,用于配置 LVM 条带化。指定您要跨多少个设备进行条带化(分散数据)。

<stripes config:type="integer">2</stripes>
stripesize

指定每个块的大小(KB)。

<stripesize config:type="integer">4</stripesize>
lvm_group

如果这是卷组(LVM)使用的物理分区(一部分),则需要在此处指定卷组的名称。

<lvm_group>system</lvm_group>
pool

如果 LVM 逻辑卷应为 LVM 精简池,则 pool 必须设置为 true

<pool config:type="boolean">true</pool>
used_pool

用作此精简逻辑卷数据存储的 LVM 精简池的名称。如果此项设置为非空,则表示该卷是所谓的精简逻辑卷。

<used_pool>my_thin_pool</used_pool>
raid_name

如果此物理卷是 RAID 阵列的一部分,请指定 RAID 阵列的名称。

<raid_name>/dev/md/0</raid_name>
raid_options

指定 RAID 选项。在 partition 级别设置 RAID 选项已弃用。请参阅 第 4.5.6 节,“软件 RAID”

bcache_backing_for

如果此设备用作 bcache 后备设备,请指定 bcache 设备的名称。有关更多详细信息,请参阅 第 4.5.8 节,“bcache 配置”

<bcache_backing_for>/dev/bcache0</bcache_backing_for>
bcache_caching_for

如果此设备用作 bcache 缓存设备,请指定 bcache 设备的名称。有关更多详细信息,请参阅 第 4.5.8 节,“bcache 配置”

<bcache_caching_for config:type="list"><listentry>/dev/bcache0</listentry></bcache_caching_for>
resize

openSUSE Leap 15 开始,调整大小适用于物理磁盘分区和 LVM 卷

<resize config:type="boolean">false</resize>

4.5.3.3 Btrfs 子卷 编辑源

第 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 支持两种限制:referencedexclusive。目前,仅支持前者。

如果存在用于发行版的默认子卷(例如 openSUSE Leap 中的 @),则此默认子卷的名称会自动添加到定义的子卷名称前。可以通过在 第 4.5.3.1 节,“驱动器配置” 中设置 subvolumes_prefix 来禁用此行为。

<subvolumes_prefix><![CDATA[]]></subvolumes_prefix>

4.5.3.4 使用整个磁盘 编辑源

AutoYaST 允许通过将 disklabel 设置为 none 来使用整个磁盘而不创建任何分区,如 第 4.5.3.1 节,“驱动器配置” 中所述。在这种情况下,drive 中的第一个 partition 的配置将应用于整个磁盘。

在下面的示例中,我们使用第二个磁盘 (/dev/sdb) 作为 /home 文件系统。

示例 4.5:使用整个磁盘作为文件系统
<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 开始弃用。

4.5.3.5 填补空白 编辑源

使用专家分区程序方法时,AutoYaST 可以从相当不完整的配置文件中创建分区计划。以下配置文件显示了如何描述分区布局的一些详细信息,并让 AutoYaST 完成其余工作。

示例 4.6:选定驱动器上的自动分区

以下是单驱动器系统的示例,该系统未预分区,应根据所述的预定义分区计划进行自动分区。如果您未指定设备,它将自动检测。

<partitioning config:type="list">
  <drive>
    <device>/dev/sda</device>
    <use>all</use>
  </drive>
</partitioning>

更详细的示例显示了如何处理现有分区和多个驱动器。

示例 4.7:在多个驱动器上安装
<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>

4.5.4 高级分区功能 编辑源

4.5.4.1 擦除分区表 编辑源

通常不需要这样做,因为 AutoYaST 可以自动逐个删除分区。但您需要该选项,以便 AutoYaST 清除分区表而不是单独删除分区。

转到 drive 部分并添加

<initialize config:type="boolean">true</initialize>

通过此设置,AutoYaST 将在开始分析实际分区并计算其分区计划之前删除分区表。当然,这意味着您无法保留任何现有分区。

4.5.4.2 挂载选项 编辑源

默认情况下,要挂载的文件系统在 /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)

允许在文件系统上使用扩展用户属性。

示例 4.8:挂载选项
<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>
Note
注意:检查支持的文件系统选项

不同的文件系统类型支持不同的选项。在设置它们之前,请仔细查看文档。

4.5.4.3 保留特定分区 编辑源

在某些情况下,您应该保持分区不变,只格式化特定的目标分区,而不是从头开始创建它们。例如,如果不同的 Linux 安装共存,或者您安装了另一个操作系统,您可能不想擦除这些。您可能还想保持数据分区不变。

此类场景需要对目标系统和硬盘有特定的了解。根据场景,您可能需要了解目标硬盘的精确分区表以及分区 ID、大小和编号。有了这些数据,您可以告诉 AutoYaST 保留某些分区,格式化其他分区,并在需要时创建新分区。

以下示例将保留分区 1、2 和 5,删除分区 6 以创建两个新分区。所有剩余分区将仅被格式化。

示例 4.9:保留分区
<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 安装指定了区域。

Keeping partitions
图 4.1:保留分区

在此场景中,如 图 4.1,“保留分区” 所示,AutoYaST 不会创建新分区。相反,它会在系统上搜索某些分区类型,并根据控制文件中的分区计划使用它们。在这种情况下未给出分区号,仅给出挂载点和分区类型(可以提供额外的配置数据,例如文件系统选项、加密和文件系统类型)。

示例 4.10:自动检测要保留的分区。
<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>
Note
注意:保留加密设备

当 AutoYaST 探测存储设备时,尚未分析配置文件中的分区部分。在某些情况下,不清楚应该使用哪个密钥来解锁设备。例如,当定义了多个加密密钥时,可能会发生这种情况。为了解决这个问题,AutoYaST 将在所有加密设备上尝试所有定义的密钥,直到找到一个可用的密钥。

4.5.5 逻辑卷管理器 (LVM) 编辑源

要配置 LVM,首先使用上述的正常分区方法创建一个物理卷。

示例 4.11:创建 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>
示例 4.12:LVM 逻辑卷
<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

4.5.6 软件 RAID 编辑源

openSUSE Leap 15.2 中对软件 RAID 设备的支持已大大改进。

如有需要,请参阅 第 4.5.6.1 节,“使用已弃用语法” 以了解有关旧式指定软件 RAID 的更多详细信息,旧式语法仍受支持以实现向后兼容性。

使用 AutoYaST,您可以创建和组装软件 RAID 设备。支持的 RAID 级别如下

RAID 0

此级别可提高您的磁盘性能。在此模式下没有冗余。如果其中一个驱动器崩溃,将无法恢复数据。

RAID 1

此模式提供最佳冗余。可与两个或更多磁盘一起使用。所有数据在所有磁盘上都保持精确副本。只要至少有一个磁盘仍在工作,就不会丢失数据。用于此类型 RAID 的分区应具有大致相同的大小。

RAID 5

此模式结合了大量磁盘的管理,同时仍保持一定的冗余。此模式可用于三个或更多磁盘。如果一个磁盘出现故障,所有数据仍然完好无损。如果两个磁盘同时出现故障,则所有数据都会丢失。

多路径

此模式允许通过多个控制器访问同一物理设备,以实现控制器卡故障冗余。此模式可与至少两个设备一起使用。

与 LVM 类似,AutoYaST 配置文件中的软件 RAID 定义由两个不同的部分组成

  • 确定哪些磁盘或分区将用作 RAID 成员。为此,您需要在这些设备中设置 raid_name 元素。

  • 通过使用专用 drive 部分定义 RAID 本身。

以下示例显示了一个 RAID10 配置,它使用第一个磁盘的一个分区和第二个磁盘的另一个分区作为 RAID 成员

示例 4.13:RAID10 配置
<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 部分

示例 4.14:无分区的 RAID10
<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>

4.5.6.1 使用已弃用语法 编辑源

如果启用了安装程序自更新功能,则可以为 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 资源中。

示例 4.15:旧式 RAID10 配置
<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>

4.5.6.2 RAID 选项 编辑源

以下元素必须放置在以下 XML 结构中

<partition>
     <raid_options>
     ...
     </raid_options>
     </partition>
chunk_size

可以表示为带有相应单位的数字(例如,32M)或仅表示为数字。如果省略单位,则默认使用千字节。不要为 RAID1 指定 chunk_size。请记住,raid1 是默认类型。

<chunk_size>4</chunk_size>
parity_algorithm

可能的值是

left_asymmetricleft_symmetricright_asymmetricright_symmetricfirstlastfirst_6left_asymmetric_6left_symmetric_6right_asymmetric_6right_symmetric_6near_2offset_2far_2near_3offset_3far_3

为了与以前版本的 AutoYaST 向后兼容,还识别以下别名

parity_firstparity_lastparity_first_6n2o2f2n3o3f3

每个 RAID 接受的值取决于 RAID 级别(例如,raid5)和 RAID 中的设备数量。鉴于 RAID0 或 RAID1 不提供任何奇偶校验,请勿为这些设备指定此选项。

<parity_algorithm>left_asymmetric</parity_algorithm>
raid_type

可能的值有:raid0raid1raid5raid6raid10

<raid_type>raid1</raid_type>

默认值为 raid1

device_order

此列表包含物理设备的顺序

<device_order config:type="list"><device>/dev/sdb2</device><device>/dev/sda1</device>...</device_order>

这是可选的,默认按字母顺序排列。

4.5.7 多路径支持 编辑源

AutoYaST 可以处理多路径设备。要利用它们,您需要启用多路径支持,如 示例 4.16,“使用多路径设备” 所示。或者,您可以在内核命令行上使用以下参数:LIBSTORAGE_MULTIPATH_AUTOSTART=ON

示例 4.16:使用多路径设备
<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)。

示例 4.17:列出多路径设备
# 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
示例 4.18:使用 WWID 识别多路径设备
<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>

4.5.8 bcache 配置 编辑源

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_BCACHEbcache 设备的布局可能包含分区。

示例 4.19: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

cache_mode

bcache 的缓存模式。可能的值有

  • writethrough

  • writeback

  • writearound

  • none

<cache_mode>writethrough</cache_mode>

4.5.9 多设备 Btrfs 配置 编辑源

Btrfs 支持创建跨越多个存储设备的单个卷,提供类似于软件 RAID 实现的功能,例如 Linux 内核的内置 mdraid 子系统。多设备 Btrfs 相对于其他一些 RAID 实现具有优势。例如,您可以动态地将多设备 Btrfs 卷从一个 RAID 级别迁移到另一个 RAID 级别,RAID 级别可以按文件设置,等等。但是,这些功能并非所有都在 openSUSE Leap 15.6 中完全支持。

使用 AutoYaST,可以通过指定类型为 CT_BTRFS 的驱动器来配置多设备 Btrfs。device 属性用作任意名称以标识每个多设备 Btrfs。

与 RAID 一样,您需要首先创建所有块设备(例如,分区、LVM 逻辑卷等),并将它们分配给您希望在这些块设备上创建的 Btrfs 文件系统。

以下示例显示了一个简单的多设备 Btrfs 配置

示例 4.20:多设备 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 级别为:defaultsingledupraid0raid1raid10。默认情况下,文件系统元数据在两个设备之间镜像,数据则跨所有设备进行条带化。如果只有一个设备存在,元数据将在该设备上复制。

配置多设备 Btrfs 文件系统时,请记住以下几点

  • 设备需要指示 btrfs_name 属性才能包含在多设备 Btrfs 文件系统中。

  • 所有 Btrfs 特定选项都包含在 CT_BTRFS 驱动器的 btrfs_options 资源中。

4.5.10 NFS 配置 编辑源

AutoYaST 允许在网络文件系统 (NFS) 共享上安装 openSUSE Leap。为此,您必须创建一个类型为 CT_NFS 的驱动器,并将 NFS 共享名称 (SERVER:PATH) 作为设备名称提供。有关挂载点的信息包含在其第一个分区部分中。请注意,对于 NFS 驱动器,仅考虑第一个分区。

有关系统安装后如何配置 NFS 客户端和服务器的更多信息,请参阅 第 4.20 节,“NFS 客户端和服务器”

示例 4.21: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>

4.5.11 tmpfs 配置 编辑源

AutoYaST 通过将 type 元素设置为 CT_TMPFS 来支持 tmpfs 虚拟文件系统的定义。每个 partition 部分都表示一个 tmpfs 文件系统。

示例 4.22: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 等常规文件系统不同。因此,唯一相关的元素是必需的 mountfstopt。后者用于设置文件系统属性,例如其大小限制、模式等。您可以在 tmpfs 手册页中找到有关已知选项的附加信息。

4.6 iSCSI 发起程序概述 编辑源

使用 iscsi-client 资源,您可以将目标机器配置为 iSCSI 客户端。

示例 4.23: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>
iSCSI 发起程序配置设置
initiatorname

InitiatorName/etc/iscsi/initiatorname.iscsi 中的一个值。如果您有 iBFT,此值将从那里添加,并且您只能在 BIOS 设置中更改它。

version

YaST 模块的版本。默认值:1.0

targets

目标列表。每个条目包含

authmethod

身份验证方法:无/CHAP

portal

门户地址

startup

值:manual/onboot

target

目标名称

iface

接口名称

4.7 以太网光纤通道配置 (FCoE) 编辑源

使用 fcoe_cfg 资源,您可以配置以太网光纤通道 (FCoE)。

示例 4.24: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>
fcoe_cfg

值:yes/no

DEBUG 用于启用或禁用 fcoe 服务脚本和 fcoemon 的调试消息。

如果设置为 yes,USE_SYSLOG 消息将发送到系统日志。

interfaces

网卡列表,包括 VLAN 和 FCoE 配置的状态。

service_start

值:yes/no

启用或禁用服务 fcoelldpad 的启动时间。

启动 fcoe 服务意味着启动以太网光纤通道服务守护程序 fcoemon,它控制 FCoE 接口并与 lldpad 守护程序建立连接。

lldpad 服务提供链路层发现协议代理守护程序 lldpad,它将 DCB(数据中心桥接)功能和接口配置信息通知 fcoemon

4.8 国家/地区设置 编辑源

语言、时区和键盘设置。

示例 4.25:语言
       <language>
         <language>en_GB</language>
         <languages>de_DE,en_US</languages>
       </language>
language

主要语言

languages

用逗号分隔的辅助语言

可用语言列表可在 /usr/share/YaST2/data/languages 下找到。

如果主语言的配置值未知,它将重置为默认值 en_US

示例 4.26:时区
       <timezone>
         <hwclock>UTC</hwclock>
         <timezone>Europe/Berlin</timezone>
       </timezone>
hwclock

硬件时钟是使用本地时间还是 UTC。

值:localtime/UTC

timezone

时区。

可用时区列表可在 /usr/share/YaST2/data/timezone_raw.ycp 下找到

示例 4.27:键盘
       <keyboard>
         <keymap>german</keymap>
       </keyboard>
keymap

键盘布局

键映射代码值或键映射别名值均有效。可用条目列表可在 /usr/share/YaST2/lib/y2keyboard/keyboards.rb 中找到。例如,english-us, us, english-uk, uk.

4.9 软件 编辑源

4.9.1 使用模式和包部分进行包选择 编辑源

模式或包配置如下

示例 4.28:控制文件中带有模式和包部分的包选择
<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>
Note
注意:包和模式名称

这些值是真实的包或模式名称。如果由于升级而更改了包名称,您也需要调整这些设置。

可以使用正则表达式指定包和模式名称。在这种情况下,AutoYaST 将选择所有与表达式匹配的包或模式。请注意,此类表达式必须用斜杠括起来。在 示例 4.29,“使用正则表达式进行包选择” 中,所有名称以 nginx 开头的包都将被选中(例如,nginxnginx-macros)。

示例 4.29:使用正则表达式进行包选择
<software>
  <packages config:type="list">
    <package>/nginx.*/</package>
  </packages>
</software>

4.9.2 部署镜像 编辑源

您可以在安装过程中使用镜像来加快安装速度。

示例 4.30:激活镜像部署
<!-- note! this is not in the software section! -->
<deploy_image>
  <image_installation config:type="boolean">false</image_installation>
</deploy_image>

4.9.3 安装附加/自定义包或产品 编辑源

除了 DVD-ROM 上可用的安装包之外,您还可以添加外部包,包括自定义内核。自定义内核包必须与 SUSE 包兼容,并且必须将内核文件安装到相同的位置。

与早期版本不同,您不需要在控制文件中使用特殊资源来安装自定义和外部包。相反,您需要重新创建包数据库并使用源存储库中的任何新包或新包版本更新它。

为此任务提供了一个脚本,该脚本将查询存储库中可用的包并创建包数据库。使用命令 /usr/bin/create_package_descr。它可以在 openSUSE Build Service 的 inst-source-utils 包中找到。创建数据库时,所有语言都将重置为英语。

示例 4.31:使用附加包 inst-source-utils.rpm 创建包数据库

未打包的 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 中。

示例 4.32: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

示例 4.33:添加 SDK 扩展和用户定义的存储库
<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_othersadd_on_products 部分支持相同的值

media_url

产品 URL。可以有前缀 cd:///http://ftp:// 等。此条目是强制性的。

如果您使用多产品介质,例如 SUSE Linux Enterprise Packages DVD,则 URL 路径应指向多产品介质的根目录。特定的产品目录是使用 product_dir 值(见下文)选择的。

product

如果附加组件是产品,则为内部产品名称。zypper products 命令显示已安装产品的名称。

alias

存储库别名。由用户定义。

product_dir

可选子路径。这仅应用于多产品介质,例如 SUSE Linux Enterprise Packages DVD。

priority

设置存储库 libzypp 优先级。优先级 1 最高。数字越大,优先级越低。默认值为 99。

ask_on_error

AutoYaST 可以要求用户提供附加产品、模块或扩展,而不是在给定位置找不到存储库时报告超时错误。将 ask_on_error 设置为 true(默认值为 false)。

confirm_license

用户需要确认许可证。默认值为 false

name

存储库名称。zypper lr 命令显示已添加存储库的名称。

要在 AutoYaST 中使用未签名安装源,请在 AutoYaST 控制文件中使用以下配置关闭检查。

Note
注意:未签名安装源 — 限制

您只能在自动安装过程的第一阶段禁用签名检查。在第二阶段,已安装系统的配置优先于 AutoYaST 配置。

下面列出的元素必须放置在以下 XML 结构中

<general>
  <signature-handling>
    ...
  </signature-handling>
</general>

所有选项的默认值均为 false。如果某个选项设置为 false,并且包或存储库未能通过各自的测试,它将被静默忽略,并且不会被安装。请注意,将这些选项中的任何一个设置为 true 都存在潜在的安全风险。在使用第三方来源的包或存储库时,切勿这样做。

accept_unsigned_file

如果设置为 true,AutoYaST 将接受未签名的文件,例如内容文件。

<accept_unsigned_file config:type="boolean" >true</accept_unsigned_file>
accept_file_without_checksum

如果设置为 true,AutoYaST 将接受内容文件中没有校验和的文件。

<accept_file_without_checksum config:type="boolean" >true</accept_file_without_checksum>
accept_verification_failed

如果设置为 true,即使签名验证失败,AutoYaST 也会接受已签名的文件。

<accept_verification_failed config:type="boolean" >true</accept_verification_failed>
accept_unknown_gpg_key

如果设置为 true,AutoYaST 将接受并导入安装源中新的 GPG 密钥到其数据库中,例如用于签名内容文件的密钥。

<accept_unknown_gpg_key config:type="boolean" >true</accept_unknown_gpg_key>
accept_non_trusted_gpg_key

将此选项设置为 true 以接受您尚未信任的已知密钥。

<accept_non_trusted_gpg_key config:type="boolean" >true</accept_non_trusted_gpg_key>
import_gpg_key

如果设置为 true,AutoYaST 将接受并导入安装源上的新 GPG 密钥到其数据库中。

<import_gpg_key config:type="boolean" >true</import_gpg_key>

可以为每个附加产品、模块或扩展单独配置签名处理。以下元素必须位于各个附加产品、模块或扩展的 signature-handling 部分之间。所有设置都是可选的。如果未配置,则使用 general 部分的全局签名处理。

accept_unsigned_file

如果设置为 true,AutoYaST 将接受未签名的文件,例如此附加产品的内容文件。

<accept_unsigned_file config:type="boolean" >true</accept_unsigned_file>
accept_file_without_checksum

如果设置为 true,AutoYaST 将接受内容文件中没有校验和的此附加文件。

<accept_file_without_checksum config:type="boolean" >true</accept_file_without_checksum>
accept_verification_failed

如果设置为 true,即使签名验证失败,AutoYaST 也会接受已签名的文件。

<accept_verification_failed config:type="boolean" >true</accept_verification_failed>
accept_unknown_gpg_key

如果 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

这意味着密钥是已知的,但您不信任它。您可以通过添加以下内容来信任所有密钥

<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>
import_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>

4.9.4 内核软件包 编辑源

内核软件包不属于任何选择。所需的内核在安装过程中确定。如果内核软件包添加到任何选择或单个软件包选择中,安装很可能因冲突而失败。

要强制安装特定内核,请使用 kernel 属性。以下是强制安装默认内核的示例。即使需要 SMP 或其他内核,此内核也将被安装。

示例 4.34: 控制文件中的内核选择
<software>
  <kernel>kernel-default</kernel>
  ...
</software>

4.9.5 删除自动选择的软件包 编辑源

有些软件包是自动选择的,原因可能是依赖关系,也可能是因为它们在某个选择中可用。

删除这些软件包可能会破坏系统的一致性,因此不建议删除基本软件包,除非提供了提供相同服务的替代软件包。最典型的例子是邮件传输代理 (MTA) 软件包。默认情况下,将选择并安装 postfix。要使用另一个 MTA(如 sendmail),可以使用软件资源中的列表从已选择的软件包列表中删除 postfix。但是,请注意 sendmail 不随 openSUSE Leap 一起提供。以下示例展示了如何实现这一点

示例 4.35: 控制文件中的软件包选择
<software>
  <packages config:type="list">
    <package>sendmail</package>
  </packages>
  <remove-packages config:type="list">
    <package>postfix</package>
  </remove-packages>
</software>
Note
注意:软件包删除失败

请注意,无法删除属于某个模式的软件包(请参阅 第 4.9.1 节 “使用模式和软件包部分选择软件包”)。如果指定要删除此类软件包,安装将失败,并显示以下错误消息

The package resolver run failed. Check
      your software section in the AutoYaST profile.

4.9.6 安装推荐的软件包和模式 编辑源

AutoYaST 允许您控制要安装哪些推荐的软件包和模式。有三个选项

  • 安装所有推荐的软件包和模式

  • 仅安装必需的软件包和模式

  • 安装推荐的软件包,忽略推荐的模式

在配置文件中将 install_recommended 标志设置为 true 以安装所有推荐的软件包和模式。

如果您想要最小安装,并且只安装必需的软件包和模式,请将该标志设置为 false

从配置文件中省略该标志,只安装推荐的软件包,并忽略所有推荐的模式。请注意,此标志仅影响全新安装,在升级期间将被忽略。

Note
注意:install_recommended 标志仅影响安装过程

请记住,此标志仅影响安装过程中的软件包解析器,不会更改 /etc/zypp/zypp.conf 中的任何设置。因此,运行系统中的软件包解析不受此 AutoYaST 设置的影响。

<software>
  <install_recommended config:type="boolean">false
  </install_recommended>
</software>

4.9.7 在第二阶段安装软件包 编辑源

要在第二阶段重新启动后安装软件包,可以使用 post-packages 元素进行

<software>
  <post-packages config:type="list">
    <package>yast2-cim</package>
  </post-packages>
</software>

4.9.8 在第二阶段安装模式 编辑源

您还可以在第二阶段安装模式。为此,请使用 post-patterns 元素

<software>
  <post-patterns config:type="list">
    <pattern>apparmor</pattern>
  </post-patterns>
</software>

4.9.9 第二阶段在线更新 编辑源

您可以在安装结束时执行在线更新。将布尔值 do_online_update 设置为 true。当然,这只有在您在 suse-register/customer-center 部分(例如,或在后脚本中)添加在线更新存储库时才有意义。如果在线更新存储库在第一阶段通过附加部分已经可用,那么 AutoYaST 已经安装了可用的最新软件包。如果通过在线更新进行内核更新,则在第二阶段结束时会触发重新启动。

<software>
  <do_online_update config:type="boolean">true</do_online_update>
</software>

4.10 升级 编辑源

AutoYaST 也可用于执行系统升级。除了升级包,还支持以下部分

  • scripts/pre-scripts 在其他操作真正发生之前,非常早地运行用户脚本。

  • add-on 定义附加的附加产品。

  • language 设置语言。

  • timezone 设置时区。

  • keyboard 设置键盘。

  • software 安装额外的软件/模式。删除已安装的软件包。

  • suse_register 运行注册过程。

要控制升级过程,可以定义以下部分

示例 4.36: 升级和备份
  <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>
stop_on_solver_conflict

如果存在软件包依赖性问题,则停止安装。

modified

创建已修改文件的备份。

sysconfig

创建 /etc/sysconfig 目录的备份。

remove_old

删除以前更新的备份。

要启动 AutoYaST 升级模式,您需要

过程 4.1: 在离线升级模式下启动 AutoYaST
  1. 将 AutoYaST 配置文件复制到其文件系统上的 /root/autoupg.xml

  2. 从安装介质启动系统。

  3. 选择 Upgrade 菜单项。

  4. 在命令行中,设置 autoupgrade=1

  5. Enter 键启动升级过程。

过程 4.2: 在在线升级模式下启动 AutoYaST
  1. 从安装介质启动系统。

  2. 选择 Upgrade 菜单项。

  3. 在命令行中,设置 netsetup=dhcp autoupgrade=1 autoyast=http://192.169.3.1/autoyast.xml

    在此处,网络将通过 DHCP 设置。

  4. Enter 键启动升级过程。

4.11 服务和目标 编辑源

通过 services-manager 资源,您可以设置默认的 systemd 目标,并详细指定要启动或停用哪些系统服务,以及如何启动它们。

default-target 属性指定系统引导到的默认 systemd 目标。有效选项为 graphical 用于图形登录,或 multi-user 用于控制台登录。

要指定引导时应启动的服务集,请使用 enabledisable 列表。要启动服务,请将其名称添加到 enable 列表中。要确保服务在引导时未启动,请将其添加到 disable 列表中。

如果未将服务列为已启用或已禁用,则使用默认设置。默认设置可以禁用或启用。

最后,某些服务(例如 cups)支持按需激活(套接字激活服务)。如果您想利用此功能,请将这些服务的名称列在 on_demand 列表中,而不是 enable 中。

示例 4.37: 配置服务和目标
<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>

4.12 网络配置 编辑源

4.12.1 配置工作流 编辑源

网络配置主要用于将单个工作站连接到基于以太网的 LAN。通常在 AutoYaST 启动之前进行配置,以从网络位置获取配置文件。此网络配置通常通过 linuxrc 完成。

Note
注意:linuxrc 程序

有关 linuxrc 的工作原理及其关键字的详细说明,请参阅附录 C,“高级 linuxrc 选项”

默认情况下,YaST 会将安装期间使用的网络设置复制到最终安装的系统中。此配置与 AutoYaST 配置文件中定义的配置合并。

AutoYaST 设置的优先级高于任何现有配置文件。YaST 将根据配置文件中的条目写入 ifcfg-* 文件,而不会删除旧文件。如果 DNS 和路由部分为空或缺失,YaST 将保留任何预先存在的值。否则,它将应用配置文件中的设置。

网络设置和服务激活在 profile networking 全局资源下定义。

4.12.2 网络资源 编辑源

示例 4.38: 网络配置
<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 规则。

此外,还有一些元素允许修改网络配置的应用方式

backend

选择要使用的网络后端。支持的值为 wickednetwork_managernone,后者将禁用网络服务。

<backend>network_manager</backend>
keep_install_network

第 4.12.1 节 “配置工作流”所述,默认情况下,AutoYaST 将运行系统的网络配置与配置文件中定义的配置合并。如果您只想使用配置文件中的配置,请将此元素设置为 false。默认值为 true

<keep_install_network config:type="boolean">false</keep_install_network>
managed

确定是使用 NetworkManager 还是 Wicked。

已弃用。请改用 backend

<managed config:type="boolean">true</managed>
start_immediately

强制 AutoYaST 在写入配置后立即重新启动网络。

<start_immediately config:type="boolean">true</start_immediately>
setup_before_proposal

在安装过程中使用配置文件中定义的网络配置。否则,AutoYaST 依赖于 linuxrc 设置的配置。

<setup_before_proposal config:type="boolean">true</setup_before_proposal>
strict_IP_check_timeout

设置网络后,AutoYaST 会检查分配的 IP 地址是否重复。如果是这种情况,它会显示一个警告,其超时时间(以秒为单位)由此元素控制。如果设置为 0,则安装停止。

<strict_IP_check_timeout config:type="integer">5</strict_IP_check_timeout>
virt_bridge_proposal

选择安装虚拟化软件包(例如 Xen、QEMU 或 KVM)时,AutoYaST 会配置一个网桥。您可以通过将此元素设置为 false 来禁用此行为。

<virt_bridge_proposal config:type="boolean">false</virt_bridge_proposal>
Tip
提示:IPv6 地址支持

AutoYaST 完全支持使用 IPv6 地址。要禁用 IPv6 地址支持,请设置 <ipv6 config:type="boolean">false</ipv6>

4.12.3 接口 编辑源

interfaces 部分允许用户定义接口的配置,包括它们的启动方式、IP 地址、网络等。以下元素必须包含在 <interfaces>...</interfaces> 标签中。

bootproto

接口使用的引导协议。可能的值

  • static 用于静态分配地址。需要使用 ipaddr 元素指定 IP。

  • dhcp4dhcp6dhcp 用于使用 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 地址。

已弃用。请改用带有 prefixlenipaddr

prefixlen

网络前缀,例如:24

仅与 static 引导协议一起使用。

startmode

何时启动接口。可能的值是

  • hotplug 设备插入时。例如,对 USB 网卡很有用。

  • auto 系统启动时。onboot 是一个已弃用的别名。

  • ifplugd 设备由 ifplugd 守护程序管理时。

  • manual 设备应该手动启动时。

  • nfsroot 设备需要挂载根文件系统时,例如,当 / 位于 NFS 卷上时。

  • off 永不启动设备。

ifplugd_priority

ifplugd 守护程序的优先级。它决定了设备的激活顺序。

仅与 ifplugd 启动模式一起使用。

usercontrol

参数不再使用。

已弃用。

bonding_slaveX

绑定设备的名称。

绑定设备必需。X 被一个从 0 开始的数字替换,例如 bonding_slave0。每个端口都需要有一个唯一的数字。

bonding_module_opts

绑定设备的选项。

仅与 bond 设备一起使用。

mtu

接口的最大传输单元。

可选。

ethtool_options

设备激活期间的 Ethtool 选项。

可选。

zone

接口分配到的防火墙区域名称。

可选。

vlan_id

此 VLAN 使用的标识符。

仅与 vlan 设备一起使用。

etherdevice

VLAN 连接到的设备。

仅与 vlan 设备一起使用,并且必需。

bridge

如果接口是网桥,则为 yes

已弃用。它由其他属性推断。

bridge_ports

网桥端口的空格分隔列表,例如 eth0 eth1

仅与 bridge 设备一起使用,并且必需。

bridge_stp

生成树协议。可能的值为 on(启用时)和 off(禁用时)。

仅与 bridge 设备一起使用。

bridge_forward_delay

网桥的转发延迟,例如:15

仅与 bridge 设备一起使用。有效值介于 430 之间。

aliases

附加 IP 地址。请参阅第 4.12.4 节 “分配多个 IP 地址”

示例 4.39: 绑定接口配置
<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>
示例 4.40: 网桥接口配置
<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>

4.12.4 分配多个 IP 地址 编辑源

AutoYaST 允许为同一个接口分配多个 IP 地址。它们使用一个 aliases 元素指定,该元素为每个地址包含一个 aliasX 条目。

每个条目支持以下元素

IPADDR

附加 IP 地址。它可以包含网络前缀,例如:192.168.1.1/24

PREFIXLEN

网络前缀,例如:24

NETMASK

地址的网络掩码。

已弃用。请改用 PREFIXLEN 或在 IPADDR 元素中包含网络前缀。

LABEL

地址的标签。

Note
注意:区分大小写的元素

请记住,出于历史原因,aliases 部分中的 IPADDRPREFIXLENLABELNETMASK 元素是区分大小写的。

示例 4.41: 多个 IP 地址
<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>

4.12.5 网络接口的持久名称 编辑源

net-udev 元素允许指定一组 udev 规则,这些规则可用于为接口分配持久名称。

name

网络接口名称,例如 eth3。(必需。)

rule

ATTR{address} 用于基于 MAC 的规则,KERNELS 用于基于总线 ID 的规则。(必需。)

value

例如:MAC 规则为 f0:de:f1:6b:da:69,总线 ID 规则为 0000:00:1c.1 或 0.0.0700。(必需。)

Tip
提示:处理设备名称中的冲突

创建不完整的 udev 规则集时,选择的设备名称可能与现有设备名称发生冲突。例如,当将网络接口重命名为 eth0 时,可能会与内核自动生成的设备发生冲突。AutoYaST 尝试以最佳方式处理此类情况,并重命名冲突的设备。

示例 4.42: 使用 MAC 地址分配持久名称
<net-udev config:type="list">
  <rule>
  <name>eth1</name>
  <rule>ATTR{address}</rule>
  <value>52:54:00:68:54:fb</value>
  </rule>
</net-udev>

4.12.6 域名系统 编辑源

dns 部分用于定义名称服务相关设置,例如主机名或名称服务器。

hostname

主机名,不包括域名部分。例如:foo 而不是 foo.bar。Linux 内核允许您使用完全限定域名 (FQDN) 代替主机名,YaST 也是如此。但是,这在 YaST 的 dns 部分中不是正确的用法。解析器应该确定 FQDN。(有关 FQDN 如何解析的信息,请参阅 man 1 hostname 的“THE FQDN”部分。)

如果未指定主机名且未从 DHCP 服务器获取主机名(请参阅 dhcp_hostname),AutoYaST 将生成一个随机主机名。

nameservers

名称服务器列表。示例

<nameservers config:type="list">
  <nameserver>192.168.1.116</nameserver>
  <nameserver>192.168.1.117</nameserver>
</nameservers>
searchlist

主机名查找的搜索列表。

<searchlist config:type="list">
  <search>example.com</search>
</searchlist>

可选。

dhcp_hostname

指定主机名是否必须从 DHCP 获取。

<dhcp_hostname config:type="boolean">true</dhcp_hostname>

4.12.7 路由 编辑源

routing 表允许指定路由列表和 IPv4 和 IPv6 的数据包转发设置。

ipv4_forward

可选:是否应为 IPv4 启用 IP 转发。

ipv6_forward

可选:是否应为 IPv6 启用 IP 转发。

routes

可选:路由列表。

以下设置描述了如何定义路由。

destination

必需:路由目标。可以指定地址前缀,例如:192.168.122.0/24

标题 default 可用于指示路由是与网关相同地址族(IPv4 或 IPv6)中的默认网关。

device

必需:与路由关联的接口。

gateway

可选:网关的 IP 地址。

netmask

(已弃用。)目标网络掩码。

建议将前缀指定为 destination 值的一部分。

extrapara

可选:其他路由选项,如 metricmtutable

示例 4.43: 网络路由配置
<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>

4.12.8 s390 选项 编辑源

以下元素必须位于 <s390-devices>... </s390-devices> 标签之间。

类型

qethctciucv

chanids

通道 ID,用冒号(首选)或空格分隔

<chanids>0.0.0700:0.0.0701:0.0.0702</chanids>
layer2
<layer2 config:type="boolean">true</layer2>

布尔值;默认值:false

protocol

可选:CTC / LCS 协议,一个小数(作为字符串)

<protocol>1</protocol>
router

IUCV 路由器/用户

除了上述选项外,AutoYaST 还支持配置文件的其他部分中的 IBM Z 特定选项。特别是,您可以定义逻辑链路地址或 LLADDR(在以太网的情况下,即 MAC 地址)。为此,请在设备定义中使用 LLADDR 选项。

Tip
提示:VLAN 的 LLADDR

VLAN 设备从底层物理设备继承其 LLADDR。要为 VLAN 设备设置特定地址,请为底层物理设备设置 LLADDR 选项。

4.13 代理 编辑源

配置您的 Internet 代理(缓存)设置。

分别使用 http_proxyhttps_proxyftp_proxy 配置 HTTP、HTTPS 和 FTP 的代理。应该直接访问的地址或名称需要使用 no_proxy 指定(空格分隔值)。如果您使用带有授权的代理服务器,请填写 proxy_userproxy_password

示例 4.44: 网络配置:代理
<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>
Note
注意

当网络配置在提案之前强制写入时,或者当代理设置通过 linuxrc 提供时,代理设置将在安装期间写入。

4.14 NIS 客户端和服务器 编辑源

使用 nis 资源,您可以将目标机器配置为 NIS 客户端。以下示例展示了使用多个域的详细配置。

示例 4.45: 网络配置: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>

4.15 NIS 服务器 编辑源

您可以将目标机器配置为 NIS 服务器。提供 NIS 主服务器、NIS 工作服务器以及两者的组合。

示例 4.46: 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

4.16 主机定义 编辑源

使用 host 资源,您可以向 /etc/hosts 文件添加更多条目。现有条目不会被删除。以下示例显示了详细信息。

示例 4.47: /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>

4.17 Windows 域成员资格 编辑源

使用 samba-client 资源,您可以配置工作组、NT 域或 Active Directory 域的成员资格。

示例 4.48: Samba 客户端配置
  <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

4.18 Samba 服务器 编辑源

简单 Samba 服务器的配置。

示例 4.49: 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>
属性、值、描述
accounts

Samba 帐户列表。

backend

可用后端列表。

值:true/false

config

/etc/samba/smb.conf 中设置额外的用户定义参数。

示例显示了 /etc/samba/smb.confglobal 部分中的参数。

service

Samba 服务在引导期间启动。

值:Enabled/Disabled

trustdom/

信任域。

一个由两个映射组成的映射(键:establish, revoke)。每个映射包含格式为 key: domainname value: password 的条目。

version

Samba 版本。

默认值:2.11。

4.19 身份验证客户端 编辑源

配置文件必须是 JSON 格式。验证 autoyast2autoyast2-installation 都已安装。使用 YaST 中的 Autoinstallation Configuration 模块生成有效的 JSON 配置文件。启动 YaST 并切换到 MiscellaneousAutoinstallation Configuration。选择 Network ServicesUser Logon Management,单击 Edit,并配置可用设置。完成后单击 OK。要保存生成的配置文件,请使用 FileSave

Tip
提示:使用 ldaps://

要将 LDAP 与原生 SSL(而不是 TLS)一起使用,请添加 ldaps 资源。

4.20 NFS 客户端和服务器 编辑源

可以使用配置系统将系统配置为 NFS 客户端或 NFS 服务器。以下示例展示了如何配置 NFS 客户端和服务器。

openSUSE Leap 15.6 开始,NFS 客户端配置的结构发生了变化。引入了一些全局配置选项:enable_nfs4 用于打开/关闭 NFS4 支持,以及 idmapd_domain 用于定义 rpc.idmapd 的域名(这仅在启用 NFS4 时有意义)。注意:旧结构与新结构不兼容,在旧版本上创建的带有 NFS 部分的控制文件将无法与新产品一起使用。

有关如何将 openSUSE Leap 安装到 NFS 共享上的更多信息,请参阅第 4.5.10 节 “NFS 配置”

示例 4.50: 网络配置: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>
示例 4.51: 网络配置: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>

4.21 NTP 客户端 编辑源

Important
重要:NTP 客户端配置文件不兼容

openSUSE Leap 15 开始,NTP 客户端配置文件具有新格式,并且兼容以前的配置文件。您需要更新以前 openSUSE Leap 版本中使用的 NTP 客户端配置文件,以使其与版本 15 及更高版本兼容。

以下是 NTP 客户端配置的示例

示例 4.52: 网络配置: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>

1

ntp_policy 采用与 /etc/sysconfig/network/config 中的 NETCONFIG_NTP_POLICY 选项相同的值。最常见的选项是“static”和“auto”(默认)。有关更多详细信息,请参阅 man 8 netconfig

2

时间服务器或时间服务器池的 URL。

3

iburstchronyd 启动后,加快特定时间源的初始时间同步。

4

offline 选项设置为 true 时,如果 chronyd 启动时时间服务器不可用,它将阻止客户端轮询时间服务器。轮询将不会恢复,直到使用 chronyc online 手动启动。此命令在重新启动后不会保留。将其设置为 false 可确保客户端始终尝试联系时间服务器,无需管理员干预。

5

对于 ntp_sync,在运行 NTP 守护程序时输入“systemd”(默认),输入以秒为单位的整数间隔以使用 cron 同步,或输入“manual”表示不自动同步。

以下示例演示了 IPv6 配置。您可以使用服务器的 IP 地址、主机名或两者

<ntp-server>
  <address>2001:418:3ff::1:53</address>
</ntp-server>

<ntp-server>
  <address>2.pool.ntp.org</address>
</ntp-server>

4.22 邮件服务器配置 编辑源

对于客户端的邮件配置,此模块允许您创建详细的邮件配置。该模块包含各种选项。我们建议您至少将其用于初始配置。

示例 4.53: 邮件配置
<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>

4.23 Apache HTTP 服务器配置 编辑源

本节用于配置 Apache HTTP 服务器。

对于经验不足的用户,我们建议使用 HTTP server YaST 模块配置 Apache 服务器。之后,调用 AutoYaST configuration 模块,选择 HTTP server YaST 模块并克隆 Apache 设置。这些设置可以通过 File 菜单导出。

示例 4.54: HTTP 服务器配置
  <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

主机 Listen 设置列表

PORT

端口地址

ADDRESS

网络地址。如果此条目为空,则将获取所有地址。

hosts

主机配置列表

KEY

主机名;<KEY>main</KEY> 定义主主机,例如 <KEY>192.168.43.2/secondserver.suse.de</KEY>

VALUE

描述主机的不同值的列表。

modules

模块列表。只需要描述用户定义的模块。

name

模块名称

userdefined

出于历史原因,它始终设置为 true

change

出于历史原因,它始终设置为 enable

元素、描述、注释
version

使用的 Apache 服务器版本

仅供参考。默认值 2.9

service

启用 Apache 服务

可选。默认值:false

Note
注意:防火墙

要正确运行 Apache 服务器,请确保防火墙配置得当。

4.24 Squid 服务器 编辑源

Squid 是一个缓存和转发的 Web 代理。

示例 4.55: Squid 服务器配置
  <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

4.25 FTP 服务器 编辑源

配置您的 FTP Internet 服务器设置。

示例 4.56: FTP 服务器配置:
  <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

StartDaemon

FTP 守护进程将如何启动。

手动:0;启动时:1;通过 systemd 套接字:2

TLS

如果启用,则允许 TLS 连接。

值:YES/NO

Umask

文件创建掩码,格式为(文件掩码):(目录掩码)。

例如,如果您感到偏执,则为 177:077

UmaskAnon

为匿名用户设置的文件创建掩码值。

要指定八进制值,请记住“0”前缀,否则该值将被视为十进制整数。

UmaskLocal

已验证用户的 Umask。

要指定八进制值,请记住“0”前缀,否则该值将被视为十进制整数。

VerboseLogging

启用时,所有 FTP 请求和响应都会被记录。

值:YES/NO

VirtualUser

通过使用虚拟用户,可以管理 FTP 帐户而不会影响系统帐户。

值:YES/NO

Note
注意:防火墙

FTP 服务器要正常运行,需要适当的防火墙设置。

4.26 TFTP 服务器 编辑源

配置您的 TFTP Internet 服务器设置。

使用此选项启用 TFTP(普通文件传输协议)服务器。服务器将使用 systemd 套接字启动。

请注意,TFTP 和 FTP 不同。

示例 4.57: TFTP 服务器配置:
  <tftp-server>
    <start_tftpd config:type="boolean">true</start_tftpd>
    <tftp_directory>/tftpboot</tftp_directory>
  </tftp-server>
start_tftpd

启用 TFTP 服务器服务。值:true/ false

tftp_directory

引导镜像目录:指定提供文件的目录。

通常值为 /tftpboot。如果目录不存在,将创建它。服务器将此目录用作其根目录(使用 -s 选项)。

4.27 首次启动工作流 编辑源

YaST 首次启动实用程序(YaST 初始系统配置)在安装完成后运行,可让您配置新安装的系统。在安装后的首次启动时,用户将通过一系列步骤进行指导,从而更轻松地配置系统。YaST 首次启动默认不运行,需要进行配置才能运行。

示例 4.58: 启用首次启动工作流
      <firstboot>
        <firstboot_enabled config:type="boolean">true</firstboot_enabled>
      </firstboot>

4.28 安全设置 编辑源

使用此模块的功能,您可以更改目标系统上的本地安全设置。本地安全设置包括引导配置、登录设置、密码设置、用户添加设置和文件权限。

自动配置安全设置类似于运行系统中可用的安全模块中的 Custom Settings。这允许您创建自定义配置。

示例 4.59: 安全配置

有关以下示例中设置的含义和可能值,请参阅参考。

<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>

4.28.1 密码设置选项 编辑源

使用 <pass_* 资源更改各种密码设置,例如最小密码长度、密码过期等。

使用 <encryption> 资源激活当前支持的加密方法之一。如果未设置,则配置 sha512

您可以使用以下加密方法之一

  • md5 — 允许使用 128 位哈希值的更长密码

  • sha256sha512 — 广泛使用的安全哈希算法

  • des — 由于安全性不足,我们不建议使用此加密方法

4.28.2 引导设置 编辑源

使用安全资源更改各种引导设置。

如何解释 CtrlAltDel

当控制台上的某人按下 CtrlAltDel 组合键时,系统通常会重新启动。有时,忽略此事件是可取的,例如,当系统既用作工作站又用作服务器时。

GDM 的关机行为

配置允许从 GDM 关闭机器的用户列表。

4.28.3 登录设置 编辑源

更改各种登录设置。这些设置主要存储在 /etc/login.defs 文件中。

4.28.4 新用户设置(useradd 设置) 编辑源

设置最小和最大可能的 UID 和 GID。

4.28.5 Linux 安全模块 (LSM) 设置 编辑源

openSUSE Leap 15.4 及更高版本中,安装控制文件新增了一个选项 <lsm_select>,用于配置安装后默认激活哪个主要的 Linux 安全模块 (LSM):AppArmor、SELinux 或无。

selinux_mode

可选。配置 SELinux 模式。值包括:permissiveenforcingdisabled

lsm_select

可选。安装期间要选择的主要 Linux 安全模块。值包括:selinuxapparmornone

4.28.6 使用 OpenSCAP 安全策略 编辑源

YaST 允许使用 OpenSCAP 安全策略进行系统加固。检查和应用安全策略分两个阶段进行

  • 在安装时,YaST 会检查安全策略规则的子集,特别是那些在安装后难以修复的规则,例如加密文件系统。如果配置文件中描述的系统不符合这些规则中的任何一条,AutoYaST 将报告问题并中止安装。

  • 此外,AutoYaST 会安装并配置 ssg-apply 工具。在首次启动期间,可以运行 ssg-apply 来扫描系统,并可选地修复系统以符合所选策略。

security_policy 部分选择安全策略并配置 ssg-apply

policy

选择要检查或应用的安全策略。目前,仅支持 国防信息系统局 安全技术实施指南 (DISA STIG)。使用名称 stig 指代此策略。此元素是强制性的。

action

指定 ssg-apply 在首次启动期间应执行的操作。

  • scan:在首次启动期间扫描系统。这是默认行为。

  • remediate:扫描并修复系统以符合所选策略。

  • none:配置但不在首次启动期间运行 ssg-apply。如果您想在加固系统之前修改策略,此选项很有用。

示例 4.60:选择 国防信息系统局 安全技术实施指南

以下摘录指示 AutoYaST 检查 DISA STIG 策略并在首次启动期间修复系统。

<security>
  <security_policy>
    <policy>stig</policy>
    <action>remediate</action>
  </security_policy>
</security>

4.29 Linux 审计框架 (LAF) 编辑源

此模块允许配置审计守护程序并为审计子系统添加规则。

示例 4.61:LAF 配置
  <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 使用完全限定域名。

rules

auditctl 的规则

您可以手动编辑规则,我们只建议高级用户这样做。有关所有选项的更多信息,请参阅 man auditctl

4.30 用户和组 编辑源

4.30.1 用户 编辑源

可以在 <users> 部分定义用户列表。为了能够登录,请确保设置了 root 用户或将 rootpassword 指定为 linuxrc 选项。

示例 4.62:最小用户配置
<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 或主目录的父目录。

示例 4.63:复杂用户配置
<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>
Note
注意:authorized_keys 文件将被覆盖

如果配置文件在 authorized_keys 部分为用户定义了一组 SSH 授权密钥,则现有的 $HOME/.ssh/authorized_keys 文件将被覆盖。如果不存在,则将创建文件并包含指定内容。通过不在 AutoYaST 控制文件中指定相应部分来避免覆盖现有的 authorized_keys 文件。

Note
注意:结合使用 rootpassword 和 root 用户选项

可以在 linuxrc 中指定 rootpassword,并为 root 用户设置一个用户部分。如果此部分缺少密码,则将使用 linuxrc 中的密码。配置文件中的密码优先于 linuxrc 密码。

Warning
警告:不要创建名称不是 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 登录”

Note
注意:指定用户 ID (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 的授权密钥列表。请参见下面的示例。

4.30.2 用户默认设置 编辑源

配置文件可以为新用户指定一组默认值,例如密码过期、初始组、主目录前缀等。除了将它们用作配置文件中定义的用户的默认值之外,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 useraddman 1 umask

4.30.3 编辑源

可以在 <groups> 中定义组列表,如示例所示。

示例 4.64:组配置
<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>

可选。属于该组的用户列表。用户名必须用逗号分隔。

4.30.4 登录设置 编辑源

可以通过 AutoYaST 配置文件启用两个特殊的登录设置:自动登录和无密码登录。两者都默认禁用。

示例 4.65:启用自动登录和无密码登录
<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>

可选。为给定用户启用自动登录。

4.31 自定义用户脚本 编辑源

通过将脚本添加到自动安装过程,您可以根据自己的需求自定义安装,并在安装的不同阶段进行控制。

在自动安装过程中,可以在安装的不同时间点执行五种类型的脚本

所有脚本都需要放在 <scripts> 部分。

  • pre-scripts(非常早,在其他任何事情真正发生之前)

  • postpartitioning-scripts(分区并挂载到 /mnt 之后,但在 RPM 安装之前)

  • chroot-scripts(软件包安装后,首次启动前)

  • post-scripts(已安装系统首次启动期间,没有服务运行)

  • init-scripts(已安装系统首次启动期间,所有服务都已启动并运行)

4.31.1 前置脚本 编辑源

在 YaST 对系统进行任何实际更改之前(在分区和软件包安装之前,但在硬件检测之后)执行。

您可以使用前置脚本修改控制文件并让 AutoYaST 重新读取它。在 /tmp/profile/autoinst.xml 中找到您的控制文件。调整文件并将修改后的版本存储在 /tmp/profile/modified.xml 中。AutoYaST 将在前置脚本完成后读取修改后的文件。

还可以在前置脚本中修改存储设备。例如,您可以创建新分区或更改多路径等某些技术的配置。AutoYaST 始终在执行所有前置脚本后再次检查存储设备。

Note
注意:带有确认的前置脚本

前置脚本在安装的早期阶段执行。这意味着如果您已请求确认安装,则这些脚本将在确认屏幕显示之前执行(profile/install/general/mode/confirm)。

Note
注意:前置脚本和 Zypper

要在前置脚本中调用 Zypper,您需要设置环境变量 ZYPP_LOCKFILE_ROOT="/var/run/autoyast" 以防止与正在运行的 YaST 进程发生冲突。

pre-script 元素必须按如下方式放置

<scripts>
  <pre-scripts config:type="list">
    <script>
      ...
    </script>
  </pre-scripts>
</scripts>

4.31.2 分区后脚本 编辑源

在 YaST 完成分区并写入 /etc/fstab 后执行。空系统已挂载到 /mnt

postpartitioning-script 元素必须按如下方式放置

<scripts>
  <postpartitioning-scripts config:type="list">
    <script>
      ...
    </script>
  </postpartitioning-scripts>
</scripts>

4.31.3 Chroot 环境脚本 编辑源

Chroot 脚本在机器首次重启之前执行。您可以在安装 chroot 到已安装系统并配置引导加载程序之前执行 chroot 脚本,或者您可以在 chroot 到已安装系统之后执行脚本(为此请查看 chrooted 参数)。

chroot-scripts 元素必须按如下方式放置

<scripts>
  <chroot-scripts config:type="list">
    <script>
      ...
    </script>
  </chroot-scripts>
</scripts>

4.31.4 后置脚本 编辑源

这些脚本在 AutoYaST 完成系统配置并在首次启动系统后执行。

post-script 元素必须按如下方式放置

<scripts>
    <post-scripts config:type="list">
      <script>
        ...
      </script>
    </post-scripts>
  </scripts>

4.31.5 Init 脚本 编辑源

这些脚本在 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 表示与其他脚本类型不同。

Init 脚本 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 元素中,以避免与文件语法和控制文件中定义的其他标签混淆。

4.31.6 脚本 XML 表示 编辑源

下面描述的大多数 XML 元素都可以用于上述所有脚本类型,除了 init 脚本,它们的定义只能包含这些元素的一个子集。有关它们的更多信息,请参阅 第 4.31.5 节,“Init 脚本”

Important
重要:已弃用元素

debug 是一个已弃用元素,可能会在未来的版本中删除。为了适应,请在 interpreter 中使用特定于解释器的调试参数。例如,使用 <interpreter>/bin/sh -x</interpreter> 而不是 <interpreter>shell</interpreter> 以获得与启用 debug 标志相同的结果。

脚本 XML 表示
位置

定义脚本的获取位置。位置可以与控制文件相同(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>

必须定义 locationsource

source

脚本本身(源代码),封装在 CDATA 标签中。如果您不想将整个 shell 脚本放入 XML 控制文件,请参阅 location 参数。

<source>
<![CDATA[
echo "Testing the pre script" > /tmp/pre-script_out.txt
]]>
</source>

必须定义 locationsource

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

这可以是 messagewarningerror。在 <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 环境脚本。

4.31.7 脚本示例 编辑源

示例 4.66:脚本配置
<?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 选项。

4.32 系统变量 (sysconfig) 编辑源

使用 sysconfig 资源,可以直接在 sysconfig 存储库 (/etc/sysconfig) 中定义配置变量。Sysconfig 变量提供了根据您的需求精确调整许多系统组件和环境变量的可能性。

以下示例展示了如何使用 sysconfig 资源设置变量。

示例 4.67: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 文件。

4.33 添加完整配置 编辑源

对于许多应用程序和服务,您可能有一个配置文件,应该将其复制到已安装系统上的适当位置。例如,如果您正在安装 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 来创建目录。

示例 4.68:将文件转储到已安装系统
<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 中提供的内容创建文件,并更改文件的权限和所有权。文件复制到系统后,将执行一个脚本。这可用于修改文件并为客户端环境准备它。

示例 4.69:将文件转储到已安装系统
<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>

4.34 安装期间向用户询问值 编辑源

您可以选择在安装期间让用户决定控制文件中特定部分的值。如果您使用此功能,安装期间将弹出一个窗口,要求用户输入控制文件的特定部分。如果您想要完全自动安装,但用户应该设置本地帐户的密码,您可以通过控制文件中的 ask 指令来完成此操作。

下面列出的元素必须放置在以下 XML 结构中

<general>
  <ask-list config:type="list">
    <ask>
      ...
    </ask>
  </ask-list>
</general>
向用户询问值:XML 表示
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>

可选。

类型

您要更改的元素的类型。可能的值为 symbolbooleanstringinteger。分区部分中的文件系统是一个 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

pathlist

path 元素列表。路径是以逗号分隔的元素列表,描述了您要更改的元素的路径。例如,网络配置元素可以在控制文件的 <networking> 部分中找到。因此,要更改该值,您需要将路径设置为 networking

<pathlist config:type="list">
  <path>networking,dns,hostname</path>
  <path>...</path>
</pathlist>

要更改控制文件中第一个用户的密码,您需要将路径设置为 users,0,user_password0 表示配置部分中的第一项。例如,在下面提到的 <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>

此信息是可选的,但您至少应该提供 pathfile

file

您可以将问题的答案存储在文件中,以便稍后在您的某个脚本中使用。如果您在 stage=initial 期间询问,并且您想在 stage 2 中使用答案,则需要在一个作为 chrooted=false 运行的 chroot 脚本中复制答案文件。使用命令:cp /tmp/my_answer /mnt/tmp/。原因是 stage 1 中的 /tmp 在 RAM 磁盘中,并在重启后丢失,但已安装的系统已挂载在 /mnt/

<file>/tmp/answer_hostname</file>

此信息是可选的,但您至少应该提供 pathfile

stage

Stage 配置了问题弹出的安装阶段。您可以将此值设置为 continitialinitial 意味着弹出窗口在安装的早期阶段出现,在前置脚本运行后不久。cont 意味着,带有问题的对话框在首次重启后,当系统首次启动时出现。您在 initial 阶段回答的问题会将答案写入硬盘上的控制文件。如果您在 initial 期间输入明文密码,则应注意这一点。当然,在 cont 阶段询问要使用的文件系统是没有意义的。在该阶段硬盘已分区,并且该问题将无效。

<stage>cont</stage>

可选。默认值为 initial

selection

selection 元素包含 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>

可选;默认无脚本。

4.34.1 默认值脚本 编辑源

您可以运行脚本来设置问题的默认值。如果您可以计算默认值,此功能特别有用,尤其是在结合 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”)。

4.34.2 脚本 编辑源

您可以在回答问题后运行脚本。

下面列出的元素必须放置在以下 XML 结构中

<general>
  <ask-list config:type="list">
    <ask>
      <script>
        ...
      </script>
    </ask>
  </ask-list>
</general>

除了 第 4.31.6 节,“脚本 XML 表示” 中列出的元素外,<ask> 元素中的脚本还支持以下选项

脚本:XML 表示
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>

4.35 内核转储 编辑源

Note
注意:可用性

此功能仅适用于 S/390 架构。

通过 Kdump,如果整个内核崩溃,系统可以创建崩溃转储文件。崩溃转储文件包含系统崩溃时的内存内容。此类核心文件可以稍后由支持人员或(内核)开发人员分析,以找到系统崩溃的原因。Kdump 对于服务器最有用,因为您无法轻易重现此类崩溃,但修复问题很重要。

这也有一个缺点。启用 Kdump 需要额外保留 64 MB 到 128 MB 的系统 RAM 用于 Kdump,以防系统崩溃并需要生成转储。

本节仅描述如何使用 AutoYaST 设置 Kdump。它不描述 Kdump 的工作原理。有关详细信息,请参阅 kdump(7) 手册页。

以下示例显示了 Kdump 的通用配置。

示例 4.70: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 默认启用。以下配置显示了如何禁用它。

示例 4.71:禁用的 Kdump 配置
<kdump>
  <add_crash_kernel config:type="boolean">false</add_crash_kernel>
</kdump>

4.35.1 内存预留 编辑源

第一步是在启动时为 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,low256M,high 之类的值

示例 4.72:具有多个值的 Kdump 内存预留
<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>

以下列表显示了预留内存所需的设置

Kdump 内存预留设置:XML 表示
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

4.35.2 转储保存 编辑源

本节描述崩溃转储的存储位置和方式。

4.35.2.1 目标 编辑源

元素 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 中指定的值,则不保存转储。

4.35.2.2 过滤和压缩 编辑源

内核转储未压缩和未过滤。它可能与您的系统 RAM 一样大。要获得更小的文件,请在之后压缩转储文件。转储在打开之前需要解压缩。

要使用页面压缩,该压缩会压缩每个页面并允许使用 crash(8) 调试工具进行动态解压缩,请将 KDUMP_DUMPFORMAT 设置为 compressed(默认)。

您可能不想保存所有内存页面,例如那些用零填充的页面。要过滤转储,请设置 KDUMP_DUMPLEVEL。0 生成完整转储,31 是最小转储。手册页 kdump(5) 和 makedumpfile(8) 列出了每个值将保存哪些页面。

4.35.2.3 摘要 编辑源

转储目标设置:XML 表示
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

4.35.3 电子邮件通知 编辑源

配置电子邮件通知,以便在机器崩溃并保存转储时收到通知。

由于 Kdump 在 initrd 中运行,本地邮件服务器无法发送通知电子邮件。需要指定一个 SMTP 服务器(请参阅下文)。

您需要在 KDUMP_NOTIFICATION_TO 中提供一个且仅一个地址。可以在 KDUMP_NOTIFICATION_CC 中指定更多地址。在两种情况下都只使用电子邮件地址,而不是真实姓名。

指定 KDUMP_SMTP_SERVER 和(如果服务器需要身份验证)KDUMP_SMTP_USERKDUMP_SMTP_PASSWORD。目前不支持 TLS/SSL,但将来可能会添加。

电子邮件通知设置:XML 表示
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_USERKDUMP_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

4.35.4 Kdump 内核设置 编辑源

如前所述,会启动一个特殊内核来保存转储。如果您不想使用自动检测机制来找出使用哪个内核(请参阅 kdump(5) 手册页,其中描述了用于查找内核的算法),您可以在 KDUMP_KERNELVER 中指定自定义内核的版本。如果将其设置为 foo,则将使用位于 /boot/vmlinuz-foo/boot/vmlinux-foo(在具有 vmlinuz 文件的平台上按此顺序)的内核。

您可以指定用于启动 Kdump 内核的命令行。通常使用引导命令行,减去与 Kdump 不相关的设置(如 crashkernel 参数),加上 Kdump 需要的一些设置(请参阅 kdump(5) 手册页)。要指定其他参数,请使用 KDUMP_COMMANDLINE_APPEND。如果您知道自己在做什么并且想要指定整个命令行,请设置 KDUMP_COMMANDLINE

内核设置:XML 表示
KDUMP_KERNELVER

用于 Kdump 的内核版本字符串。留空以使用自动检测机制(强烈推荐)。

<KDUMP_KERNELVER
>6.4.0-default</KDUMP_KERNELVER>

可选(如果为空则自动检测)

KDUMP_COMMANDLINE_APPEND

Kdump 内核的附加命令行参数。

<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

4.35.5 专家设置 编辑源

专家设置:XML 表示
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

4.36 DNS 服务器 编辑源

Bind DNS 服务器可以通过添加 dns-server 资源进行配置。该资源的三个更直接的属性可以具有 1 的值以启用它们,或 0 以禁用它们。

属性

描述

chroot

0 / 1

DNS 服务器必须在 chroot 中进行监狱。

start_service

0 / 1

Bind 已启用(在系统启动时执行)。

use_ldap

0 / 1

将设置存储在 LDAP 中而不是本机配置文件中。

示例 4.73:基本 DNS 服务器设置
<dns-server>
  <chroot>0</chroot>
  <start_service>1</start_service>
  <use_ldap>0</use_ldap>
</dns-server>

除了这些基本设置之外,还有三个列表类型的属性可用于微调服务配置。

列表

描述

logging

DNS 服务器日志记录选项。

options

Bind 选项,例如要使用的文件和目录、转发器列表以及其他配置设置。

zones

服务器已知的所有 DNS 区域列表,包括所有设置、记录和 SOA 记录。

示例 4.74:配置 DNS 服务器区域和高级设置
<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>

4.37 DHCP 服务器 编辑源

dhcp-server 资源可以通过以下六个属性来配置 DHCP 服务器的所有设置。

元素

描述

chroot

0 / 1

值为 1 表示 DHCP 服务器必须在 chroot 中进行监狱。

start_service

0 / 1

将其设置为 1 以启用 DHCP 服务器(即,在系统启动时运行它)。

use_ldap

0 / 1

如果设置为 1,则设置将存储在 LDAP 中而不是本机配置文件中。

other_options

文本

字符串,包含启动时将传递给 DHCP 服务器可执行文件的参数。例如,使用 "-p 1234" 在非标准 1234 端口上监听。有关所有可能选项,请查阅 dhcpd 手册页。如果留空,将使用默认值。

allowed_interfaces

列表

DHCP 服务器将运行的网络卡列表。有关确切格式,请参见下面的示例。

settings

列表

用于配置 DHCP 服务器行为的设置列表。配置以树状结构定义,其中根表示全局选项,子网和主机嵌套于其下。childrenparent_idparent_type 属性用于表示这种嵌套。有关确切格式,请参见下面的示例。

示例 4.75:dhcp-server 部分示例
<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>

4.38 防火墙配置 编辑源

openSUSE Leap 15.0 开始,SuSEfirewall2 已被 firewalld 取代。使用 SuSEfirewall2 属性的配置文件将被转换为 firewalld 配置文件。但是,并非所有配置文件属性都可以转换。

Important
重要:对基于 SuSEFirewall2 的配置文件的有限向后兼容性

对基于 SuSEfirewall2 的配置文件的支持将是部分支持,因为许多选项在 firewalld 中无效,并且一些缺失的配置可能会影响您的网络安全。

4.38.1 通用防火墙配置 编辑源

firewalld 中,通用配置只公开了几个属性,大部分配置是通过区域完成的。

属性

描述

start_firewall

布尔值

firewalld 是否应在应用配置后立即启动。

enable_firewall

布尔值

firewalld 是否应在每次系统启动时启动。

default_zone

区域名称

默认区域用于所有未明确分配的内容。

log_denied_packets

要记录的丢弃数据包类型

为选定的类型启用丢弃数据包的日志记录。值:offunicastmulticastbroadcastall

name

区域标识符

用于标识区域。如果该区域尚不为人所知,则将创建一个新区域。

short

区域简要摘要

简要总结区域的目的。对于已存在的区域,此项将被忽略。如果未指定,则使用名称。

description

区域描述

描述区域的目的。对于已存在的区域,此项将被忽略。如果未指定,则使用名称。

target

默认操作

定义区域中没有规则匹配时的默认操作。可能的值是 ACCEPT%%REJECT%%DROPdefault。如果未指定,则使用 default。有关值的详细信息,请参阅 https://firewalld.org/documentation/zone/options.html

4.38.2 防火墙区域配置 编辑源

firewalld 的配置基于多个区域的存在,这些区域定义了连接、接口或源地址的信任级别。每个区域的行为可以通过多种方式进行调整,尽管并非所有属性都已公开。

属性

描述

interfaces

接口名称列表

分配给此区域的接口名称列表。接口或源只能属于一个区域。

services

服务列表

此区域中可访问的服务列表。

ports

端口列表

要在指定区域中打开的单个端口或端口范围列表。

protocols

协议列表

要在指定区域中打开或可访问的协议列表。

网络地址转换 (masquerade)

启用网络地址转换

它将启用或禁用指定区域中的网络地址转换 (NAT)。

4.38.3 firewalld 配置文件应用时的安装阶段 编辑源

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,并结合需要网络访问的自定义脚本。防火墙根据配置文件或产品建议在第一阶段配置,并且必须调整防火墙配置,以便自定义脚本根据需要具有网络访问权限。

4.38.4 完整示例 编辑源

防火墙部分(包括常规属性和区域特定属性)的完整示例如下所示。

示例 4.76:防火墙示例部分
<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>

4.39 杂项硬件和系统组件 编辑源

除了核心组件配置(如网络身份验证和安全性)之外,AutoYaST 还提供了各种硬件和系统配置选项,这些选项与任何手动和交互式安装的系统上默认可用的选项相同。例如,可以配置打印机、声卡、电视卡以及任何其他在 YaST 中具有模块的硬件组件。

添加到 YaST 的任何新配置选项都将自动在 AutoYaST 中可用。

4.39.1 打印机 编辑源

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 是否应运行。

示例 4.77:打印机配置
  <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>
Note
注意:/etc/cups/cups-files.conf

在 1.6 版本中,CUPS 配置文件已分为两个文件:cupsd.confcups-files.conf。从 openSUSE Leap 15.6 开始,AutoYaST 仅支持修改 cupsd.conf,因为 cups-files.conf 中的默认设置足以满足常见的打印设置。

4.39.2 声音设备 编辑源

下面显示了使用配置系统创建的声音配置示例。

示例 4.78:声音配置
<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>

4.40 导入 SSH 密钥和配置 编辑源

YaST 允许从以前的安装中导入 SSH 密钥和服务器配置。此功能的行为也可以通过 AutoYaST 配置文件进行控制。

示例 4.79:从 /dev/sda2 导入 SSH 密钥和配置
<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 密钥将被导入。如果设置为 false,则不会导入任何内容。

复制配置

true / false

此外,还将导入 SSH 服务器配置。如果将 import 设置为 false,此设置将不起作用。

device

分区

要从中导入密钥和配置的分区。如果未设置,则使用包含最近访问的密钥的分区。

4.41 配置管理 编辑源

AutoYaST 允许将部分配置委派给配置管理工具,例如 Salt。AutoYaST 负责基本系统安装(分区、网络设置等),其余配置任务可以委派。

Note
注意:仅支持 Salt

虽然本文档中提到了 Puppet,但目前仅支持 Salt。尽管如此,如果您发现 Puppet 的任何问题,请随时报告。

AutoYaST 支持两种不同的方法

  • 使用配置管理服务器。在这种情况下,AutoYaST 会设置一个配置管理工具。它连接到主服务器以获取配置系统的指令。

  • 从其他地方(例如,HTTP 服务器或 USB 闪存盘)获取配置,并以独立模式运行配置管理工具。

4.41.1 连接到配置管理服务器 编辑源

当配置管理服务器(Salt 和 Puppet 术语中的主服务器)已就位时,此方法特别有用。在这种情况下,最困难的部分可能是设置适当的身份验证机制。

Salt 和 Puppet 都支持以下身份验证方法

  • 即时手动身份验证。当 AutoYaST 启动客户端时,会生成新的身份验证请求。管理员可以在服务器上手动接受此请求。AutoYaST 将重试连接。如果在此期间密钥被接受,AutoYaST 将继续安装。

  • 使用预置密钥。请参阅您选择的配置管理系统的文档,了解如何生成它们。使用 keys_url 选项告诉 AutoYaST 在哪里查找它们。

通过下面的配置示例,AutoYaST 将启动客户端以生成身份验证请求。它将尝试连接最多三次,每次尝试之间等待 15 秒。

示例 4.80:客户端/服务器与手动身份验证
<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 闪存盘)检索密钥,并使用它们连接到主服务器。

示例 4.81:客户端/服务器与预置密钥
<configuration_management>
    <type>salt</type>
    <master>my-salt-server.example.net</master>
    <keys_url>usb:/</keys_url>
</configuration_management>

下表总结了这些场景支持的选项。

属性

描述

类型

String

配置管理名称。目前仅支持 salt

master

String

配置管理服务器的主机名或 IP 地址。

auth_attempts

Integer

连接到服务器的最大尝试次数。默认值为三次尝试。

auth_time_out

Integer

连接到服务器尝试之间的时间(以秒为单位)。默认值为 15 秒。

keys_url

使用的密钥的 URL

HTTP 服务器、硬盘、闪存盘或类似设备(包含 default.keydefault.pub 文件)的路径。此密钥必须为配置管理主服务器所知。

启用服务

True/False

在安装后在客户端启用配置管理服务。默认值为 true

4.41.2 以独立模式运行 编辑源

对于简单的场景,部署配置管理服务器是不必要的。相反,使用 Salt 或 Puppet 的独立(或无主)模式。

由于没有服务器,AutoYaST 需要知道从哪里获取配置。将配置放入 TAR 档案并将其存储在任何地方(例如,在闪存盘、HTTP/HTTPS 服务器、NFS/SMB 共享上)。

TAR 档案必须具有与 Salt 服务器中 /srv 下预期的相同布局。这意味着您需要将 Salt 状态文件放置在 salt 目录中,并将公式放置在单独的 formulas 目录中。

此外,您可以拥有一个包含 pillar 数据的 pillar 目录。或者,您可以通过使用 pillar_url 选项在单独的 TAR 档案中提供该数据。

示例 4.82:独立模式
<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

配置管理名称。目前仅支持 salt

states_url

URL

Salt 状态 TAR 档案的位置。它可能包括公式和 pillar。文件必须位于 salt 目录中。

pillar_url

URL

包含 pillar 的 TAR 档案的位置。

modules_url

URL

Puppet 模块的位置。

4.41.3 SUSE Manager Salt 公式支持 编辑源

AutoYaST 在独立模式下运行时支持 SUSE Manager Salt 公式。如果状态 TAR 档案中发现公式,AutoYaST 会显示一个屏幕,允许用户选择和配置要应用的公式。

请记住,此功能违背了 AutoYaST 执行无人值守安装的目的,因为 AutoYaST 将等待用户的输入。

第 III 部分 使用动态配置文件管理批量安装 编辑源

5 支持的动态配置文件方法

在处理多个系统的安装时,使用单个配置(或一组较小的配置),使其能够自动适应每个系统可能很有用。在这方面,AutoYaST 提供了三种不同的机制来在安装时修改配置。

6 规则和类

规则和类允许以不同的方式定制机器集的安装

7 ERB 模板

ERB 模板用于在 AutoYaST 配置中嵌入 Ruby 代码,以便在安装过程中修改配置。通过这种方法,您可以检查系统并调整配置,例如设置值、添加或跳过部分等。

8 组合 ERB 模板和脚本

第 4.31.1 节,“预脚本”已经描述了如何使用预脚本修改当前配置文件。简而言之,如果脚本创建了一个 /tmp/profile/modified.xml 文件,AutoYaST 会导入该配置文件并放弃初始配置文件。

5 动态配置文件的支持方法 编辑源

在处理多个系统的安装时,使用单个配置(或一组较小的配置),使其能够自动适应每个系统可能很有用。在这方面,AutoYaST 提供了三种不同的机制来在安装时修改配置。

规则和类

规则和类提供了在安装过程中通过合并多个控制文件来配置系统的可能性。您可以在第 6 章,“规则和类”部分阅读有关此功能的更多信息。

ERB 模板

AutoYaST 支持嵌入式 Ruby (ERB) 模板语法,用于在安装过程中修改配置文件的内容。第 7 章,“ERB 模板”部分描述了如何使用它们。

预安装脚本

您可以使用预安装脚本在安装过程中修改甚至创建全新的配置文件。第 4.31.1 节,“预脚本”描述了如何利用它们。

在安装过程中询问用户

作为替代方案,AutoYaST 可以在运行时向用户询问要在配置文件中使用的值。在这种情况下,安装不是完全无人值守的,但对于设置用户名、密码、IP 地址等非常有用。您可以在第 4.34 节,“在安装期间询问用户值”部分找到有关此功能的更多信息。

6 规则和类 编辑源

规则和类允许以不同的方式定制机器集的安装

  • 规则允许根据系统属性配置系统。

  • 类代表目标系统组的配置。类可以分配给系统。

Note
注意:仅使用 autoyast 启动选项

规则和类仅由启动参数 autoyast=URL 支持。

不支持 autoyast2=URL,因为此选项仅下载单个 AutoYaST 控制文件。

6.1 基于规则的自动安装 编辑源

规则提供了在安装过程中通过合并多个控制文件,根据系统属性配置系统的可能性。基于规则的安装由规则文件控制。

例如,这对于一次性安装两个部门的系统可能很有用。假设一个场景,其中部门 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(目录名称末尾的斜杠很重要)。

Rules
图 6.1:规则

如果多条规则适用,则使用合并脚本即时生成每个组的最终控制文件。合并过程基于规则的顺序,后面的规则会覆盖早期规则中的配置数据。请注意,为了合并成功,合并的 XML 文件中的顶层部分的名称需要按字母顺序排列。

规则文件的使用是可选的。如果未找到规则文件,系统安装将以标准方式进行,即使用提供的控制文件或根据系统的 MAC 或 IP 地址搜索控制文件。

6.1.1 规则文件解释 编辑源

示例 6.1:简单规则文件

以下简单示例说明了如何使用规则文件检索具有已知硬件的客户端的配置。

<?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 属性)。

规则必须至少有一个要匹配的属性。如果您需要检查更多属性,例如内存或架构,您可以在规则资源中添加更多属性,如以下示例所示。

示例 6.2:简单规则文件

以下示例说明了如何使用规则文件检索具有已知硬件的客户端的配置。

<?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 搜索规则文件。

6.1.2 自定义规则 编辑源

如果 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 输出 intelnon_intel(在这种情况下,grep 命令的输出必须重定向到 /dev/null)。规则脚本的输出将填充在两个“@”字符之间,以确定要获取的控制文件的文件名。AutoYaST 将读取输出并获取名为 intel.xmlnon_intel.xml 的文件。此文件可以包含用于软件选择的 AutoYaST 配置文件部分;例如,如果您希望在 Intel 硬件上使用与在其他硬件上不同的软件选择。

自定义规则的数量限制为五条。因此您可以使用 custom1custom5

6.1.3 规则的匹配类型 编辑源

您可以使用五种不同的匹配类型

  • exact(默认)

  • 大于

  • 小于

  • 范围

  • regex(一个简单的 =~ 运算符,类似于 Bash 中的)

如果使用 exact,字符串必须与指定内容完全匹配。regex 可用于匹配子字符串,例如 ntel 将匹配 Intel、intel 和 intelligent。greaterlower 可用于 memsizetotaldisk 等。它们只能与返回整数值的规则匹配。范围也只适用于整数值,形式为 value1-value2,例如 512-1024

6.1.4 组合属性 编辑源

多个属性可以通过逻辑运算符组合。可以使规则匹配,如果 disksize 大于 1GB 或 memsize 恰好是 512MB。

您可以使用 rules.xml 文件中的 operator 元素来完成此操作。andor 是可能的运算符,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>

6.1.5 规则文件结构 编辑源

rules.xml 文件需要

  • 至少有一条规则,

  • 名称为 rules.xml

  • 位于配置文件存储库中的 rules 目录中,

  • 规则中至少有一个要匹配的属性。

6.1.6 预定义系统属性 编辑源

下表列出了您可以在规则文件中匹配的预定义系统属性。

如果您不确定系统上的值,请运行 /sbin/yast2 ayast_probe ncurses。显示检测值的文本框可以滚动。请注意,当其他需要锁的 YaST 进程(例如安装程序)正在运行时,此命令将不起作用。因此,您不能在安装期间运行它。

表 6.1:系统属性

属性

描述

主机地址

主机的 IP 地址

此属性必须始终完全匹配。

主机名

主机的名称

此属性必须始终完全匹配。

domain

主机的域名

此属性必须始终完全匹配。

已安装产品

要安装的产品名称。

此属性必须始终完全匹配。

已安装产品版本

要安装的产品版本。

此属性必须始终完全匹配。

network

主机网络地址

此属性必须始终完全匹配。

mac

主机的 MAC 地址

此属性必须始终完全匹配(MAC 地址应采用 0080c8f6484c 形式)。

linux

系统上已安装的 Linux 分区数量

此属性可以为 0 或更多。

其他

系统上已安装的非 Linux 分区数量

此属性可以为 0 或更多。

X服务器

图形适配器所需的 X 服务器

此属性必须始终完全匹配。

内存大小

主机上可用内存(以兆字节为单位)

所有匹配类型均可用。

总磁盘

主机上可用总磁盘空间(以兆字节为单位)

所有匹配类型均可用。

主机 ID

IP 地址的十六进制表示

需要精确匹配

arch

主机架构

需要精确匹配

karch

主机内核架构(例如 SMP 内核、Xen 内核)

需要精确匹配

磁盘大小

驱动器设备和大小(以兆字节为单位)

所有匹配类型均可用。

product

SMBIOS 中指定的硬件产品名称

需要精确匹配

产品供应商

SMBIOS 中指定的硬件供应商

需要精确匹配

主板

SMBIOS 中指定的系统主板名称

需要精确匹配

主板供应商

SMBIOS 中指定的系统主板供应商

需要精确匹配

自定义1-5

使用 Shell 脚本的自定义规则

所有匹配类型均可用。

6.1.7 带对话框的规则 编辑源

您可以使用带复选框的对话弹出窗口来选择要匹配的规则。

下面列出的元素必须放置在 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>

6.2 编辑源

类表示目标系统组的配置。与规则不同,类需要在控制文件中配置。然后可以将类分配给目标系统。

以下是类定义的一个示例

<classes config:type="list">
  <class>
    <class_name>TrainingRoom</class_name>
    <configuration>Software.xml</configuration>
  </class>
</classes>

在上面的示例中,文件 Software.xml 必须放置在子目录 classes/TrainingRoom/ 中。它将从与 AutoYaST 控制文件和规则相同的位置获取。

如果您有多个控制文件并且这些控制文件共享部分,最好对公共部分使用类。您还可以使用 XInclude。

使用配置管理系统,您可以定义一组类。类定义由以下变量组成

  • 名称:类名称

  • 描述

  • 顺序:迁移堆栈中类的顺序(或优先级)

Defining classes
图 6.2:定义类

您可以根据需要创建任意数量的类,但是建议将类的集合保持尽可能小,以使配置系统简洁。例如,可以使用以下类集合

  • 站点:描述物理位置或站点的类,

  • 机器:描述机器类型的类,

  • 角色:描述机器功能的类,

  • 组:描述站点或位置内的部门或组的类。

保存在类目录中的文件可以具有与常规控制文件相同的语法和格式,但表示配置的子集。例如,要为具有特定网络接口的计算机创建新的控制文件,您只需要控制网络配置的控制文件资源。如果有多种网络类型,您可以将特定硬件所需的网络类型与其他类文件合并,并创建适合要安装系统的新控制文件。

6.3 混合规则和类 编辑源

在自动安装会话期间,可以混合使用规则和类。例如,您可以使用包含类定义的规则来识别系统。该过程在图 图 A.1,“规则检索过程”中描述。

检索规则并合并后,将解析生成的控制文件并检查类定义。如果定义了类,则从原始存储库中检索类文件,并启动新的合并过程。

6.4 规则和类的合并 编辑源

对于类和规则,多个 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>

您可能期望控制文件包含三个分区。但事实并非如此。最终您将得到两个分区,并且第一个分区是交换分区和根分区的混合。在两个分区中配置的设置,例如 mountsize,将从第二个文件中使用。仅存在于第一个或第二个分区中的设置也将复制到合并的分区中。

在此示例中,您不想要第二个 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>

7 ERB 模板 编辑源

ERB 模板用于在 AutoYaST 配置中嵌入 Ruby 代码,以便在安装过程中修改配置。通过这种方法,您可以检查系统并调整配置,例如设置值、添加或跳过部分等。

要激活 ERB 处理,配置文件必须具有扩展名 .erb(例如,autoyast.xml.erb)。因此,无法将规则/类与 ERB 模板结合使用。

7.1 什么是 ERB? 编辑源

ERB 代表嵌入式 Ruby。ERB 利用 Ruby 编程语言的强大功能来生成不同类型的内容。通过 ERB,您可以在配置文件中包含一些 Ruby 代码,以在运行时根据安装系统进行调整。

使用 ERB 时,Ruby 代码包含在 <%%> 符号之间。使用等号 = 将命令输出包含在生成的配置文件中。

示例 7.1:使用 ERB 包含文件
<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 函数运行命令。

示例 7.2:使用 Ruby 运行命令
<% 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 代码结构,例如条件和循环。

示例 7.3:使用 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 提供了一小部分辅助函数来检索底层系统的信息,例如 disksnetwork_cards。您可以在第 7.2 节,“模板辅助函数”部分查看辅助函数及其值的列表。

7.2 模板辅助函数 编辑源

模板辅助函数是一组 Ruby 方法,可在配置文件中使用,以检索有关安装系统的信息。

7.2.1 boot_efi? 编辑源

boot_efi? 是一个布尔辅助函数,用于返回系统是否使用 EFI 启动。在下面的示例中,配置文件根据当前启动模式配置引导加载程序。

示例 7.4:配置引导加载程序
<% if env.boot_efi? %>
  <loader_type>grub2-efi</loader_type>
<% else %>
  <loader_type>grub2</loader_type>
<% end %>

7.2.2 disks 编辑源

disks 辅助函数返回检测到的磁盘列表。列表的每个元素都包含一些基本信息,例如设备名称或大小。

类型

:设备

String

设备内核名称(例如 sda)。

:模型

String

磁盘型号

:串行

String

序列号

:大小

Integer

磁盘大小(是磁盘扇区的计数)

:udev_names

Array<String>

磁盘 udev 名称列表。您可以使用其中任何一个来引用设备。

:厂商

String

磁盘供应商名称

下面示例中的配置文件将系统安装到最大的磁盘上。它按大小对现有磁盘列表进行排序并取最后一个。然后它使用 :device 键作为 device 元素的值。

示例 7.5:使用最大的磁盘
<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>

7.2.3 network_cards 编辑源

network_cards 辅助函数返回网络卡列表,包括它们的名称、状态信息(例如,它们是否已连接)。

类型

:设备

String

设备名称(例如 eth0enp3s0

:mac

String

MAC 地址

:active

布尔值

设备是否处于活动状态

:link

布尔值

设备是否已连接

:厂商

String

磁盘供应商名称

以下示例查找连接到网络的第一个网卡并将其配置为使用 DHCP。

示例 7.6:配置连接的网卡
<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>

7.2.4 os_release 编辑源

os_release 辅助函数返回操作系统信息,该信息包含在 /etc/os-release 文件中。

类型

:id

String

分发 ID(例如 slesopensuse-tumbleweed

:name

String

分发名称(例如 SLESopenSUSE Tumbleweed

:version

String

分发版本(例如 15.2

您可以使用此信息来决定要安装的产品,对所有产品(SLE 或 openSUSE 分发)使用几乎相同的配置文件。

示例 7.7:对不同分发版重用同一配置文件
<products t="list">
  <% if os_release[:id] == 'sle' %>
  <product>SLES</product>
  <% else %>
  <product>openSUSE</product>
  <% end %>
</products>

7.2.5 hardware 编辑源

hardware 辅助函数提供额外的硬件信息。它返回 hwinfo 命令的所有信息。您可以将此辅助函数用作在通过描述的辅助函数提供的信息不足以满足要求的情况下的回退。在下一个示例中,hardware 辅助函数用于过滤 USB 设备。请查看第 7.3 节,“运行 ERB 辅助函数”以了解如何检查 hardware 辅助函数提供的所有信息。

示例 7.8:过滤 USB 设备
<% usb_disks = hardware["disk"].select { |d| d["driver"] != "usb-storage" } %>

7.3 运行 ERB 辅助函数 编辑源

您可以使用 Ruby 控制台运行 AutoYaST ERB 辅助函数并了解它们提供的功能。所有 ERB 辅助函数都通过 Y2Autoinstallation::Y2ERB::TemplateEnvironment 类的一个实例进行访问。以 root 身份运行 irb -ryast -rautoinstall/y2erb 启动 Ruby 交互式解释器。

示例 7.9:运行辅助函数
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"

7.4 渲染 ERB 配置文件 编辑源

AutoYaST 命令行提供了一个 check-profile 命令,可用于从 ERB 文件生成配置文件。此命令要求 AutoYaST 解析、运行 ERB 代码并生成结果配置文件。您可以检查渲染的配置文件以检查一切是否按预期工作。有关它支持的所有选项,请参阅命令帮助:autoyast check-profile --help。在以下示例中,check-profile 要求 AutoYaST 下载并解析配置文件,解释 ERB 代码并运行预脚本。结果将转储到 result.xml 文件中。

示例 7.10:渲染配置文件
 > sudo yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.erb output=result.xml run-scripts=true run-erb=true
Warning
警告:check-profile 权限

在大多数情况下,check-profile 需要 root 权限,因此在以 root 身份运行预安装脚本和 ERB 配置文件时请务必小心。仅使用您信任的配置文件。

7.5 调试 ERB 配置文件 编辑源

对于您想要停止 ERB 评估并检查正在发生的情况的情况,YaST 提供与 byebug 调试器的集成。安装 rubygem(byebug) 软件包并将 Y2DEBUGGER 环境变量设置为 1。

示例 7.11:准备调试环境
> sudo zypper --non-interactive in "rubygem(byebug)"
> sudo Y2DEBUGGER=1 yast2 autoyast check-profile ...

添加断点就像在您想要停止的位置添加 <% byebug %> 一样简单。有关 byebug 的更多信息,请参阅 https://github.com/deivid-rodriguez/byebug

示例 7.12:添加断点
<% byebug %>
<% if system("dmidecode | grep some-model") %>
  <!-- do something -->
%<% end %>

7.6 ERB 与规则和类的比较 编辑源

尽管 ERB 和规则/类都能够动态生成配置文件,但通常 ERB 配置文件更易于阅读和理解。一个重要的区别是规则和类可以合并配置文件,而 ERB 不能。有关合并配置文件的更多信息,请参阅第 6 章,“规则和类”。另一方面,ERB 带来了高级语言 Ruby 的所有强大功能。让我们看一个同时使用两者的示例。在以下示例中,如果 /dev/sdb 存在,我们希望将 /home 目录放置在其中。

示例 7.13:规则和类
<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>
示例 7.14:ERB
<% 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>

8 组合 ERB 模板和脚本 编辑源

第 4.31.1 节,“预脚本”已经描述了如何使用预脚本修改当前配置文件。简而言之,如果脚本创建了一个 /tmp/profile/modified.xml 文件,AutoYaST 会导入该配置文件并放弃初始配置文件。

这是一种非常灵活的方法,唯一的限制是您需要依赖安装介质中可用的语言和库。

8.1 在脚本中嵌入 ERB 编辑源

规则不同,ERB 模板可以与脚本结合使用。AutoYaST 将在运行脚本之前评估您在脚本中包含的任何 ERB 标签。此行为仅适用于配置文件中定义的脚本,而不适用于外部脚本。

下面的脚本下载一个基于 MAC 地址命名的配置文件。将文件保存为 /tmp/profile/modified.xml 将导致 AutoYaST 加载并使用下载的配置文件。

示例 8.1:使用 MAC 地址获取配置文件
<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>

8.2 从 Ruby 脚本访问 ERB 辅助函数 编辑源

可以在 Ruby 脚本中使用 ERB 辅助函数。要使用这些辅助函数,您需要要求 yastautoinstall/y2erb 库,并使用 Y2Autoinstall::Y2ERB::TemplateEnvironment 类访问它们。

示例 8.2:从 Ruby 脚本访问 ERB 辅助函数
<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>

第 IV 部分 理解自动安装过程 编辑源

9 自动安装过程

系统启动进入自动安装并检索控制文件后,YaST 根据控制文件中提供的信息配置系统。所有配置设置都汇总在一个默认显示且应在完全…

9 自动安装过程 编辑源

9.1 简介 编辑源

系统启动进入自动安装并检索控制文件后,YaST 根据控制文件中提供的信息配置系统。所有配置设置都汇总在一个默认显示且应在需要完全自动安装时停用的窗口中。

当 YaST 显示配置摘要时,YaST 只探测了硬件并为自动安装做好了准备。系统尚未进行任何更改。如果出现任何错误,您仍然可以中止该过程。

系统应可自动安装,无需任何图形适配器或显示器。尽管如此,建议为客户端机器连接显示器,以便您可以监督过程并在出现错误时获得反馈。在图形和基于文本的 Ncurses 界面之间进行选择。对于无头客户端,可以使用串行控制台监视系统消息。

9.1.1 X11 界面(图形化) 编辑源

这是自动安装时的默认界面。无需特殊变量即可激活它。

9.1.2 串行控制台 编辑源

通过向内核命令行添加关键字 console(例如 console=ttyS0)来使用串行控制台开始安装系统。这将在控制台模式下启动 linuxrc,然后 YaST 在串行控制台模式下启动。

9.1.3 基于文本的 YaST 安装 编辑源

此选项也可以通过命令行激活。要在文本模式下启动 YaST,请在命令行中添加 textmode=1

当安装内存小于 64 MB 的客户端,或者不应配置 X11 时,尤其是在无头机器上,建议在文本模式下启动 YaST。

9.2 选择正确的引导介质 编辑源

有多种方法可以引导客户端。计算机可以从其网络接口卡 (NIC) 引导,通过 DHCP 或 TFTP 接收引导映像。或者,可以从闪存盘(例如 USB 闪存盘)或可引导 DVD-ROM 加载合适的内核和 initrd 映像。

YaST 将在启动时检查引导介质或 initrd 的根目录中是否存在 autoinst.xml,如果找到,则切换到自动安装。如果控制文件名称不同或位于其他位置,请使用参数 AutoYaST=URL 在内核命令行上指定其位置。

或者,您可以将 autoinst.xml 放置在物理或虚拟挂载的、标记为 OEMDRV 的设备中。在这种情况下,您无需在内核命令行上指定 autoinst.xml 的位置。autoinst.xml 必须位于设备的根目录中。

9.2.1 从闪存盘(例如 USB 闪存盘)引导 编辑源

出于测试/救援目的,或者因为网卡没有 PROM 或 PXE,您可以构建一个可引导的闪存盘与 AutoYaST 一起使用。闪存盘还可以存储控制文件。

Tip
提示:将安装介质映像复制到可移动闪存盘

使用以下命令将安装映像的内容复制到可移动闪存盘。

> sudo dd if=IMAGE of=FLASH_DISK bs=4M && sync

IMAGE 需要替换为 SLE-15-SP6-Online-ARCH-GM-media1.isoSLE-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 命令时,设备不得挂载。请注意,分区上的所有数据都将被擦除!

9.2.2 从 SUSE Linux Enterprise 安装介质引导 编辑源

您可以将 SUSE Linux Enterprise 安装介质(SLE-15-SP6-Online-ARCH-GM-media1.isoSLE-15-SP6-Full-ARCH-GM-media1.iso)与其他介质结合使用。例如,控制文件可以通过闪存盘或网络上指定的位置提供。或者,创建一个包含控制文件的自定义安装介质。

9.2.3 通过网络 PXE 引导 编辑源

通过 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 服务器中删除该文件。

9.3 调用自动安装过程 编辑源

9.3.1 命令行选项 编辑源

添加命令行变量 autoyast 会导致 linuxrc 在自动化模式下启动。linuxrc 程序在以下位置搜索配置文件,该文件应与主控制文件区分开来

  • 用于引导系统的初始 RAM 磁盘的根目录中;

  • 引导介质的根目录中。

linuxrc 配置文件支持多个关键字。有关 linuxrc 如何工作以及其他关键字的详细说明,请参阅附录 C,“高级 linuxrc 选项”。其中一些更常见的包括

自动升级

使用 AutoYaST 启动自动升级;请参阅第 4.10 节,“升级”

autoyast

自动安装控制文件的位置;有关详细信息,请参阅AutoYaST 控制文件位置

ifcfg

配置并启动网络。如果 AutoYaST 要从远程位置获取,则需要此项。有关详细信息,请参阅第 C.3 节,“高级网络设置”

insmod

要加载的内核模块

安装

安装目录的位置,例如 install=nfs://192.168.2.1/CDs/

Note
注意:禁用 SSL 检查

当您使用 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 目录树”部分。

instmode

安装模式,例如 nfshttp 等(如果设置了 install 则不需要)。

根密码

如果 AutoYaST 配置文件中未指定,则为 root 用户的密码

服务器

联系 NFS 服务器以获取源目录

服务器目录

NFS 服务器上的目录

y2confirm

即使控制文件中包含 <confirm>no</confirm>,确认建议也会出现。

这些变量和关键字将使系统达到 YaST 可以接管主控制文件的程度。目前,源介质会自动发现,这在某些情况下使得无需向 linuxrc 提供任何指令即可启动自动安装过程。

传统的 linuxrc 配置文件 (info) 的功能是向客户端提供足够的关于安装服务器和源位置的信息。通常,此文件不是必需的,但在不使用 DHCP 和 BOOTP 的特殊网络环境或需要加载特殊内核模块时,则需要此文件。

您可以使用内核命令行向 linuxrc 传递关键字。这可以通过几种方式完成。您可以在引导时以通常的方式交互式地指定 linuxrc 关键字以及其他内核参数。您还可以将内核参数插入自定义网络可引导磁盘映像中。还可以配置 DHCP 服务器以结合 Etherboot 或 PXE 传递内核参数。

Note
注意:使用 autoyast2 引导选项而不是 autoyast

autoyast2 选项类似于 autoyast 选项,但 linuxrc 会解析提供的值,例如,在需要时尝试配置网络。本文档中未描述此选项。有关 AutoYaST 和 linuxrc URI 语法之间差异的信息,请参阅 linuxrc 附录:附录 C,“高级 linuxrc 选项”。AutoYaST 的规则和类不受支持

命令行变量 autoyast 可以按照以下列表中的格式使用。

AutoYaST 控制文件位置
URI 的格式

用于控制文件位置的 URI 的 autoyast 语法可能令人困惑。格式为 SCHEMA://HOST/PATH-TO-FILE。使用的正斜杠数量各不相同。对于控制文件的远程位置,URI 看起来像此 NFS 服务器的示例,带有两个斜杠:autoyast=nfs://SERVER/PATH

当您的控制文件在本地文件系统上时,情况有所不同。例如,autoyast=usb:///profile.xmlautoyast=usb:///profile.xml 相同。您可以省略本地主机名,但必须保留第三个斜杠。autoyast=usb://profile.xml 将失败,因为 profile.xml 被解释为主机名。

何时不需要控制文件规范

对于升级,自动离线升级不需要 autoyast 变量,请参阅过程 4.1,“在离线升级模式下启动 AutoYaST”

对于新安装,如果名为 autoinst.xml 的文件位于以下三个位置之一,则将启动 autoyast

  1. 安装闪存盘(例如 USB 闪存盘)的根目录

  2. 安装介质的根目录

  3. 用于引导系统的初始 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.xmlautoyast=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.isoSLE-15-SP6-Full-ARCH-GM-media1.iso。但要启动自动安装过程,应在系统引导时输入自动安装命令行变量,并且 YaST 必须能够访问控制文件。

在脚本上下文中,您可以为虚拟机使用串行控制台,这允许您在文本模式下工作。然后,您可以从 expect 脚本或等效脚本中传递所需的参数。

以下场景列表说明了如何提供控制文件。

使用 openSUSE Leap 安装媒体

使用原始安装媒体时 (需要 SLE-15-SP6-Online-ARCH-GM-media1.isoSLE-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://..

Note
注意:禁用网络和 DHCP

要在不需要或不可用的安装期间禁用网络,例如从 DVD-ROM 自动安装时,请使用 linuxrc 选项 netsetup=0 来禁用网络设置。

通过所有 AutoYaST 调用选项,可以通过以下方式指定控制文件的位置:

  1. 指定控制文件的确切位置

    autoyast=http://192.168.1.1/control-files/client01.xml
  2. 指定包含多个控制文件的目录

    autoyast=http://192.168.1.1/control-files/

    在这种情况下,相关的控制文件将通过 IP 的十六进制数字表示形式进行检索,如下所述。

    此目录的路径需要以 / 结尾。

    目录中的文件不能有任何扩展名,例如 .xml。因此,文件名只能是 IP 或 MAC 地址。

    > ls -r control-files
    C00002 0080C8F6484C default

如果只定义了路径前缀变量,YaST 将以以下方式从指定位置获取控制文件:

  1. 首先,它将使用其自己的 IP 地址的十六进制大写表示形式搜索控制文件,例如 192.0.2.91 -> C000025B

  2. 如果找不到此文件,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

示例 9.1: 确定 IP 地址的 HEX 代码
> /usr/bin/gethostip 10.10.0.1
10.10.0.1 10.10.0.1 0A0A0001

9.3.2 自动安装单个系统 编辑源

在没有任何网络连接的情况下自动安装系统的最简单方法是使用原始的 openSUSE Leap DVD-ROM 和一个闪存盘(例如,USB 闪存盘)。您不需要设置安装服务器或网络环境。

创建控制文件并将其命名为 autoinst.xml。将文件 autoinst.xml 复制到闪存盘。

9.3.3 linuxrc info 文件与 AutoYaST 控制文件结合使用 编辑源

如果您选择使用 info 文件或作为引导选项将信息传递给 linuxrc,您可以将关键字集成到 AutoYaST 控制文件中。添加一个 info_file 部分,如以下示例所示。此部分包含关键字-值对,用冒号分隔,每行一个对。

示例 9.2: AutoYaST 控制文件中的 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:/// 选项。

9.4 系统配置 编辑源

自动安装期间的系统配置是整个过程中最重要的部分。正如您在前面的章节中看到的,目标系统上几乎所有内容都可以自动配置。除了预定义的指令,您还可以随时使用后脚本来更改系统中的其他内容。此外,您可以更改任何系统变量,如果需要,可以将完整的配置文件复制到目标系统。

9.4.1 安装后和系统配置 编辑源

安装后和系统配置在最后一个软件包安装到目标系统后立即启动,并在系统首次引导后继续。

在系统首次引导之前,AutoYaST 会写入安装过程中收集的所有数据,并在指定位置写入引导加载程序。除了这些常规任务,AutoYaST 还会执行控制文件中指定的 chroot 脚本。请注意,这些脚本在系统尚未挂载时执行。

如果安装了与默认内核不同的内核,则需要硬重启。在自动安装期间,也可以强制硬重启,无论安装的内核如何。使用 general 资源的 reboot 属性(参见 第 4.1 节 “一般选项”)。

9.4.2 系统自定义 编辑源

大部分系统定制都在安装的第二阶段完成。如果您需要无法使用 AutoYaST 资源完成的定制,请使用安装后脚本进行进一步修改。

您可以在控制文件中定义无限数量的自定义脚本,通过编辑控制文件或使用配置系统。

第 V 部分 已安装系统上 AutoYaST 的用途 编辑源

10 在已安装系统中运行 AutoYaST

在某些情况下,在正在运行的系统中运行 AutoYaST 很有用。请记住,在此场景中,partitioning 部分将被忽略。

10 在已安装系统上运行 AutoYaST 编辑源

在某些情况下,在正在运行的系统中运行 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 安装过程:

> sudo yast2 ayast_setup setup filename=/tmp/install_foo.xml dopackages="yes"

有关更多信息,请运行 yast2 ayast_setup longhelp

第六部分 附录 编辑源

A 处理规则

下图说明了规则的处理方式以及检索和合并的过程。

B AutoYaST 常见问题解答

如何调用 AutoYaST 安装?

C 高级 linuxrc 选项

linuxrc 是一个在内核加载后,但在 AutoYaST 或其他阶段之前运行的小程序。它为安装准备系统。它允许用户加载模块、启动已安装的系统或救援系统,以及指导 YaST 的操作。

D GNU 许可协议

本附录包含 GNU 自由文档许可协议版本 1.2。

A 处理规则 编辑源

下图说明了规则的处理方式以及检索和合并的过程。

Rules retrieval process
图 A.1: 规则检索过程

B AutoYaST 常见问题 (FAQ) 编辑源

Q: 1. 如何调用 AutoYaST 安装?

在所有 openSUSE Leap 版本中,通过将 autoyast=<PATH_TO_PROFILE> 添加到内核参数列表来调用自动安装。例如,添加 autoyast=http://MYSERVER/MYCONFIG.xml 将启动自动安装,其中包含 AutoYaST 配置的配置文件将从 Web 服务器 myserver 获取。有关更多信息,请参阅 第 9.3 节 “调用自动安装过程”

Q: 2. 什么是 AutoYaST 配置文件?

配置文件是 AutoYaST 配置文件。AutoYaST 配置文件的内容决定了系统将如何配置以及将安装哪些软件包。这包括分区、网络设置和软件源等。运行系统中的 YaST 几乎所有可配置的内容都可以在 AutoYaST 配置文件中配置。配置文件格式是 ASCII XML 文件。

Q: 3. 如何创建 AutoYaST 配置文件?

创建 AutoYaST 配置文件最简单的方法是使用现有的 openSUSE Leap 系统作为模板。在已安装的系统上,启动 YaST › 杂项 › 自动安装。现在从菜单中选择 工具 › 创建参考配置文件。选择您要包含在配置文件中的系统组件。或者,通过从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。

这两种方法都将创建文件 /root/autoinst.xml。在命令行上创建的版本可用于设置与创建配置文件的系统完全相同的克隆。但是,通常您会希望调整文件,以便可以安装多个非常相似但不完全相同的机器。这可以通过使用您喜欢的文本/XML 编辑器调整配置文件来完成。

Q: 4. 如何检查创建的 AutoYaST 配置文件的语法?

检查您创建的 AutoYaST 配置文件最有效的方法是使用 jingxmllint

有关详细信息,请参阅 第 3.3 节 “手动创建/编辑控制文件”

Q: 5. 最小的 AutoYaST 配置文件是什么?

如果在 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>
Q: 6. 如何自动安装并自动检测声卡?

在您的配置文件中使用以下 sound 部分:

<sound>
  <autoinstall config:type="boolean">true</autoinstall>
  <configure_detected config:type="boolean">true</configure_detected>
</sound>
Q: 7. 我只想从 DVD 安装。我应该把 AutoYaST 配置文件放在哪里?

将配置文件放在 DVD 的根目录中。使用 file:///PROFILE.xml 引用它。

Q: 8. 我如何在命令行上测试合并过程?

要合并两个配置文件 a.xmlbase.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

这要求两个配置文件中的部分都按字母顺序排列(例如, 必须列在 之后)。如果您使用 YaST 创建了配置文件,则配置文件会自动正确排序。

dontmerge1 参数是可选的,它是一个示例,说明当您在配置文件中使用 dont_merge 元素时该怎么做。有关更多信息,请参阅 第 6.4 节 “规则和类的合并”

Q: 9. 我可以从脚本中调用 Zypper 吗?

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>
Q: 10. AutoYaST 配置文件中各部分的顺序重要吗?

实际上,顺序并不重要。配置文件中各部分的顺序对 AutoYaST 工作流程没有影响。但是,为了合并不同的配置文件,各部分需要按字母顺序排列。

Q: 11. linuxrc 报告 File not signed,导致安装受阻。我需要手动交互。

linuxrc 找到了一个未签名的文件,例如驱动程序更新。要使用未签名的文件,您可以通过将 insecure=1 传递给 linuxrc 参数列表(与 autoyast=... 参数一起)来抑制该消息。

Q: 12. 我想从 DVD/USB/HD 安装,但从网络获取 XML 文件。

您需要将 ifcfg 传递给 linuxrc。这是设置网络所必需的,否则 AutoYaST 无法从远程主机下载配置文件。有关更多信息,请参阅 第 C.3 节 “高级网络设置”

Q: 13. 是否可以安装到 NFS 根目录 (/)?

是的,但这比其他方法更复杂。环境(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>
Q: 14. 我可以在哪里提问这里没有回答的问题?

有一个 AutoYaST 邮件列表,您可以在其中发布您的问题。请访问 https://lists.opensuse.org/opensuse-autoinstall/ 加入我们。

C 高级 linuxrc 选项 编辑源

linuxrc 是一个在内核加载后,但在 AutoYaST 或其他阶段之前运行的小程序。它为安装准备系统。它允许用户加载模块、启动已安装的系统或救援系统,以及指导 YaST 的操作。

Note
注意:AutoYaST 和 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

Note
注意:在已安装系统上运行 linuxrc

如果您在已安装的系统上运行 linuxrc,它将略有不同,以免破坏您的安装。因此,您无法以这种方式测试所有功能。

为了尽可能减小 linuxrc 二进制文件的大小,它的所有库和其他辅助文件都直接链接到主程序二进制文件中。这意味着初始 RAM 磁盘 initrd 中不需要任何共享库。

C.1 将参数传递给 linuxrc 编辑源

除非 linuxrc 处于手动模式,否则它将在这些位置查找 info 文件:首先是闪存盘(例如 USB 闪存盘)上的 /info,如果不存在,则在 initrd 中查找 /info。之后,它会解析内核命令行以获取参数。您可以通过设置 info 命令行参数来更改 linuxrc 读取的 info 文件。如果您不希望 linuxrc 读取内核命令行(例如,因为您需要指定 linuxrc 也识别的内核参数),请使用 linuxrc=nocmdline

linuxrc 将始终查找并解析名为 /linuxrc.config 的文件。如果需要,请使用此文件更改默认值。一般来说,最好使用 info 文件。请注意,即使在手动模式下,/linuxrc.config 也会在任何 info 文件之前读取。

C.2 info 文件格式 编辑源

# 开头的行是注释。有效条目的格式为:

key: value

请注意,value 延伸到行的末尾,因此可能包含空格。key 的匹配不区分大小写。

您可以使用 key=value 语法在内核命令行上使用相同的键值对。不符合上述格式的行将被忽略。

下表列出了重要的键和示例值。有关 linuxrc 参数的完整列表,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc

表 C.1: 高级 linuxrc 关键字

关键字:示例值

描述

addswap: 0|3|/dev/sda5

如果为 0,则从不要求交换;如果参数为正数 n,则激活交换分区;如果参数为分区名称,则激活此交换分区。

autoyast: ftp://AUTOYASTFILE

自动安装文件的位置;激活自动安装模式。有关详细信息,请参阅 AutoYaST 控制文件位置

bootptimeout: 10

BOOTP 请求的超时时间为 10 秒。

bootpwait: 5

网络激活和启动 bootp 之间暂停 5 秒。

display: color|mono|alt

设置菜单颜色方案。

exec: COMMAND

运行命令

forceinsmod: 0|1

运行 insmod 命令时使用 -f 选项(强制)。

forcerootimage: 0|1

将安装系统加载到 RAM 磁盘。

ifcfg: NETWORK_CONFIGURATION

设置并启动网络。有关更多信息,请参阅 第 C.3 节 “高级网络设置”

insmod: MODULE

加载 MODULE

install: URL

URL 指定的存储库安装。有关 URL 语法,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc#url_descr

keytable: de-lat1-nd

要加载的虚拟控制台键盘映射。

language: de_DE

安装预选的语言。

loghost: 10.10.0.22

通过 UDP 端口 514 启用 syslog 远程日志记录

loghost: @10.10.0.22

通过 TCP 端口 514 启用 syslog 远程日志记录

memloadimage: 50000

如果空闲内存超过 50000 KB,则将安装系统加载到 RAM 磁盘。

memlimit: 10000

如果可用内存低于 10000 KB,则要求交换。

memYaST: 20000

如果可用内存低于 20000 KB,则在文本模式下运行 YaST。

memYaSTText: 10000

如果可用内存低于 10000 KB,则在启动 YaST 之前要求交换。

proxy: http://10.10.0.1:3128

定义 HTTP 代理服务器。有关完整的参数语法,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc#p_proxy

rescue: 1|nfs://server/dir

加载救援系统;URL 变体明确指定救援映像的位置。

rescueimage: /suse/images/rescue

救援系统映像的位置。

rootimage: /suse/images/root

安装系统映像的位置。

textmode: 1

以文本模式启动 YaST。

usbwait: 4

加载 USB 模块后等待四秒。

y2confirm

覆盖控制文件中的 confirm 参数,并请求确认安装建议。

C.3 高级网络设置 编辑源

即使将 hostipnameservergateway 等参数传递给 linuxrc,网络也只会在需要时启动(例如,通过 SSH 或 VNC 安装时)。由于 autoyast 不是 linuxrc 参数(此参数被 linuxrc 忽略,仅传递给 YaST),因此在为 AutoYaST 配置文件指定远程位置时,网络不会自动启动。

因此,需要显式启动网络。这通过使用参数 ifcfg 完成。ifcfg 直接控制 /etc/sysconfig/network/ifcfg-* 文件的内容。

DHCP 网络配置

配置 DHCP 的通用语法是:

 ifcfg=INTERFACE=DHCP*,OPTION1=VALUE1,OPTION2=VALUE2

其中 INTERFACE 是接口名称,例如 eth0,或 eth* 表示所有接口。DHCP* 可以是 dhcp(IPv4 和 IPv6)、dhcp4dhcp6

要为 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

打印此页面