9 自动安装过程 #
9.1 简介 #
当系统引导进入自动安装并已检索到控制文件后,YaST 将根据控制文件中提供的信息配置系统。所有配置设置都汇总在一个窗口中,默认会显示该窗口。但如果需要全自动化安装,则应停用该窗口。
当 YaST 显示配置摘要时,只表示 YaST 探测到了硬件,并已准备好自动安装系统。此时系统中尚未发生任何更改。如果出现任何错误,您仍可以中止该过程。
无需任何图形适配器或监视器也可自动安装系统。不过,还是建议将监视器挂接到客户端计算机,以便可以监督安装过程并在出错时获得反馈。在图形界面与基于文本的 Ncurses 界面之间进行选择。对于无头客户端,可以使用串行控制台监视系统消息。
9.1.1 X11 界面(图形) #
这是自动安装时使用的默认界面无需指定特殊变量即可激活此界面。
9.1.2 串行控制台 #
    通过将关键字 console(例如 console=ttyS0)添加到内核的命令行,便可开始使用串行控制台安装系统。这会以控制台模式启动 linuxrc,然后以串行控制台模式启动 YaST。
   
9.1.3 基于文本的 YaST 安装 #
    您也可以在命令行上激活此选项。要以文本模式启动 YaST,请在命令行上添加 textmode=1。
   
安装小于 64 MB 的客户端或者不应配置 X11 时(尤其是在无头计算机上),建议以文本模式启动 YaST。
9.2 选择合适的引导媒体 #
可通过不同的方法引导客户端。计算机可从其网络接口卡 (NIC) 引导,以通过 DHCP 或 TFTP 接收引导映像。或者,也可以从闪存盘(例如 USB 记忆棒)或可引导的 DVD-ROM 装载适当的内核和 initrd 映像。
   YaST 在启动时会检查引导媒体或 initrd 根目录中的 autoinst.xml,如果找到该文件,则切换到自动安装。如果控制文件使用了不同的名称或位于其他位置,请在内核命令行上使用参数 AutoYaST=URL 指定其位置。
  
    或者,您也可以将 autoinst.xml 放在标记为 OEMDRV 的物理或虚拟挂载的设备中。在此情况下,您不需要在内核命令行中指定 autoinst.xml 的位置。autoinst.xml 必须位于该设备的根目录中。
  
9.2.1 从闪存盘(例如 USB 记忆棒)引导 #
出于测试/救援目的,或者在 NIC 没有 PROM 或 PXE 的情况下,您可以构建一张可引导闪存盘来配合 AutoYaST 使用。闪存盘也可以储存控制文件。
使用以下命令将安装映像的内容复制到可卸闪存盘。
>sudodd if=IMAGE of=FLASH_DISK bs=4M && sync
     需将 IMAGE 替换为 SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso 映像文件的路径。需将 FLASH_DISK 替换为闪存设备。要识别设备,请插入该设备并运行:
    
# grep -Ff <(hwinfo --disk --short) <(hwinfo --usb --short)
      disk:
      /dev/sdc             General USB Flash Disk确保设备的大小足以容纳所需的映像。可使用以下命令检查设备的大小:
# fdisk -l /dev/sdc | grep -e "^/dev"
      /dev/sdc1  *     2048 31490047 31488000  15G 83 Linux
     在此示例中,设备的容量为 15 GB。对于 SLE-15-SP6-Full-ARCH-GM-media1.iso 使用的命令是:
    
dd if=SLE-15-SP6-Full-ARCH-GM-media1.iso of=/dev/sdc bs=4M && sync
     在运行 dd 命令时,不得挂载该设备。请注意,分区中的所有数据都将被删除!
    
9.2.2 从 SUSE Linux Enterprise 安装媒体引导 #
    您可将 SUSE Linux Enterprise 安装媒体(SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso)与其他媒体结合使用。例如,可以通过闪存盘或网络上的指定位置提供控制文件。或者,创建一个包含控制文件的自定义安装媒体。
   
