跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

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此设置仅适用于基本产品许可。有关详细信息,请参阅 第 4.9.3 节,“安装其他/自定义软件包或产品” 中的 add-on 部分中的 confirm_license 标志。

<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=1 以及 self_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: 常规选项

此示例显示了“general”部分中最常用的选项。pre-modules 和 post-modules 部分中的脚本只是说明该概念的虚拟脚本。

<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns"
 xmlns:config="http://www.suse.com/1.0/configns">
 <general>
  <mode>
   <halt config:type="boolean">false</halt>
   <forceboot config:type="boolean">false</forceboot>
   <final_reboot config:type="boolean">false</final_reboot>
   <final_halt config:type="boolean">false</final_halt>
   <confirm_base_product_license config:type="boolean">
    false
   </confirm_base_product_license>
   <confirm config:type="boolean">true</confirm>
   <second_stage config:type="boolean">true</second_stage>
  </mode>
  <proposals config:type="list">
   <proposal>partitions_proposal</proposal>
  </proposals>
  <self_update config:type="boolean">true</self_update>
  <self_update_url>http://example.com/updates/$arch</self_update_url>
  <signature-handling>
   <accept_unsigned_file config:type="boolean">
    true
   </accept_unsigned_file>
   <accept_file_without_checksum config:type="boolean">
    true
   </accept_file_without_checksum>
   <accept_verification_failed config:type="boolean">
    true
   </accept_verification_failed>
   <accept_unknown_gpg_key config:type="boolean">
    true
   </accept_unknown_gpg_key>
   <import_gpg_key config:type="boolean">true</import_gpg_key>
   <accept_non_trusted_gpg_key config:type="boolean">
   true
   </accept_non_trusted_gpg_key>
  </signature-handling>
  <wait>
   <pre-modules config:type="list">
    <module>
     <name>networking</name>
     <sleep>
      <time config:type="integer">10</time>
      <feedback config:type="boolean">true</feedback>
     </sleep>
     <script>
     <source>&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>

根据您的经验,您可以跳过、记录和显示(带超时)这些消息。建议显示所有带有超时的“消息”。警告在某些地方可以跳过,但不应忽略。

在自动安装模式下的默认设置是在没有超时的情况下显示错误,并以 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 变体。最安全(“默认”)选项是让安装程序做出决定。

<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(写入 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-75L9by-path,例如 /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 通常意味着系统需要数千兆字节的 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 man 页面。)

