SDB: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个重要的文件:linux 和 initrd 。您必须从网络上的 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 (请确保你的安装介质是可用的) 信息会显示出来,而不是图形安装系统。如果你遇到这样的问题,请按照这个程序操作:
- 出现 Please make sure your installation medium is available. Retry? (请确认你的安装媒介是可用的。重试?) 信息时,选择 No(按 TAB 或光标键移动光标,按 Enter 键选择)
- 为 Select the language 选择你的语言(注意,它是可以滚动的;反复按下光标键)。
- 为 Choose a keyboard map 选择你的键盘布局
- 为 Main Menu 选择 Start Installation
- 为 Start Installation 选择 Installation
- 为 Choose the source medium 选择 Network
- 为 Choose the network protocol 选择一个协议。如果你想使用 openSUSE 官方站点,选择 HTTP
- 为 Automatic configuration via DHCP? 选择 No
- 为 Enter your IP address with network prefix. 输入 IP 地址和子网掩码,注意子网掩码必须以 CIDR 方式指定(即 "24" 而不是 "255.255.255.0")
- 为 Enter your gateway IP address. 输入一个网关地址。如果你没有网关,留空即可。
- 为 Enter your name server IP address. 输入一个 DNS 服务地址。如果你没有 DNS ,留空即可。
- 为 Enter your search domains 输入一个域名。如果你没有,请留空。
- 为 Enter the name of the xxx server 输入一个下载地址,如果你想要使用官方的站点,将设置 download.opensuse.org 为默认值。
- 为 Enter the directory on the server 输入一个下载站点的目录,为 openSUSE 官方站点设置 distribution/<版本号>/repo/oss/ 为默认值。
- 为 Do you need a username and password to access the xxx server? 为 openSUSE 的官方站点设置 No
- 如果你选择了 Yes ,在 Enter the user name.. 和 Enter the password.. 分别输入用户名和用户密码。
- 根据你的网络环境,为 Use a xxx proxy? 设置一个代理地址
- 如果你选择 Yes ,在 Enter the name of the xxx proxy 和 Enter the port of the xxx proxy 分别输入代理服务器的地址和端口。
- 根据你的网络环境,为 Do you need a username and password to access the proxy? 选择输入用户名和用户密码。
- 如果你选择 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服务器应该能正确地启动。