SDB:PXE 引导安装

跳转到:导航搜索
本文档涵盖了使用预启动执行环境 (PXE) 进行网络安装的步骤。

简介

预启动执行环境 (PXE) 是一种无需软盘/硬盘/CD-ROM 即可启动计算机的方式,BIOS 直接通过 PXE 协议从网络启动。为了使 PXE 正常工作,服务器需要操作系统配置,客户端需要一个运行 PXE 的代码模块,用于给定的 LAN 卡 (NIC)。大多数较新的主板都已将该模块作为其 BIOS 镜像的一部分包含在内。如果您想从子板 NIC 启动,例如插槽中的 ISA/PCI/等卡,则需要在 BootROM (仅当 NIC 具有 ROM 插槽时适用) 或 BIOS 镜像 (仅当有适当的镜像工具可用时适用,AMIFLASH 是其中之一) 中放置适当的模块。


准备工作

为了成功进行网络安装,您应该具备

  • 一个现有的 openSUSE (托管 dhcpd 和 tftpd - 使用 zypper 安装 atftp dhcp-server),
  • 一个互联网连接 (强烈建议使用宽带),
  • 一个支持 PXE 启动的网络目标系统。

配置

dhcpd 配置

PXE 启动基于 BOOTP 服务器,该服务器将发送系统启动网络层所需的所有基本信息。可以使用 openSUSE 发行版中包含的知名 DHCPd 服务器来完成这项工作,前提是您设置了静态配置。以下是典型的配置 (默认配置文件是 /etc/dhcpd.conf)

host target_host {
     hardware ethernet xx:xx:xx:yy:yy:yy;
     fixed-address 192.168.1.10;
     server-name "192.168.1.1";
     next-server 192.168.1.1;
     filename "pxelinux.0";
}

请注意,添加了两行专门用于 PXE 启动。确实,有必要指定 TFTP 启动服务器 IP (server-name) 和包含 PXE 引导程序 (filename) 的文件名。

您需要 (重新) 启动 DHCPd 服务器,如下所示

 # rcdhcpd restart

请注意:根据您使用的 tftp 服务器以及它是否在 chroot 环境中运行,可能需要指定不带前导路径元素的“filename”。对于 openSUSE 上的标准 tftpd 服务器或如果您使用的是基于 RedHat 的服务器,则“filename”应为

filename "pxelinux.0";

使用 ISC DHCP 服务器版本 3 (在 openSUSE 上提供) 可以配置 DHCP 服务器仅响应启动请求,从而与其它的默认 dhcp 服务器并行运行。这在默认 dhcp 服务器无法配置为提供引导服务器或引导文件名 (许多 DSL 路由器就是这种情况) 时可能需要。PXE 客户端将忽略不包含引导服务器或引导文件名的 DHCP 响应。以下是此场景的完整配置文件

default-lease-time 600;
max-lease-time 7200;
ddns-update-style none; ddns-updates off;
allow booting;
 
option domain-name "my.domain";
option domain-name-servers my.dnsserver;
option routers my.router;
   
# define rules to identify DHCP Requests from PXE and Etherboot clients.
class "pxe" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
}
class "etherboot" {
    match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";
}
   
subnet 192.168.1.0 netmask 255.255.255.0 {
    option broadcast-address 192.168.1.255;
    pool {
         default-lease-time 180; # no long lease time required for booting
         max-lease-time 360;     # booted system does its own dhcp request
         server-name "mybootserver";
         next-server mybootserver.; # in case your local DNS only handles
                                    # unqualified domains keep trailing '.'
         filename "pxelinux.0";
         allow members of "pxe";
         allow members of "etherboot"; # allow etherboot, too
         range 192.168.1.201 192.168.1.211;
     }
}

atftpd 配置

建议使用 atftp 包,因为 atftp 是符合所有 RFC 的唯一免费 TFTP 服务器。

在 openSUSE Leap 上,以下内容足以使用 socket 激活的 atftp

zypper in atftp
systemctl start atftpd.socket

可选地,要使此 socket 在重新启动后启用

systemctl enable atftpd.socket