<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, Diagnostics and firmware (MS-DOS, GPT): 18
PPC PReP Boot partition (MS-DOS, GPT): 65
Swap (MS-DOS, GPT, DASD, implicit): 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 boot (GPT): 257
Windows basic data (GPT): 258
EFI (GPT): 259
Microsoft reserved (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

pool 必须设置为 true,如果 LVM 逻辑卷应为 LVM 薄池。

<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 中的配置将应用于整个磁盘。

在下面的示例中,我们将第二个磁盘 (/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 的成员。请参阅 第 4.5.5 节,“逻辑卷管理器 (LVM)”第 4.5.6 节,“软件 RAID” 以获取有关设置 LVM 或软件 RAID 的更多详细信息。

为了保持向后兼容,可以通过将 <partition_nr> 元素设置为 0 来实现相同的结果。但是,从 openSUSE Leap 15 开始,这种使用 <partition_nr> 元素的方法已被弃用。

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

数据日志模式 (orderedjournalwriteback)
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 操作系统以及为 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 的支持得到了极大的改进。

如果启用了安装程序自更新功能,则可以为 openSUSE Leap 15 分区软件 RAID。但是,此场景在早期版本中不受支持,因此定义软件 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,就像对常规磁盘一样。在下面的示例中,仅显示了 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_first, parity_last, parity_first_6, n2, o2, f2, n3, o3f3

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

<parity_algorithm>left_asymmetric</parity_algorithm>
raid_type

可能的值有:raid0, raid1, raid5, raid6raid10

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

与 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 级别是:default, single, dup, raid0, raid1raid10。默认情况下,文件系统元数据将在两个设备上镜像,数据将在所有设备上条带化。如果只有一个设备,元数据将复制在该设备上。

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

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

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

4.5.10 NFS 配置 编辑源文件

AutoYaST 允许将 openSUSE Leap 安装到 网络文件系统 (NFS) 共享上。为此,您必须创建一个具有 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 等常规文件系统不同。因此,相关的元素只有 mount,这是必需的,以及 fstopt。后者用于设置文件系统属性,例如其大小限制、模式等。您可以在 tmpfs man 页面中找到有关已知选项的更多信息。

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

身份验证方法:None/CHAP

portal

门户地址

startup

值:manual/onboot

target

目标名称

iface

接口名称

4.7 通过以太网的 Fibre Channel 配置 (FCoE) 编辑源文件

使用 fcoe_cfg 资源,您可以配置通过以太网的 Fibre Channel (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 的调试消息。

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

interfaces

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

service_start

值:yes/no

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

启动 fcoe 服务意味着启动 Fibre Channel over Ethernet 服务守护程序 fcoemon,它控制 FCoE 接口并与 lldpad 守护程序建立连接。

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

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

键盘布局

Keymap-code 值或 keymap-alias 值有效。可在 /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 软件开发工具包),请将文件 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 一起使用,请使用控制文件中的以下配置关闭检查。

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。但是,请注意,openSUSE Leap 不会随附 sendmail。以下示例显示了如何执行此操作

示例 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 在阶段 2 中安装软件包 编辑源文件

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

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

4.9.8 在阶段 2 中安装模式 编辑源文件

您也可以在阶段 2 中安装模式。使用 post-patterns 元素。

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

4.9.9 阶段 2 中的在线更新 编辑源文件

您可以在安装结束时执行在线更新。将布尔值 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. 选择 升级 菜单项。

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

  5. 按下 Enter 键开始升级过程。

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

  2. 选择 升级 菜单项。

  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)支持按需激活(socket 激活的服务)。如果您想利用此功能,请将这些服务的名称列在 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 配置工作流程 编辑源文件

网络配置主要用于将单个工作站连接到基于以太网的局域网。通常在 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 系统特定的设备设置。

  • 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

AutoYaST 在选择要安装的虚拟化软件包(例如,Xen、QEMU 或 KVM)时配置桥接。您可以通过将此元素设置为 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+autoipZeroconf 获取 IPv4 配置,并从 DHCP 获取 IPv6。

  • autoipZeroconf 获取 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 地址。

已弃用。请使用 ipaddrprefixlen 代替。

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 地址分配给同一接口。它们使用包含每个地址的 aliasX 条目的 aliases 元素指定。

每个条目支持以下元素

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

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

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 中的 自动安装配置 模块生成有效的 JSON 配置文件。启动 YaST 并切换到 杂项 › 自动安装配置。选择 网络服务 › 用户登录管理,单击 编辑,并配置可用的设置。完成时单击 确定。要保存生成的配置文件,请使用 文件 › 保存

Tip
提示:使用 ldaps://

要使用带有本机 SSL(而不是 TLS)的 LDAP,请添加 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 采用与 NETCONFIG_NTP_POLICY 选项在 /etc/sysconfig/network/config 中相同的取值。最常见的选项是“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 服务器。

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

示例 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>
列表名称,列表元素,描述
监听

主机 监听 设置列表

端口

端口地址

地址

网络地址。如果此条目为空,将采用所有地址。

hosts

主机列表配置

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

描述主机的不同值列表。

modules

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

name

模块名称

用户定义

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

更改

出于历史原因,它始终设置为 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 socket:2

TLS

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

值:YES/NO

Umask

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

例如 177:077 如果您感到偏执。

UmaskAnon

匿名用户的文件创建 umask 值。

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

UmaskLocal

认证用户的 Umask。

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

VerboseLogging

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

值:YES/NO

VirtualUser

通过使用虚拟用户,可以在不影响系统帐户的情况下管理 FTP 帐户。

值:YES/NO

Note
注意:防火墙

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

4.26 TFTP 服务器 编辑源文件

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

使用此功能启用 TFTP(trivial file transfer protocol)服务器。服务器将使用 systemd socket 启动。

请注意,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 Firstboot 工作流 编辑源文件

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

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

4.28 安全设置 编辑源文件

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

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

示例 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 设置) 编辑源文件

设置可能的最小和最大用户和组 ID。

