SDB:PXE 引导安装

跳转至: 导航, 搜索
这篇文章包含了使用 “预启动执行环境 (Preboot Execution Environment, PXE)” 进行网络安装系统的步骤。

介绍

预启动执行环境(PXE)是使用 PXE 协议和 BIOS 直接从网络上启动计算机而不使用软盘/硬盘/ CD-ROM 。为了使 PXE 工作,服务器需要操作系统配置,而客户端需要一个代码模块,为给定的网卡(NIC)运行 PXE 。大多数有板载 LAN 端口的较新主板已经将该模块作为其 BIOS 镜像的一部分。如果你想从子板网卡启动,即 ISA/PCI/ 等插槽中的网卡,你需要把适当的模块放在 BootROM 上(只适用于网卡有 ROM 插口的情况),或者放在 BIOS 镜像中(只适用于有适当映像工具的情况,AMIFLASH 就是一种)。


准备工作

为了成功的进行网络安装,您需要:

  • 一个已安装的 openSUSE (提供 dhcpd 和 tftpd 服务,使用 zypper in atftp dhcp-server 安装相关软件包),
  • 一个可用的网络连接(推荐使用带宽高的宽带),
  • 一个支持 PXE 引导的可连网的需要安装的目标系统。

配置dhcpd和TFTP服务器

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 环境中运行,"文件名" 也可以在被指定时使用相对路径。对于 openSUSE 上的标准 tftpd 服务器,或者如果您使用的是基于 RedHat 的服务器,"文件名 "应该是:

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 启动并更改目录到 /etc/xinetd.d/tftp 中指定的目录,通常为 /tftpboot。以无权限的用户运行的选项也可以被 xinetd 设置(也就是 /etc/xinetd.d/tftp)。


建立 PXE 引导环境

获取所有的东西

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

 /usr/share/syslinux/pxelinux.0

如果您没安装 syslinux,您可以在这下载这个小文件。

建立 PXE 引导

到此为止,您应该具备了建立 PXE 引导环境的所有东西。进入 TFTP 根目录(缺省的是/srv/tftp),创建初始的文件夹:

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

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

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

通过修改 /srv/tftp/tftpboot/pxelinux.cfg/default ,创建新的 PXE 配置文件。这几乎与 syslinux.cfg 相同。这有一个简单的例子:

default install
prompt   1
timeout  30
  
# Install i386 Linux
label install
  kernel linux
  append initrd=initrd splash=silent vga=0x314 showopts install=http://download.opensuse.org/factory/repo/oss/

# Install x86_64 Linux
label install64
  kernel linux64
  append initrd=initrd64 splash=silent vga=0x314 showopts install=http://download.opensuse.org/factory/repo/oss/ 

将内核和 initrd(这里:linux、initrd、linux64、initrd64)复制到 /srv/tftpboot 。

请注意:如果您使用基于 RedHat 的服务器,您的默认配置将需要一些以 "append" 开头的选项:

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

这个配置文件引用了2个重要的文件:linuxinitrd 。您必须从网络上的 openSUSE 安装仓库(或其它镜像)下载这两个文件。注意这两个文件依赖于您的硬件平台(i386 或 x86_64)。

# cd /srv/tftpboot
# wget http://download.opensuse.org/factory/repo/oss/boot/i386/loader/linux
# wget http://download.opensuse.org/factory/repo/oss/boot/i386/loader/initrd
# wget -O initrd64 http://download.opensuse.org/factory/repo/oss/boot/x86_64/loader/initrd
# wget -O linux64 http://download.opensuse.org/factory/repo/oss/boot/x86_64/loader/linux

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

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

使用这个配置,你可以在 boot: 提示符下输入 "install" 或 "install64"。

你也可以创建一个与 syslinux 和 isolinux 一样的引导信息文件,以显示可用的引导:提示符选项。要做到这一点,请编辑 /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 服务器的地址。您不必包含 hostname,如例子中所示,只要下面一行即可:

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 服务器,Please make sure your installation medium is available (请确保你的安装介质是可用的) 信息会显示出来,而不是图形安装系统。如果你遇到这样的问题,请按照这个程序操作:

  1. 出现 Please make sure your installation medium is available. Retry? (请确认你的安装媒介是可用的。重试?) 信息时,选择 No(按 TAB 或光标键移动光标,按 Enter 键选择)
  2. Select the language 选择你的语言(注意,它是可以滚动的;反复按下光标键)。
  3. Choose a keyboard map 选择你的键盘布局
  4. Main Menu 选择 Start Installation
  5. Start Installation 选择 Installation
  6. Choose the source medium 选择 Network
  7. Choose the network protocol 选择一个协议。如果你想使用 openSUSE 官方站点,选择 HTTP
  8. Automatic configuration via DHCP? 选择 No
  9. Enter your IP address with network prefix. 输入 IP 地址和子网掩码,注意子网掩码必须以 CIDR 方式指定(即 "24" 而不是 "255.255.255.0")
  10. Enter your gateway IP address. 输入一个网关地址。如果你没有网关,留空即可。
  11. Enter your name server IP address. 输入一个 DNS 服务地址。如果你没有 DNS ,留空即可。
  12. Enter your search domains 输入一个域名。如果你没有,请留空。
  13. Enter the name of the xxx server 输入一个下载地址,如果你想要使用官方的站点,将设置 download.opensuse.org 为默认值。
  14. Enter the directory on the server 输入一个下载站点的目录,为 openSUSE 官方站点设置 distribution/<版本号>/repo/oss/ 为默认值。
  15. Do you need a username and password to access the xxx server? 为 openSUSE 的官方站点设置 No
    1. 如果你选择了 Yes ,在 Enter the user name..Enter the password.. 分别输入用户名和用户密码。
  16. 根据你的网络环境,为 Use a xxx proxy? 设置一个代理地址
    1. 如果你选择 Yes ,在 Enter the name of the xxx proxyEnter the port of the xxx proxy 分别输入代理服务器的地址和端口。
    2. 根据你的网络环境,为 Do you need a username and password to access the proxy? 选择输入用户名和用户密码。
    3. 如果你选择 Yes ,在 Enter the user name..Enter the password.. 分别输入用户名和用户密码。

如果你完成了,将显示 Loading Installation System 信息,并开始图形安装。

基于文件的YaST,而不是X服务器

如果您的计算机不是太慢而不能使用图形用户界面(GUI)的安装程序,那么您能够在X服务器上通过手动来指定想要使用的分辨率和色深。我的Latitude C400笔记本电脑上就可以设置,回到TFTP服务器,编辑pxelinux.cfg/default文件。在这行:

  append initrd=initrd splash=silent showopts

添加正在的选项:

vga=xxx

xxx是Linux视频模式编号,您知道的您的监视器/显卡所工作的模式。如:

  append initrd=initrd splash=silent showopts vga=773

您能够在这找到Linux视频模式编号列表。 重新用PXE引导,X服务器应该能正确地启动。


另见


附加信息的链接