无需对 /etc/sysconfig/atftpd 进行进一步更改。默认根目录是 /srv/tftpboot。如果使用防火墙,请确保它允许 udp/69

tftpd-hpa 配置

tftpd-hpa 是 H. Peter Anvin 的 tftpd 服务器,可在 "tftpd" 包中找到。在默认设置中,它配置为从 xinetd 启动,并将 chroot 到 /etc/xinetd.d/tftp 中指定的目录,通常是 /tftpboot。还应在 /etc/xinetd.d/tftp 中添加以非特权用户身份运行的选项。


设置 PXE 启动环境

获取所有

在真正开始构建 PXE 环境之前,您必须安装 syslinux 包。此软件包提供了一个非常有用的文件

 /usr/share/syslinux/pxelinux.0

如果您无法安装 syslinux,您可以从 此处 下载此小文件。

构建 PXE 启动

此时,您应该拥有构建 PXE 启动环境所需的一切。在 TFTP 根目录下创建初始目录结构,如下所示

 # mkdir -p /srv/tftpboot/pxelinux.cfg

将 PXE 引导文件复制到 tftpboot 目录。

 # cp /usr/share/syslinux/pxelinux.0 /srv/tftpboot

通过编辑 /srv/tftpboot/pxelinux.cfg/default 创建 PXE 配置文件。这几乎与 syslinux.cfg 文件相同。以下是一个示例 PXE 配置文件

default install
prompt   1
timeout  30

# Install 
label install
  kernel linux
  append initrd=initrd splash=silent vga=0x314 showopts install=https://download.opensuse.org/tumbleweed/repo/oss/

将内核和 initrd (此处:linux, initrd) 复制到 /srv/tftpboot。

请注意:如果您使用的是基于 RedHat 的服务器,则默认配置需要更多选项来开始的行

append root=/dev/ram0 load_ramdisk=1 initrd=initrd splash=silent showopts ramdisk_size=4096 init=linuxrc

此配置文件引用了两个重要的文件:linuxinitrd。它们必须从网络 openSUSE 安装存储库 (或镜像) 下载。请注意,它们取决于您的硬件 (i386 或 x86_64)。

# cd /srv/tftpboot
# wget https://download.opensuse.org/tumbleweed/repo/oss/boot/x86_64/loader/linux
# wget https://download.opensuse.org/tumbleweed/repo/oss/boot/x86_64/loader/initrd

请注意:如果您使用的是基于 RedHat 的服务器,则 tftp 服务器的目录结构应如下所示

 /tftpboot 
 /tftpboot/pxelinux.0 
 /tftpboot/initrd.img 
 /tftpboot/vmlinuz 
 /tftpboot/pxelinux.cfg 
 /tftpboot/pxelinux.cfg/default

使用此配置,您可以在 boot: 提示符处键入 "install" 或 "install64"。

您还可以创建与 syslinux 和 isolinux 相同的引导消息文件,以显示可用的 boot: 提示符选项。为此,编辑 /srv/tftp/tftpboot/f1.txt 并添加

boot options:
  install   - install 32 bit i386 openSUSE 10.3
  install64 - install 64 bit x86_64 openSUSE 10.3

然后编辑 /srv/tftpboot/pxelinux.cfg/default 并添加在顶部附近

 DISPLAY f1.txt
 F1 f1.txt

现在,启动时,您将看到

boot options:
  install   - install 32 bit i386 openSUSE 10.3
  install64 - install 64 bit x86_64 openSUSE 10.3
 
boot:

启动 PXE

您应该确保您的目标主机配置良好,可以从网络启动,并检查是否启用了 PXE。然后一切都会按预期运行……享受 PXE 并玩得开心!


常见问题

PXELINUX 启动非常慢

您可能会发现,在 PXELINUX 加载时,它似乎花费了很长时间才能完成所有不同的行,例如

 pxelinux.cfg/01-88-99-aa-bb-cc-dd
 pxelinux.cfg/C000025B
 pxelinux.cfg/C000025
 pxelinux.cfg/C00002
 pxelinux.cfg/C0000
 pxelinux.cfg/C000
 pxelinux.cfg/C00
 pxelinux.cfg/C0
 pxelinux.cfg/C
 pxelinux.cfg/default

