博文参考
PXE简介
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由支持通过网络启动操作系统,再启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8/linux等。
PXE启动原理
当计算机引导时,BIOS把PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行,工作流程图如下:
1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。
2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
3. Client执行接收到的pxelinux.0文件。
4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。
6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。
7. Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。
8. Client通过NFS下载镜像文件,读取autoyast自动化安装脚本。
PXE安装配置
涉及的服务:
安装tftp
在server172.16.47.101上
[root@node1~]# yum install tftp tftp-server -y
[root@node1~]# systemctl start tftp.socket
[root@node1~]# systemctl enable tftp.socket
tftp的默认目录为/var/lib/tftpboot/,如下图,拷贝一个文件到该目录下,测试tftp服务是否正常
tftp> get fstab
tftp> quit
安装DHCP服务
在server 172.16.47.101上安装dhcp服务,和tftp服务是在同一台机器上(注意:DHCP服务,必须先改配置文件,复制到/etc下,才能启动服务。)
[root@localhost ~]# yum install dhcpd -y
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl status dhcpd
yum源
挂载光盘
配置httpd web服务
安装httpd:yum install httpd;并把yum源挂载在http下,让客户端能够访问
[root@localhost ~]# systemctl restart httpd
可以看到httpd能正常服务,不过操作的时候要注意selinux和iptables
安装syslinux
安装syslinux:yum install syslinux,并复制系统引导启动所需要的文件到相应的目录中
cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/
cp /mnt/isolinux/initrd.img /var/lib/tftpboot/
cp /usr/share/syslinux/{chain.c32,menu.c32,memdisk,mboot.c32} /var/lib/tftpboot/
编辑default文件
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7_Lurker PXE Menu
LABEL linux-Lurker
MEMU LABEL Install CentOS 7_Lurker X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64
新建虚拟机,可以看到启动的引导过程如下:
如上default文件中并没有指定kickstart文件,无法应答安装时的各步骤,无法实现全自动安装。
现我们修改一下/root/目录下的anaconda-ks.cfg文件,放到/var/www/html/kickstarts/下,并重新修改default文件如下
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7_Lurker PXE Menu
LABEL Linux-Lurker
MEMU LABEL ^Install CentOS 7_Lurker X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64
LABEL Linux_Autoinst
MENU LABEL ^AutoInstall CentOS 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img
inst.repo=http://172.168.47.101/centos/7/x86_64
ks=http://172.16.47.101/kickstarts/centos7.cfg
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。