9.2.3 通过 PXE 经由网络引导 #
通过 PXE 引导需要提供您网络中的 DHCP 和 TFTP 服务器。然后,计算机无需物理媒体即可引导。有关设置所需基础结构的说明,请参见第 12 章 “远程安装”。
如果您通过 PXE 安装,将无限循环地运行安装。发生此情况的原因是:在首次重引导后,计算机将在第二个安装阶段再次执行 PXE 引导并重启动安装,而不是从硬盘引导。
有多种方法可解决此问题:您可以使用 HTTP 服务器来提供 AutoYaST 控制文件。或者不使用静态控制文件,而是在 Web 服务器上运行一个 CGI 脚本,该脚本可提供控制文件并更改目标主机的 TFTP 服务器配置。这样,下一次就会默认从硬盘完成计算机的 PXE 引导。
另一种方法是使用 AutoYaST 通过控制文件上载目标主机的新 PXE 引导配置。
<pxe>
  <pxe_localboot config:type="boolean">true</pxe_localboot>
  <pxelinux-config>
    DEFAULT linux
    LABEL linux
    localboot 0
  </pxelinux-config>
  <tftp-server>192.168.1.115</tftp-server>
  <pxelinux-dir>/pxelinux.cfg</pxelinux-dir>
  <filename>__MAC__</filename>
</pxe>
    此项会在临近首次重引导前将目标主机的新配置上载到 TFTP 服务器。在大多数安装中,TFTP 守护程序都是以用户 nobody 的身份运行的。您需要确保此用户对 pxelinux.cfg 目录拥有写入权限。您还可以配置要上载的文件名。如果您使用 “magic”
__MAC__ 文件名,该文件名将是计算机的 MAC 地址,例如 01-08-00-27-79-49-ee。如果缺少文件名设置,将使用 IP 地址作为文件名。
   
要在同一台计算机上执行另一次自动安装,需从 TFTP 服务器中去除该文件。
9.3 调用自动安装过程 #
9.3.1 命令行选项 #
    添加命令行变量 autoyast 会导致 linuxrc 以自动模式启动。linuxrc 程序会在以下位置搜索应与主控制文件区分开的配置文件:
   
- 在用于引导系统的初始 RAM 磁盘的根目录中; 
- 在引导媒体的根目录中。 
linuxrc 配置文件支持多个关键字。有关 linuxrc 工作原理和其他关键字的详细说明,请参见附录 C “高级 linuxrc 选项”。一些较常见的关键字包括:
   
- autoupgrade
- 启动使用 AutoYaST 的自动升级;请参见第 4.11 节 “升级”。 
- autoyast
- 用于自动安装的控制文件的位置;有关细节,请参见 AutoYaST 控制文件位置。 
- ifcfg
- 配置并启动网络。如果要从远程位置提取 AutoYaST,则需要此关键字。有关详细信息,请参见第 C3 节 “高级网络设置”。 
- insmod
- 要装载的内核模块 
- install
- 安装目录的位置,例如 - install=nfs://192.168.2.1/CDs/。注意:禁用 SSL 检查- 当您使用 HTTPS 时,系统默认会启用 SSL 检查。如果需要,您可以在 HTTPS URL 中追加 - ssl_verify=no来禁用 SL 检查,如下例所示:- install=https://192.168.2.1/CDs/?ssl_verify=no - 如果要传递多个查询选项,请以 & 分隔: - install=https://192.168.2.1/CDs/?foo=bar&ssl_verify=no - 有关详细信息,请参见 - man 8 zypper的“FTP/HTTP/HTTPS 目录树”部分。
- instmode
- 安装模式,例如 - http、- nfs等(如果设置了- install,则不需要)。
- rootpassword
- root 用户的口令(如果未在 AutoYaST 配置文件中指定) 
- server
- 要连接以获取源目录的服务器 (NFS) 
- serverdir
- NFS 服务器上的目录 
- y2confirm
- 即使在控制文件中设置了 <confirm>no</confirm>,也会显示确认建议。 
    这些变量和关键字会将系统启动到可让 YaST 接管主控制文件的位置。目前,源媒体是由系统自动发现的,在某些情况下,无需向 linuxrc 发出任何指令,即可启动自动安装过程。
   
    传统 linuxrc 配置文件 (info) 的作用是为客户端提供有关安装服务器和源位置的足够信息。通常不需要此文件,但在不使用 DHCP 和 BOOTP 的特殊网络环境中,或者在需要装载特殊内核模块时,则需要此文件。
   
    您可以使用内核命令行向 linuxrc 传递关键字。这可通过多种方式实现。您可以像平时一样,在引导时以交互方式结合使用其他内核参数指定 linuxrc 关键字。也可以将内核参数插入到可从网络引导的自定义磁盘映像。还可以配置 DHCP 服务器,结合 Etherboot 或 PXE 来传递内核参数。
   