您必须确保在 /etc/dhcpd.conf 文件中将 next-server 设置为 tftp 服务器的地址。您不必使用主机名,如示例所示,您可以只使用如下行

 next-server 192.168.77.254;

或者,如果您有配置为为您的网络分配 IP 地址的路由器,请使用路由器的 IP 作为 next-server。例如

 next-server 192.168.0.1

未接受任何选项

您可能还会收到 /var/log/messages 中的以下警告消息

in.tftpd: tftp: client does not accept options

这是正常的。PXELINUX 似乎无法接受所有选项,但这不会影响启动。

运行 in.tftpd 时出现套接字错误

如果您收到如下错误

in.tftpd: cannot bind to local socket: Address already in use

那么您可能错误配置了 /etc/xinet.d/tftp 中服务器的选项。仔细检查这些选项。


启动图形化安装系统

PXE 加载后,它将加载并启动图形化安装系统,该系统与正常安装系统相同。继续正常安装。

故障排除

未启动图形化安装系统

如果您的网络环境没有 DHCP 服务器或配置错误的 DHCP 服务器,将显示 请确保您的安装介质可用 消息,而不是图形化安装系统。如果您遇到此类问题,请按照以下步骤操作

  1. 选择 以获取 请确保您的安装介质可用。重试? 消息 (使用 TAB 或光标键移动光标,使用 Enter 键选择)
  2. 选择您的语言以获取 选择语言 (请注意,它是可滚动的;重复按向下光标键)
  3. 选择您的键盘映射以获取 选择键盘映射
  4. 选择 开始安装 以获取 主菜单
  5. 选择 安装 以获取 开始安装
  6. 选择 网络 以获取 选择源介质
  7. 选择一种协议以获取 选择网络协议。如果您想使用 openSUSE 的官方网站,请选择 HTTP
  8. 选择 以获取 通过 DHCP 自动配置?
  9. 输入 IP 地址和子网掩码以获取 输入带有网络前缀的 IP 地址;请注意,子网掩码必须以 CIDR 样式指定 (例如,"24" 而不是 "255.255.255.0")。
  10. 输入默认网关地址以获取 输入您的网关 IP 地址。如果您没有一个,请留空。
  11. 输入名称 (DNS) 服务器地址以获取 输入您的名称服务器 IP 地址。如果您没有一个,请留空。
  12. 输入域名以获取 输入您的搜索域。如果您没有一个,请留空。
  13. 输入下载站点的地址以获取 输入 xxx 服务器的名称。如果您想使用 openSUSE 的官方网站,请设置 download.opensuse.org (默认值)。
  14. 输入下载站点中的目录路径以获取 输入服务器上的目录。为 openSUSE 的官方网站设置 distribution/(version)/repo/oss/
  15. 选择一个以获取 是否需要访问 xxx 服务器的用户名和密码?。为 openSUSE 的官方网站设置
    1. 如果您选择了上面的 ,请输入用户名和密码以获取 输入用户名..输入密码..
  16. 根据您的网络环境,选择一个以获取 使用 xxx 代理?
    1. 如果您选择了 ,请输入代理服务器地址和端口以获取 输入 xxx 代理的名称输入 xxx 代理的端口
    2. 根据您的网络环境,选择一个以获取 是否需要访问代理的用户名和密码?
      1. 如果您选择了上面的 ,请输入用户名和密码以获取 输入用户名..输入密码..

如果您完成了它,将显示 正在加载安装系统 消息,并将开始图形化安装。

图形显示损坏或基于文本的 YaST 加载而不是 X Server

更改 /srv/tftp/tftpboot/pxelinux.cfg/default 中的 append 行上的 vga= 值 (可以从 VESA BIOS 扩展 中选择值)。如果您以十六进制指定该值,则应以 0x 开头。如果您以十进制指定该值,则按原样设置 (包括之前描述的值)。


参见


外部链接