跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 部署指南 / 设置安装服务器 / 准备目标系统的引导
适用范围 SUSE Linux Enterprise Server 12 SP5

9 准备目标系统的引导

可以用多种不同的方法安装 SUSE® Linux Enterprise Server。除了第 6 章 “使用 YaST 进行安装中介绍的常用媒体安装方式之外,还可以选择多种基于网络的方式,甚至可以用完全无人值守的方式来安装 SUSE Linux Enterprise Server

本章中的示例使用 NFS 来提供安装数据。如果要使用 FTP、SMB 或 HTTP,请参见第 8 章 “设置存放安装源的服务器

注意
注意:术语

以下几节中将要存放新安装的 SUSE Linux Enterprise Server 的系统称为目标系统安装目标。术语安装源(repository,以前称为 installation source)用于所有的安装数据源。这包括物理媒体(如 CD 和 DVD)以及在网络中分发安装数据的网络服务器。

此部分讨论复杂引导场景中需要的配置任务。其中包含了 DHCP、PXE 引导、TFTP 和网络唤醒的“准备应用”配置示例。

这些示例假设 DHCP、TFTP 和 NFS 服务器驻留在 IP 为 192.168.1.1 的同一计算机上。所有服务都可以驻留在不同的计算机上,且不会产生任何问题。请务必根据需要更改 IP 地址。

9.1 设置 DHCP 服务

除了向网络客户端提供自动地址分配外,DHCP 服务器还会通告 TFTP 服务器的 IP 地址,以及目标计算机上的安装例程需要提取的文件。必须装载的文件取决于目标计算机的体系结构,以及使用的是不是旧版 BIOS 或 UEFI 引导。

  1. root 登录到主管 DHCP 服务器的计算机。

  2. 通过执行 systemctl enable dhcpd 启用 DHCP 服务器。

  3. 向位于 /etc/dhcpd.conf 的 DHCP 服务器配置文件中的子网配置追加以下几行:

    # The following lines are optional
    option domain-name "my.lab";
    option domain-name-servers 192.168.1.1;
    option routers 192.168.1.1;
    option ntp-servers 192.168.1.1;
    ddns-update-style none;
    default-lease-time 3600;
    
    # The following lines are required
    option arch code 93 = unsigned integer 16; # RFC4578
    subnet 192.168.1.0 netmask 255.255.255.0 {
     next-server 192.168.1.1;
     range 192.168.1.100 192.168.1.199;
     default-lease-time 3600;
     max-lease-time 3600;
     if option arch = 00:07 or option arch = 00:09 {
       filename "/EFI/x86/grub.efi";
     }
     else if option arch = 00:0b {
       filename "/EFI/aarch64/bootaa64.efi";
     }
     else  {
       filename "/BIOS/x86/pxelinux.0";
     }
    }

    此配置示例使用的子网为 192.168.1.0/24,DHCP、DNS 和网关配置在 IP 为 192.168.1.1 的服务器上。请务必根据您的网络布局更改使用的所有 IP 地址。关于 dhcpd.conf 中可用选项的更多信息,请参见 dhcpd.conf 手册页。

  4. 执行 systemctl restart dhcpd 重启动 DHCP 服务器。

如果打算使用 SSH 来远程控制 PXE 和网络唤醒安装,请指定 DHCP 应提供给安装目标的 IP 地址。要实现此设置,请根据以下示例修改上述的 DHCP 配置:

group {
 host test {
   hardware ethernet MAC_ADDRESS;
   fixed-address IP_ADDRESS;
   }
}

host 语句引入了安装目标的主机名。要将主机名和 IP 地址与特定主机绑定,则必须了解系统的硬件 (NAC) 地址并指定它。请将本例中使用的所有变量替换为符合您环境的实际值。

在重启动 DHCP 服务器之后,它将向所指定的主机提供一个静态 IP,从而使您能够通过 SSH 连接到该系统。

9.2 设置 TFTP 服务器

如果使用基于 SUSE 的安装,您可以使用 YaST 来设置 TFTP 服务器。另外,还可以手动设置。目标系统成功引导并发出请求后,FTP 服务器就会将引导映像发送到该目标系统。

9.2.1 使用 YaST 设置 TFTP 服务器

  1. root 身份登录。

  2. 启动 YaST › 网络服务 › TFTP 服务器,并安装请求的包。

  3. 单击启用以确保服务器启动并包含在引导例程中。之后您就无需为此再进行任何操作。xinetd 将在引导时启动。

  4. 单击打开防火墙中的端口以在您计算机上运行的防火墙中打开相应的端口。如果您的服务器上未运行任何防火墙,则该选项不可用。

  5. 单击浏览以查找引导映像目录。系统会自动创建并选择默认目录 /srv/tftpboot

  6. 单击完成以应用设置并启动服务器。