autoyast2 引导选项而不是 autoyast
autoyast2 选项类似于 autoyast 选项,但 linuxrc 会分析提供的值,并(举例而言)在需要时尝试配置网络。本文档不会介绍此选项。有关 AutoYaST 与 linuxrc URI 语法之间差异的信息,请参见 linuxrc 附录:附录 C “高级 linuxrc 选项”。不支持 AutoYaST 的规则和类。
    
    可按以下列表中所述的格式使用命令行变量 autoyast。
   
- URI 的格式
- 控制文件位置 URI 的 - autoyast语法可能会让人感到迷惑。格式为 SCHEMA://HOST/PATH-TO-FILE。要使用的正斜线数目视情况而异。如果控制文件位于远程位置,则 NFS 服务器的 URI 包含两条斜线,如此示例所示:- autoyast=nfs://SERVER/PATH。- 如果控制文件位于本地文件系统,则 URI 将不相同。例如, - autoyast=usb:///profile.xml与- autoyast=usb://localhost/profile.xml相同。可以省略本地主机名,但必须保留第三条斜线。- autoyast=usb://profile.xml将会失败,因为- profile.xml会被解释为主机名。
- 无需指定控制文件规范时
- 对于升级,无需为自动脱机升级指定 - autoyast变量,具体请参见过程 4.1 “以脱机升级模式启动 AutoYaST”。- 对于全新安装,如果名为 - autoyast的文件位于以下三个位置之一,则会启动- autoinst.xml:- 安装闪存盘(例如 USB 记忆棒)的根目录 
- 安装媒体的根目录 
- 用于引导系统的初始 RAM 磁盘的根目录 
 
