SDB: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
此配置文件引用了两个重要的文件:linux 和 initrd。它们必须从网络 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 服务器,将显示 请确保您的安装介质可用 消息,而不是图形化安装系统。如果您遇到此类问题,请按照以下步骤操作
- 选择 否 以获取 请确保您的安装介质可用。重试? 消息 (使用 TAB 或光标键移动光标,使用 Enter 键选择)
- 选择您的语言以获取 选择语言 (请注意,它是可滚动的;重复按向下光标键)
- 选择您的键盘映射以获取 选择键盘映射。
- 选择 开始安装 以获取 主菜单。
- 选择 安装 以获取 开始安装。
- 选择 网络 以获取 选择源介质。
- 选择一种协议以获取 选择网络协议。如果您想使用 openSUSE 的官方网站,请选择 HTTP。
- 选择 否 以获取 通过 DHCP 自动配置?。
- 输入 IP 地址和子网掩码以获取 输入带有网络前缀的 IP 地址;请注意,子网掩码必须以 CIDR 样式指定 (例如,"24" 而不是 "255.255.255.0")。
- 输入默认网关地址以获取 输入您的网关 IP 地址。如果您没有一个,请留空。
- 输入名称 (DNS) 服务器地址以获取 输入您的名称服务器 IP 地址。如果您没有一个,请留空。
- 输入域名以获取 输入您的搜索域。如果您没有一个,请留空。
- 输入下载站点的地址以获取 输入 xxx 服务器的名称。如果您想使用 openSUSE 的官方网站,请设置 download.opensuse.org (默认值)。
- 输入下载站点中的目录路径以获取 输入服务器上的目录。为 openSUSE 的官方网站设置 distribution/(version)/repo/oss/。
- 选择一个以获取 是否需要访问 xxx 服务器的用户名和密码?。为 openSUSE 的官方网站设置 否。
- 如果您选择了上面的 是,请输入用户名和密码以获取 输入用户名.. 和 输入密码..。
- 根据您的网络环境,选择一个以获取 使用 xxx 代理?。
- 如果您选择了 是,请输入代理服务器地址和端口以获取 输入 xxx 代理的名称 和 输入 xxx 代理的端口。
- 根据您的网络环境,选择一个以获取 是否需要访问代理的用户名和密码?。
- 如果您选择了上面的 是,请输入用户名和密码以获取 输入用户名.. 和 输入密码..。
如果您完成了它,将显示 正在加载安装系统 消息,并将开始图形化安装。
图形显示损坏或基于文本的 YaST 加载而不是 X Server
更改 /srv/tftp/tftpboot/pxelinux.cfg/default 中的 append 行上的 vga= 值 (可以从 VESA BIOS 扩展 中选择值)。如果您以十六进制指定该值,则应以 0x 开头。如果您以十进制指定该值,则按原样设置 (包括之前描述的值)。