9.2.2 手动设置 TFTP 服务器

  1. root 登录,然后安装 tftp 包和 xinetd 包。

  2. 修改位于 /etc/xinetd.d 下的 xinetd 的配置,以确保 TFTP 服务器在引导时启动:

    1. 如果该配置文件不存在,请使用 touch tftp 命令在该目录下创建一个名为 tftp 的文件。然后运行 chmod 755 tftp

    2. 打开文件 tftp,添加以下几行:

      service tftp
      {
              socket_type            = dgram
              protocol               = udp
              wait                   = yes
              user                   = root
              server                 = /usr/sbin/in.tftpd
              server_args            = -s /srv/tftpboot
              disable                = no
      }
    3. 保存该文件,然后使用 systemctl restart xinetd 命令重启动 xinetd。

9.3 在 TFTP 服务器上安装文件

以下过程介绍如何在 32 位和 64 位 x86 体系结构上为配有 UEFI 和 BIOS 的目标计算机准备服务器。已经为 AArch64 系统提供了准备好的结构。

9.3.1 准备结构

在下面的过程中,请将 OS_VERSIONSP_VERSION 替换为所用的操作系统和服务包版本。例如,使用 sles12sp5

  1. /srv/tftpboot 中创建一个结构以支持各种选项。

    root # mkdir -p /srv/tftpboot/BIOS/x86
    root # mkdir -p /srv/tftpboot/EFI/x86/boot
    root # mkdir -p /srv/tftpboot/EFI/aarch64/boot
    root # mkdir -p /srv/install/x86/OS_VERSION/SP_VERSION/cd1
    root # mkdir -p /srv/install/aarch64/OS_VERSION/SP_VERSION/cd1
  2. 从 SUSE 网站下载您需要的所有体系结构对应的 SUSE Linux Enterprise Server 12 SP5 DVD ISO 映像。

  3. 第 8.6 节 “使用服务器上安装媒体的 ISO 映像”中所述装入 ISO 文件。要在重引导后使文件可用,请在 /etc/fstab 中创建一项。要进行标准安装,只需要 DVD 1。

    root # mount -o loop PATH_TO_ISO /srv/install/ARCH/OS_VERSION/SP_VERSION/cd1/

    对所有所需体系结构重复此步骤,并将 ARCH 替换为 x86aarch64,将 PATH_TO_ISO 替换为相应 ISO 文件的路径。

  4. 将 x86 BIOS 和 UEFI 引导所需的 kernelinitrdmessage 文件复制到相应的位置。

    root # cd /srv/install/x86/OS_version/SP_version/cd1/boot/x86_64/loader/
    root # cp -a linux initrd message /srv/tftpboot/BIOS/x86/
  5. 确保通过 NFS 可以使用路径 /srv/install。有关细节,请参见第 8.2 节 “手动设置 NFS 安装源”

9.3.2 用于 x86 的 BIOS 文件

  1. pxelinux.0 复制到 TFTP 文件夹并为配置文件准备一个子文件夹。

    root # cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot/BIOS/x86/
    root # mkdir /srv/tftpboot/BIOS/x86/pxelinux.cfg
  2. 创建 /srv/tftpboot/BIOS/x86/pxelinux.cfg/default 并添加以下几行:

    default install
    
    # hard disk
    label harddisk
     localboot -2
    # install
    label install
     kernel linux
     append initrd=initrd install=nfs://192.168.1.1:/srv/install/x86/OS_version/SP_version/cd1
    
    display message
    implicit 0
    prompt 1
    timeout 5
  3. 编辑文件 /srv/tftpboot/BIOS/x86/message 以反映您刚编辑过的 default 文件。

    Welcome to the Installer Environment!
    
    To start the installation enter 'install' and press <return>.
    
    Available boot options:
     harddisk   - Boot from Hard Disk (this is default)
     install    - Installation

9.3.3 用于 x86 的 UEFI 文件

在下面的过程中,请将 OS_versionSP_version 替换为所用的操作系统和服务包版本。例如,使用 sles12sp5

  1. 复制 UEFI 引导所需的所有 grub2 文件。

    root # cd /srv/install/x86/OS_version/SP_version/cd1/EFI/BOOT
    root # cp -a bootx64.efi grub.efi MokManager.efi /srv/tftpboot/EFI/x86/
  2. 将内核和 initrd 文件复制到目录结构。

    root # cd /srv/install/x86/OS_version/SP_version/cd1/boot/x86_64/loader/
    root # cp -a linux initrd /srv/tftpboot/EFI/x86/boot
  3. 创建文件 /srv/tftpboot/EFI/x86/grub.cfg,在其中至少包含以下内容:

    set timeout=5
    menuentry 'Install OS_version SP_version for x86_64' {
      linuxefi /EFI/x86/boot/linux \
       install=nfs://192.168.1.1/srv/install/x86/OS_version/SP_version/cd1
      initrdefi /EFI/x86/boot/initrd
    }