4.28.5 Linux Security Module (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_LOGSROTATE 类似,但不会覆盖日志文件。

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。您可以在 AutoYaST 控制文件中手动使用 uid 指定这样的用户 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>

Optional. Initial group ID. It must be a unique and non-negative number. Moreover it must refer to an existing group.

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 Pre-脚本 编辑源文件

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

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

也可以在 pre-脚本中修改存储设备。例如,您可以创建新的分区或更改某些技术的配置,如 multipath。AutoYaST 在执行完所有 pre-脚本后,始终会再次检查存储设备。

Note
注意:带有确认的 Pre-脚本

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

Note
注意:Pre-脚本和 Zypper

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

pre-script 元素必须如下放置

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

4.31.2 Postpartitioning 脚本 编辑源文件

在 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 Post-脚本 编辑源文件

这些脚本在 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 表示形式
location

定义从哪里获取脚本。位置与配置文件相同(HTTP、FTP、NFS 等)。

<location>http://10.10.0.1/myInitScript.sh</location>

必须定义 locationsource 中的一个。

source

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

<source>
<![CDATA[echo "Testing the init script" >/tmp/init_out.txt]]></source>

必须定义 locationsource 中的一个。

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>shell</interpreter>,而使用 <interpreter>/bin/sh -x</interpreter> 以获得与启用 debug 标志相同的效果。

脚本 XML 表示形式
location

定义从哪里获取脚本。位置与控制文件相同(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 将执行 chroot/mnt 并安装引导加载程序。结果是,要更改新安装的系统中的任何内容,您不再需要使用 /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

为用户设置预选值。文本条目将用此值填充。复选框将为 true 或 false,并且选择将预先选择给定的值。

<default>dc=suse,dc=de</default>

可选。

help

一个可选的帮助文本,显示在问题左侧。

<help>Enter the LDAP server address.</help>

可选。

title

一个可选的标题,显示在问题上方。

<title>LDAP server</title>

可选。

类型

你想要更改的元素的类型。可能的值是 symbolbooleanstringinteger。分区部分的文件系统是一个符号,而用户配置中的 encrypted 元素是一个布尔值。如果你查看控制文件中的 config:type="...." 属性,可以看到该元素的类型。你也可以将 static_text 作为类型使用。 static_text 是一种不需要任何用户输入并且可以显示未包含在帮助文本中的信息的文本。

<type>symbol</type>

可选。默认值为 string。如果类型为 symbol,则必须提供选择元素(如下所示)。

password

如果将此布尔值设置为 true,则会弹出一个密码对话框而不是简单的文本条目。仅当 type 为字符串时,才将此设置为 true 才有意义。

<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 期间询问,并且想在阶段 2 中使用答案,则需要在以 chrooted=false 运行的 chroot 脚本中将答案文件复制到 /mnt/tmp/。使用命令:cp /tmp/my_answer /mnt/tmp/。原因是阶段 1 中的 /tmp 在 RAM 磁盘中,并在重新启动后丢失,但已安装的系统已经挂载到 /mnt/

<file>/tmp/answer_hostname</file>

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

stage

阶段配置安装阶段,在此阶段将弹出问题。你可以将此值设置为 continitialinitial 表示弹出窗口在安装的早期出现,紧接在预脚本运行之后。 cont 表示对话框与问题在第一次重新启动系统后出现,系统第一次启动时出现。在 initial 阶段回答的问题会将答案写入硬盘上的控制文件。你应该知道,如果你在 initial 期间输入纯文本密码。当然,在 cont 阶段询问要使用哪个文件系统是没有意义的。硬盘在该阶段已经分区,并且问题将无效。

<stage>cont</stage>

可选。默认值为 initial

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,并且你 echo 合理的值而不是 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-dialog 后再次读取 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 需要为 Kdump 保留 64 MB 到 128 MB 的额外系统 RAM,以防系统崩溃并且需要生成转储。

本节仅描述如何使用 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 hypervisor 除外,您需要指定 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 转储保存 Edit source

本节描述了崩溃转储将存储在何处以及如何存储。

4.35.2.1 目标 Edit source

元素 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 过滤和压缩 Edit source

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

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

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

4.35.2.3 摘要 Edit source

转储目标设置:XML 表示形式
KDUMP_SAVEDIR

指定将保存转储和相关文件的目标 URL。

<KDUMP_SAVEDIR>file:///var/crash/</KDUMP_SAVEDIR>

required

KDUMP_FREE_DISK_SIZE

保存转储后必须保留的磁盘空间,以 MB 为单位。如果可用空间不足,则不会保存转储。

<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 电子邮件通知 Edit source

配置电子邮件通知,以便在机器崩溃并保存转储时收到通知。

由于 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 内核设置 Edit source

如前所述,将启动一个特殊内核以保存转储。如果您不想使用自动检测机制来确定使用哪个内核(请参阅 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 专家设置 Edit source

专家设置:XML 表示形式
KDUMP_IMMEDIATE_REBOOT

如果 Kdump 已保存转储,则系统应自动重新启动,则为 true,否则为 false。默认情况下,系统会自动重新启动。

<KDUMP_IMMEDIATE_REBOOT
>true</KDUMP_IMMEDIATE_REBOOT>

optional

KDUMP_VERBOSE

位掩码,指定 Kdump 过程应该有多么详细。有关详细信息,请阅读 kdump(5)。

<KDUMP_VERBOSE>3</KDUMP_VERBOSE>

optional

KEXEC_OPTIONS

传递给 kexec 的其他选项,用于加载 Kdump 内核。通常为空。

<KEXEC_OPTIONS>--noio</KEXEC_OPTIONS>

optional

4.36 DNS 服务器 Edit source

可以通过添加 dns-server 资源来配置 Bind DNS 服务器。该资源的三个更直接的属性可以具有 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 服务器 Edit source

资源 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 防火墙配置 Edit source

SuSEfirewall2 已被 firewalld 取代,从 openSUSE Leap 15.0 开始。使用 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 打印机。通常,由于 CUPS 后端 usb 在运行时确定,因此无法提前预测正确的 USB 设备 URI。因此,无法使用 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>

属性

描述

import

true / false

将导入 SSH 密钥。如果设置为 false,则不会导入任何内容。

copy_config

true / false

此外,还将导入 SSH 服务器配置。如果 import 设置为 false,则此设置将无效。

device

Partition

从中导入密钥和配置的分区。如果未设置,则使用包含最近访问的密钥的分区。

4.41 配置管理 编辑源文件

AutoYaST 允许将部分配置委托给 配置管理工具,如 Salt。AutoYaST 负责基本的系统安装(分区、网络设置等),其余配置任务可以委托。

Note
注意:仅支持 Salt

虽然本文档中提到了 Puppet,但仅支持 Salt。尽管如此,请随时报告您可能遇到的任何有关 Puppet 的问题。

AutoYaST 支持两种不同的方法

  • 使用配置管理服务器。在这种情况下,AutoYaST 设置配置管理工具。它连接到主服务器以获取配置系统的说明。

  • 从其他地方(例如,HTTP 服务器或 USB 存储设备)获取配置,并在独立模式下运行配置管理工具。

4.41.1 连接到配置管理服务器 编辑源文件

这种方法尤其适用于已经存在配置管理服务器(Salt 和 Puppet 术语中的 master)的情况。在这种情况下,最困难的部分可能是设置适当的身份验证机制。

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

指向包含文件 default.keydefault.pub 的 HTTP 服务器、硬盘、闪存盘或类似设备的路径。此密钥必须为配置管理主服务器所知。

enable_services

True/False

在客户端安装后启用配置管理服务。默认值为 true

4.41.2 在独立模式下运行 编辑源文件

对于简单的场景,部署配置管理服务器是不必要的。相反,使用 Salt 或 Puppet 以 独立(或 无主)模式运行。

由于没有服务器,AutoYaST 需要知道从哪里获取配置。将配置放入一个 TAR 归档文件,并将其存储在任何地方(例如,闪存盘、HTTP/HTTPS 服务器、NFS/SMB 共享)。

TAR 归档文件必须具有 Salt 服务器中 /srv 下预期的相同布局。这意味着您需要将 Salt 状态放置在 salt 目录中,并将 formulas 放置在单独的 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 归档文件的位置。它可能包含 formulas 和 pillars。文件必须位于 salt 目录中。

pillar_url

URL

包含 pillars 的 TAR 归档文件的位置。

modules_url

URL

Puppet 模块的位置。

4.41.3 SUSE Manager Salt formulas 支持 编辑源文件

AutoYaST 在独立模式下运行时,提供对 SUSE Manager Salt formulas 的支持。如果在 states TAR 归档文件中找到 formula,AutoYaST 将显示一个屏幕,允许用户选择和配置要应用的 formulas。

请记住,此功能违背了 AutoYaST 执行无人值守安装的目的,因为 AutoYaST 将等待用户的输入。

打印此页面