- autoyast=file:///PATH
- 当控制文件位于任何本地文件系统(包括 CD 或 USB 驱动器等挂载的外部设备)的顶级目录中时,在相对于源根目录的指定路径(例如 - file:///autoinst.xml)中查找控制文件。(这等同于- file://localhost/autoinst.xml。)
- autoyast=device://DEVICE/FILENAME
- 在储存设备上查找控制文件。不要指定设备的完整路径,而是仅指定设备名(例如 - device://vda1/autoyast.xml)。您也可以省略指定设备并触发- autoyast来搜索所有设备,例如- autoyast=device://localhost/autoinst.xml或- autoyast=device:///autoinst.xml。
- autoyast=nfs://SERVER/PATH
- 在 NFS 服务器上查找控制文件。 
- autoyast=http://[user:password@]SERVER/PATH
- 使用 HTTP 协议从 Web 服务器检索控制文件。用户名和口令可选择性指定。 
- autoyast=https://[user:password@]SERVER/PATH
- 使用 HTTPS 从 Web 服务器检索控制文件。用户名和口令可选择性指定。 
- autoyast=tftp://SERVER/PATH
- 通过 TFTP 检索控制文件。 
- autoyast=ftp://[user:password@]SERVER/PATH
- 通过 FTP 检索控制文件。用户名和口令可选择性指定。 
- autoyast=usb:///PATH
- 从 USB 设备检索控制文件( - autoyast将搜索所有已连接的 USB 设备)。
- autoyast=relurl://PATH
- 从安装源检索控制文件:从默认安装源,或者从 - install=INSTALLATION_SOURCE_PATH中定义的安装源。
- autoyast=repo:/PATH
- 从指定路径检索控制文件。路径必须相对于安装源。 
- autoyast=cifs://SERVER/PATH
- 在 CIFS 服务器上查找控制文件。 
- autoyast=label://LABEL/PATH
- 在具有指定标签的设备上搜索控制文件。 
    可以使用不同类型的基础结构和源媒体来实现多种自动安装方案。最简单的方法是使用 SUSE Linux Enterprise Server
 的适当安装媒体(SLE-15-SP6-Online-ARCH-GM-media1.iso 或 SLE-15-SP6-Full-ARCH-GM-media1.iso)。但是,要启动自动安装过程,应在系统引导时输入自动安装命令行变量,并且控制文件应该可供 YaST 访问。
   
在脚本上下文中,您可以使用虚拟机的串行控制台,如此便可在文本模式下操作。然后,您可以从 expect 脚本或等效脚本传递所需的参数。
以下方案列表解释了控制文件的提供方式:
- 使用 SUSE Linux Enterprise Server 安装媒体
- 使用原始安装媒体(需要 - SLE-15-SP6-Online-ARCH-GM-media1.iso或- SLE-15-SP6-Full-ARCH-GM-media1.iso)时,必须能通过闪存盘(例如 USB 记忆棒)或网络访问控制文件:- 闪存盘(例如 USB 记忆棒): 通过 - autoyast=usb://PATH选项访问控制文件。- 网络: 通过以下命令访问控制文件: - autoyast=nfs://..、- autoyast=ftp://..、- autoyast=http://..、- autoyast=https://..、- autoyast=tftp://..或- autoyast=cifs://..。需使用 linuxrc 中的引导选项定义网络访问。可以通过 DHCP 执行此操作:- netsetup=dhcp autoyast=http://163.122.3.5/autoyast.xml
- 使用自定义安装媒体
- 在这种情况下,您可以直接在安装媒体中包含控制文件。如果将控制文件放入根目录并将其命名为 - autoinst.xml,则系统会自动找到并在安装时使用它。否则,请使用- autoyast=file:///PATH指定控制文件的路径。
- 使用网络安装源
- 这是最重要的选项,因为多个计算机的安装通常是使用 SLP 或 NFS 服务器以及其他网络服务(例如 BOOTP 和 DHCP)完成的。让控制文件可用的最简单方法是将它放入安装源的根目录,并将它命名为 - autoinst.xml。在这种情况下,系统会自动找到并在安装时使用它。控制文件还可以驻留在以下位置:- 闪存盘(例如 USB 记忆棒): 通过 - autoyast=usb://PATH选项访问控制文件。- 网络: 通过以下命令访问控制文件: - autoyast=nfs://..、- autoyast=ftp://..、- autoyast=http://..、- autoyast=https://..、- autoyast=tftp://..或- autoyast=cifs://..。
     在安装过程中,要在不需要网络或者网络不可用的情况下禁用网络(例如,从 DVD-ROM 自动安装时),请使用 linuxrc 选项 netsetup=0 禁用网络设置。
    
在提供了所有 AutoYaST 调用选项的情况下,可通过以下方式指定控制文件的位置:
- 指定控制文件的确切位置: - autoyast=http://192.168.1.1/control-files/client01.xml 
- 指定多个控制文件所在的目录: - autoyast=http://192.168.1.1/control-files/ - 在本例中,将使用 IP 的十六进制数字表示形式检索相关控制文件,如下所述。 - 此目录的路径需以 - /结尾。- 目录中的文件不得带有任何扩展名(例如 - .xml)。因此文件名只需是 IP 地址或 MAC 地址。- >ls -r control-files C00002 0080C8F6484C default
如果只定义了路径前缀变量,YaST 将通过以下方式从指定的位置提取控制文件:
- 首先,YaST 将使用自身的大写十六制 IP 地址(例如 - 192.0.2.91 -> C000025B)搜索控制文件。
- 如果未找到此文件,YaST 将去除一个十六进制数字并重试。此操作将不断重复,直到找到具有正确名称的文件。最终,它会尝试查找使用客户端 MAC 地址作为文件名的文件(mac 应采用以下语法: - 0080C8F6484C),如果未找到,则查找名为- default(小写)的文件。
例如,对于 192.0.2.91,HTTP 客户端将尝试:
C000025B C000025 C00002 C0000 C000 C00 C0 C 0080C8F6484C default
(按上面所示的顺序)。
    要确定客户端 IP 地址的十六进制表示形式,请使用 syslinux 软件包中提供的名为 /usr/bin/gethostip 的实用程序。
   
> /usr/bin/gethostip 10.10.0.1
10.10.0.1 10.10.0.1 0A0A00019.3.2 自动安装单个系统 #
在未建立任何网络连接的情况下自动安装某个系统的最简单方法是使用原始 SUSE Linux Enterprise Server DVD-ROM 和闪存盘(例如 USB 记忆棒)。您既不需要设置安装服务器,也不需要设置网络环境。
    创建控制文件并将其命名为 autoinst.xml。将文件 autoinst.xml 复制到闪存盘。
   
9.3.3 将 linuxrc info 文件与 AutoYaST 控制文件结合使用 #
    如果您选择使用 linuxrc 文件或者以引导选项的形式向 info 传递信息,可以将关键字集成到 AutoYaST 控制文件中。如下例所示添加 info_file 部分。此部分包含以冒号分隔的关键字-值对,每行包含一对。
   
linuxrc 选项 #....
  <install>
....
    <init>
        <info_file>
install: nfs://192.168.1.1/CDs/full-x86_64
dud: https://example.com/driver_updates/filename.dud
upgrade: 1
textmode: 1
      </info_file>
    </init>
......
  </install>
  ....
    请注意,autoyast2 关键字必须指向同一个文件。如果该文件位于闪存盘(例如 USB 记忆棒)上,则需要使用 usb:// 选项。如果 info 文件储存在初始 RAM 磁盘中,则需要使用 file:/// 选项。
   
9.4 系统配置 #
自动安装期间的系统配置是整个过程最重要的部分。在前面的章节中可以看到,几乎所有设置都可以在目标系统上自动配置。除了预定义的指令外,您始终可以使用后脚本来更改系统中的其他设置。此外,您也可以更改任何系统变量,如果需要,还可以将完整的配置文件复制到目标系统。
9.4.1 安装后配置和系统配置 #
在目标系统上安装完最后一个软件包后会直接启动安装后和系统配置,并且在首次引导系统后还会持续进行该配置。
在首次引导系统之前,AutoYaST 会写入安装期间收集的所有数据,并在指定的位置写入引导加载程序。除了这些常规任务外,AutoYaST 还会按照控制文件中的指定执行 chroot 脚本。请注意,这些脚本是在尚未挂载系统的情况下执行的。
    如果安装了非默认的内核,则需要进行硬性重引导。也可以在自动安装期间强制执行硬性重引导,而不管安装了哪个内核。使用 general 资源的 reboot 属性(请参见第 4.1 节 “一般选项”)。
   
9.4.2 系统自定义 #
大部分系统自定义操作都是在第二个安装阶段完成的。如果您需要完成无法通过 AutoYaST 资源完成的自定义操作,请使用安装后脚本做进一步的修改。
您可以通过编辑控制文件或使用配置系统,在控制文件中定义无限数量的自定义脚本。