9.3.4 AArch64 的 UEFI 文件

在下面的过程中,请将 OS_versionSP_version 替换为所用的操作系统和服务包版本。例如,使用 sles12sp5

  1. 执行此操作的方法与 x86_64 EFI 环境的方法极其相似。首先,复制 grub2-efi 环境中 UEFI 引导所需的文件。

    root # cd /srv/install/aarch64/OS_version/SP_version/cd1/EFI/BOOT
    root # cp -a bootaa64.efi /srv/tftpboot/EFI/aarch64/
  2. 将内核和 initrd 复制到目录结构。

    root # cd /srv/install/aarch64/OS_version/SP_version/cd1/boot/aarch64
    root # cp -a linux initrd /srv/tftpboot/EFI/aarch64/boot
  3. 现在,创建文件 /srv/tftpboot/EFI/grub.cfg 并添加以下内容:

    menuentry 'Install OS_version SP_version' {
      linux /EFI/aarch64/boot/linux network=1 usessh=1 sshpassword="suse" \
       install=nfs://192.168.1.1:/srv/install/aarch64/OS_version/SP_version/cd1 \
       console=ttyAMA0,115200n8
      initrd /EFI/aarch64/boot/initrd
    }

    通过在配置文件中添加以上内容,增加了一些可启用串行控制台并允许通过 SSH 进行安装的其他选项,这对没有标准 KVM 控制台界面的系统而言非常实用。您会发现,此设置适用于特定的 ARM 平台。

9.4 PXELINUX 配置选项

此处列出的选项是 PXELINUX 配置文件中所有可用选项中的一部分。

APPEND OPTIONS

用于向内核命令行添加一个或多个选项。 添加的这些选项对自动引导和手动引导都适用。 这些选项添加在内核命令行的最前面,通常允许用显式输入的内核选项覆盖它们。

APPEND -

表示不追加任何内容。在 LABEL 段中用一个连字符作为参数的 APPEND 可用于覆盖全局 APPEND

DEFAULT KERNEL_OPTIONS...

用于设置默认内核命令行。如果 PXELINUX 自动引导,则该选项的作用相当于已在引导提示符处输入了在 DEFAULT 后输入的所有内容(表示自动引导的 auto 选项除外,它是自动添加的)。

如果配置文件不存在或其中未定义 DEFAULT 项,则默认使用内核名称linux且不带任何选项。

IFAPPEND 标志

根据标志值将特定项添加到内核命令行。只有 PXELINUX 提供 IFAPPEND 项。标志需赋一个值,具体如表 9.1 “从 IFAPPEND 中生成并添加内核命令行选项。”所述:

表 9.1︰ IFAPPEND 中生成并添加内核命令行选项。

自变量

生成内核命令行/说明

1

ip=CLIENT_IP:BOOT_SERVER_IP:GW_IP:NETMASK

根据从 DHCP//BOOTP 或 PXE 引导服务器输入的内容替换占位符。

注,此选项不可替换为在引导系统中运行 DHCP 客户端。若不定期更新,PXE BIOS 所获得的租用将失效,致使 DHCP 服务器可重新使用该 IP 地址。

2

BOOTIF=MAC_ADDRESS_OF_BOOT_INTERFACE

当安装服务器在探测一个又一个的 LAN 接口直至收到 DHCP 服务器答复时,在这段期间若要有效避免超时现象,可使用该选项。使用此选项可让 initrd 程序确定系统是从哪个接口引导的。linuxrc 会读取此选项并使用该网络接口。

4

SYSUUID=SYSTEM_UUID

以小写十六进制添加 UUIDs,具体请参见 /usr/share/doc/packages/syslinux/pxelinux.txt

LABEL LABEL KERNEL IMAGE APPEND OPTIONS...

表示如果输入了 LABEL 作为要引导的内核,则 PXELINUX 应改为引导 IMAGE,并且应使用指定的 APPEND 选项,而不是使用文件的全局部分中指定的选项(在首个 LABEL 命令之前)。IMAGE 的默认值与 LABEL 的相同,如果未指定 APPEND,则默认情况下使用 global 项(如果有)。最多允许 128 个 LABEL 条目。

PXELINUX 使用以下语法:

label MYLABEL
  kernel MYKERNEL
  append MYOPTIONS

标签的数据报处理如同文件名一样,它们在数据报处理之后必须唯一。例如,v2.6.30v2.6.31这两个标签在 PXELINUX 下是无法区分的,因为它们在数据报处理之后的 DOS 文件名相同。

