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 引导。
以
root
登录到主管 DHCP 服务器的计算机。通过执行
systemctl enable dhcpd
启用 DHCP 服务器。向位于
/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
手册页。执行
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 服务器 #
以
root
身份登录。启动
› ›单击
以确保服务器启动并包含在引导例程中。之后您就无需为此再进行任何操作。xinetd 将在引导时启动。单击
以在您计算机上运行的防火墙中打开相应的端口。如果您的服务器上未运行任何防火墙,则该选项不可用。单击
以查找引导映像目录。系统会自动创建并选择默认目录/srv/tftpboot
。单击
以应用设置并启动服务器。
9.2.2 手动设置 TFTP 服务器 #
以
root
登录,然后安装tftp
包和xinetd
包。修改位于
/etc/xinetd.d
下的 xinetd 的配置,以确保 TFTP 服务器在引导时启动:如果该配置文件不存在,请使用
touch tftp
命令在该目录下创建一个名为tftp
的文件。然后运行chmod 755 tftp
。打开文件
tftp
,添加以下几行:service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /srv/tftpboot disable = no }
保存该文件,然后使用
systemctl restart xinetd
命令重启动 xinetd。
9.3 在 TFTP 服务器上安装文件 #
以下过程介绍如何在 32 位和 64 位 x86 体系结构上为配有 UEFI 和 BIOS 的目标计算机准备服务器。已经为 AArch64 系统提供了准备好的结构。
9.3.1 准备结构 #
在下面的过程中,请将 OS_VERSION 和 SP_VERSION 替换为所用的操作系统和服务包版本。例如,使用 sles12
和 sp5
。
在
/srv/tftpboot
中创建一个结构以支持各种选项。root #
mkdir -p /srv/tftpboot/BIOS/x86root #
mkdir -p /srv/tftpboot/EFI/x86/bootroot #
mkdir -p /srv/tftpboot/EFI/aarch64/bootroot #
mkdir -p /srv/install/x86/OS_VERSION/SP_VERSION/cd1root #
mkdir -p /srv/install/aarch64/OS_VERSION/SP_VERSION/cd1从 SUSE 网站下载您需要的所有体系结构对应的 SUSE Linux Enterprise Server 12 SP5 DVD ISO 映像。
按第 8.6 节 “使用服务器上安装媒体的 ISO 映像”中所述装入 ISO 文件。要在重引导后使文件可用,请在
/etc/fstab
中创建一项。要进行标准安装,只需要 DVD 1。root #
mount -o loop PATH_TO_ISO /srv/install/ARCH/OS_VERSION/SP_VERSION/cd1/对所有所需体系结构重复此步骤,并将 ARCH 替换为
x86
或aarch64
,将 PATH_TO_ISO 替换为相应 ISO 文件的路径。将 x86 BIOS 和 UEFI 引导所需的
kernel
、initrd
和message
文件复制到相应的位置。root #
cd /srv/install/x86/OS_version/SP_version/cd1/boot/x86_64/loader/root #
cp -a linux initrd message /srv/tftpboot/BIOS/x86/确保通过 NFS 可以使用路径
/srv/install
。有关细节,请参见第 8.2 节 “手动设置 NFS 安装源”。
9.3.2 用于 x86 的 BIOS 文件 #
将
pxelinux.0
复制到 TFTP 文件夹并为配置文件准备一个子文件夹。root #
cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot/BIOS/x86/root #
mkdir /srv/tftpboot/BIOS/x86/pxelinux.cfg创建
/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
编辑文件
/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_version 和 SP_version 替换为所用的操作系统和服务包版本。例如,使用 sles12
和 sp5
。
复制 UEFI 引导所需的所有 grub2 文件。
root #
cd /srv/install/x86/OS_version/SP_version/cd1/EFI/BOOTroot #
cp -a bootx64.efi grub.efi MokManager.efi /srv/tftpboot/EFI/x86/将内核和 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创建文件
/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_version 和 SP_version 替换为所用的操作系统和服务包版本。例如,使用 sles12
和 sp5
。
执行此操作的方法与 x86_64 EFI 环境的方法极其相似。首先,复制 grub2-efi 环境中 UEFI 引导所需的文件。
root #
cd /srv/install/aarch64/OS_version/SP_version/cd1/EFI/BOOTroot #
cp -a bootaa64.efi /srv/tftpboot/EFI/aarch64/将内核和 initrd 复制到目录结构。
root #
cd /srv/install/aarch64/OS_version/SP_version/cd1/boot/aarch64root #
cp -a linux initrd /srv/tftpboot/EFI/aarch64/boot现在,创建文件
/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.30”和“v2.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,则仅当按下 Shift 或 Alt 键,或者在 Caps Lock 或 Scroll Lock 状态下,才显示引导提示符(这是默认设置)。如果flag_val
为 1,则始终显示引导提示符。F2 FILENAME F1 FILENAME ..etc... F9 FILENAME F10 FILENAME
当在引导提示符下按下功能键时,将显示指定的文件。这可以用于执行预引导联机帮助(大致是关于内核命令行选项)。为了向后兼容先前的发行版,F10 也可以输入为
F0
。请注意目前尚无法将文件名与 F11 和 F12 绑定。
9.5 准备目标系统的 PXE 引导 #
请将 PXE 选项包含在 BIOS 引导序列中来为系统 BIOS 的 PXE 引导作准备。
在 BIOS 中,不要将 PXE 选项置于硬盘引导选项的前面。否则,每次引导系统时,系统都会尝试重新自我安装。
9.6 准备目标系统的网络唤醒 #
网络唤醒 (WOL) 要求在安装之前启用相应的 BIOS 选项。此外,请记下目标系统的 MAC 地址。该数据是启动网络唤醒所需要的。
9.7 局域网唤醒 #
“网络唤醒”允许通过一个发送时包含计算机 MAC 地址的特定网络包来打开该计算机的电源。由于全球的每台计算机都有一个唯一的 MAC 标识,所以无需担心会意外地错开计算机的电源。
如果控制计算机与要唤醒的安装目标不在同一网段,请将要发送的 WOL 请求配置为多点广播,或远程控制该网段上的某台计算机充当这些请求的发送方。
SUSE Linux Enterprise Server 的用户可以使用名为 WOL 的 YaST 模块来方便地配置网络唤醒。基于 SUSE Linux 操作系统的其他版本的用户可以使用命令行工具。
9.8 使用 YaST 的“网络唤醒” #
以
root
身份登录。启动
› › 。单击
并输入目标系统的主机名和 MAC 地址。要打开此计算机,请选择适当的输入框并单击
。
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_version 和 SP_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 记忆棒的设备名称。全面检查设备名称,以确保您未意外损坏其他驱动器上的数据。