共计 4561 个字符,预计需要花费 12 分钟才能阅读完成。
本文由 LinuxProbe.Com 团队成员 逄增宝 整理发布,原文来自:David Camp。
PXE(Pre-boot Execution Environment,预启动执行环境)是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配 IP 地址,再用 TFTP 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client 端和 Server 端,而 PXE Client 则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
PXE 的工作过程:
1. PXE Client 从自己的 PXE 网卡启动,向本网络中的 DHCP 服务器索取 IP;
2. DHCP 服务器返回分配给客户机的 IP 以及 PXE 文件的放置位置(该文件一般是放在一台 TFTP 服务器上);
3. PXE Client 向本网络中的 TFTP 服务器索取 pxelinux.0 文件;
4. PXE Client 取得 pxelinux.0 文件后之执行该文件;
5. 根据 pxelinux.0 的执行结果,通过 TFTP 服务器加载内核和文件系统;
6. 进入安装画面, 此时可以通过选择 HTTP、FTP、NFS 方式之一进行安装;
详细工作流程,请参考下面这幅图:
Kickstart 是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件。如果在安装过程中(不只局限于生成 Kickstart 安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart 生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果 Kickstart 文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后就去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
实验环境:VMware Workstation 10
系统平台:CentOS release 6.5 (最小化安装)
网络模式:NAT 模式(共享主机的 IP 地址)
DHCP / TFTP IP:192.168.111.130
HTTP / FTP / NFS IP:192.168.111.130
关闭 Iptables 和 SELINUX
生成 ks.cfg 文件需要 system-config-kickstart 工具,而此工具依赖于 X Windows,所以我们需要安装 X Windows 和 Desktop 并重启系统,操作如下:
# yum groupinstall "X Window System"
# yum groupinstall Desktop
# yum groupinstall Fonts
# reboot
# yum install httpd –y
# /etc/init.d/httpd start
# chkconfig --level 35 httpd on
在虚拟机中设置加载 ISO 镜像:
将 iso 文件挂载至 /mnt/cdrom:
# cp -r /mnt/cdrom/ /var/www/html/
# yum install tftp-server –y
# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
因为 tftp 服务是挂载在超级进程 xinetd 下的,所以通过启动 xinetd 来启动 tftp 服务,并开机自启动 xinetd:
# /etc/init.d/xinetd restart
# chkconfig xinetd on
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
说明:syslinux 是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX 是一个小型的 Linux 操作系统,它的目的是简化首次安装 Linux 的时间,并建立修护或其它特殊用途的启动盘。
# cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
# cp /var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# vi /var/lib/tftpboot/pxelinux.cfg/default
default ks # 默认启动的是 'label ks' 中标记的启动内核
prompt 1 # 显示 'boot:' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。
timeout 6 # 在用户输入之前的超时时间,单位为 1/10 秒。
display boot.msg # 显示某个文件的内容,注意文件的路径。默认是在 /var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/boot.msg' 这样的,路径 + 文件名。
F1 boot.msg # 按下 'F1' 这样的键后显示的文件。
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如 boot: linux[ENTER],这个会启动 'label linux' 下标记的 kernel 和 initrd.img 文件。
kernel vmlinuz #kernel 参数指定要启动的内核。
append initrd=initrd.img #append 指定追加给内核的参数,能够在 grub 里使用的追加给内核的参数,在这里也都可以使用。
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks=http://192.168.111.130/ks.cfg initrd=initrd.img # 告诉系统,从哪里获取 ks.cfg 文件
label local
localboot 1
label memtest86
kernel memtest
append -
# yum -y install dhcp
# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
filename "pxelinux.0"; #pxelinux 启动文件位置;
next-server 192.168.111.130; #TFTP Server 的 IP 地址;
subnet 192.168.111.0 netmask 255.255.255.0 {
option routers 192.168.111.130;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.111.100 192.168.111.200;
default-lease-time 21600;
max-lease-time 43200;
}
# /etc/init.d/dhcpd start
# yum install system-config-kickstart
启动 X Windows 环境
# startx
配置 Kickstart
# system-config-kickstart
A. 设置语言,键盘,时区,Root 密码,安装完毕后重启等。
B. 设置安装方式,这篇文章介绍的是 HTTP 方式的安装,故选择 HTTP
C. 安装 MBR
D. 设置分区
E. 分区总览
F. 配置网络
G. 认证配置
H. SELinux 和防火墙配置
I. 图形环境配置
J. 软件包安装选择
K. 预览
L. 生成 ks.cfg 文件,保存在 /var/www/html/ 文件夹下
1. 创建一台虚拟机
2. 启动虚拟机,选择从网卡启动,DHCP 服务器正在给客户机分配 IP 地址。
3. 开始下载 vmlinuz 和 initrd.img
4. 安装过程 …