该内核不必是 Linux 内核。它也可以是引导扇区或 COMBOOT 文件。

LOCALBOOT TYPE

在 PXELINUX 上,指定 LOCALBOOT 0 取代 KERNEL 选项表示调用该特定标签,这样就会从本地磁盘引导而不是从内核引导。

自变量

描述

0

执行正常引导

4

在“通用网络驱动程序接口”(UNDI)驱动程序仍然驻留在内存中的情况下执行本地引导

5

在整个 PXE 堆栈(包括 UNDI 驱动程序)仍然驻留于内存中的情况下执行本地引导

不定义所有其他的值。如果对 UNDI 或 PXE 堆栈不甚了解,请指定 0

TIMEOUT TIME-OUT

表示在自动引导之前在引导提示符下等待的时间(以 1/10 秒为单位)。用户按了键盘上的任意键后,超时将会取消(假设从用户完成命令开始)。如果超时值为零,则将完全禁用超时(这也是默认值)。允许的最大超时值为 35996(即小于一小时)。

PROMPT flag_val

如果 flag_val 为 0,则仅当按下 ShiftAlt 键,或者在 Caps LockScroll Lock 状态下,才显示引导提示符(这是默认设置)。如果 flag_val 为 1,则始终显示引导提示符。

F2  FILENAME
F1  FILENAME
..etc...
F9  FILENAME
F10 FILENAME

当在引导提示符下按下功能键时,将显示指定的文件。这可以用于执行预引导联机帮助(大致是关于内核命令行选项)。为了向后兼容先前的发行版,F10 也可以输入为 F0。请注意目前尚无法将文件名与 F11F12 绑定。

9.5 准备目标系统的 PXE 引导

请将 PXE 选项包含在 BIOS 引导序列中来为系统 BIOS 的 PXE 引导作准备。

警告
警告:BIOS 引导顺序

在 BIOS 中,不要将 PXE 选项置于硬盘引导选项的前面。否则,每次引导系统时,系统都会尝试重新自我安装。

9.6 准备目标系统的网络唤醒

网络唤醒 (WOL) 要求在安装之前启用相应的 BIOS 选项。此外,请记下目标系统的 MAC 地址。该数据是启动网络唤醒所需要的。

9.7 局域网唤醒

“网络唤醒”允许通过一个发送时包含计算机 MAC 地址的特定网络包来打开该计算机的电源。由于全球的每台计算机都有一个唯一的 MAC 标识,所以无需担心会意外地错开计算机的电源。

重要
重要:不同网段的“网络唤醒”

如果控制计算机与要唤醒的安装目标不在同一网段,请将要发送的 WOL 请求配置为多点广播,或远程控制该网段上的某台计算机充当这些请求的发送方。

SUSE Linux Enterprise Server 的用户可以使用名为 WOL 的 YaST 模块来方便地配置网络唤醒。基于 SUSE Linux 操作系统的其他版本的用户可以使用命令行工具。

9.8 使用 YaST 的“网络唤醒”

  1. root 身份登录。

  2. 启动 YaST ›  网络服务 ›  WOL

  3. 单击添加并输入目标系统的主机名和 MAC 地址。

  4. 要打开此计算机,请选择适当的输入框并单击唤醒

9.9 从 CD 或 USB 驱动器而非 PXE 引导

您也可以使用包含小型系统映像的 CD、DVD 或 USB 驱动器来引导,而不通过 PXE 引导。装载完内核和 initrd 后,将会通过 NFS 装载必要文件。可使用 mksusecd 创建可引导映像。如果目标计算机不支持 PXE 引导,此选项可能很有用。

使用 sudo zypper in mksusecd 可安装该工具。使用以下命令创建可引导 ISO 映像:

tux > mksusecd --create image.iso \
--net=nfs://192.168.1.1:/srv/install/ARCH/OS_VERSION/SP_VERSION/cd1  \
/srv/tftpboot/EFI/ARCH/boot

ARCH 替换为目标系统体系结构对应的文件夹。另外,根据第 9.3 节 “在 TFTP 服务器上安装文件”中的路径替换 OS_versionSP_version

对于 --net 选项,您可以不使用 NFS 服务器,而是使用 HTTP 储存库,例如 openSUSE 储存库:

tux > mksusecd --create image.iso \
--net=http://download.opensuse.org/tumbleweed/repo/oss/suse \
/srv/tftpboot/EFI/ARCH/boot

image.iso 可写入到 DVD 或 CD,或使用 dd 写入到 USB 记忆棒:

root # dd if=image.iso of=/dev/USB_DEVICE

USB_DEVICE 替换为 USB 记忆棒的设备名称。全面检查设备名称,以确保您未意外损坏其他驱动器上的数据。