如何通过pxe+kickstart实现无人值守安装系统详解
PEX+KS无人值守安装系统一、PXE介绍1.1 什么是PXE1.2 PXE工作示意图1.3 PXE工作原理详解二、准备部署环境2.1 编辑虚拟网络编辑器2.2 挂载光盘镜像并配置本地yum三、开始部署PXE+KS3.1 安装DHCP服务3.2 配置dhcp3.3 安装TFTP服务3.4 配置TFTP3.5 配置SYSlinux服务3.6 配置httpd服务3.7 创建ks应答文件四、开始自动部署
·
PEX+KS无人值守安装系统
一、PXE介绍
1.1 什么是PXE
- PXE,全面Pre-boot Execution Environmrnt,预启动执行环节;
- 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
- 由inter和systemsoft公司与1999年9月20日公布的技术;
- C/S的工作模式;
- PXE客户端会调用网际协议(IP)、数据报协议(UDP)、动态主机配置协议(DHCP)、简文件传输协议(TFTP)等网络协议。
- PXE客户端是指机器在PXE启动过程中的角色。一个PXE客户端可以使一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(电脑的网卡)
1.2 PXE工作示意图
1.3 PXE工作原理详解
- Client向pxe server上的DHCP发送IP地址请求消息,DHCP检测client是否合法(主要是检测client的网卡MAC地址),如果合法则返回client的IP地址,同时将启动文件pxelinux.0的路径信息一并发送给client
- Client向pxe server上的TFTP发送获取pxelinux.0请求消息,TFTP收到消息之后再向Client发送pxelinux.0文件的大小消息,试探client是否满意,当TFTP收到client发回的同意大小消息之后,正式向client发送pxelinux.0
- Client执行接收到pxelinux.0文件
- Client向TFTP Server发送针对本机的配置信息文件(在TFTP服务的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作
- Client向TFTP发送linux内核请求信息,TFTP收到消息之后将内核文件发送给Client
- Client向TFTP根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
- Client启动linux内核
- Client下载安装源文件,读取自动化安装脚本
注意:如果要是PEX远程安装操作系统,网卡必须支持PEX(即网卡包含TFTP的客户端)
二、准备部署环境
下面以vmw虚拟机环境实现部署
主机名称 | IP地址 |
---|---|
server | 192.168.10.10 |
client | 暂未分配 |
2.1 编辑虚拟网络编辑器
关闭虚拟机自带的DHCP服务
2.2 挂载光盘镜像并配置本地yum
[root@server ~]# mount /dev/sr0 /media/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# cat /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
三、开始部署PXE+KS
本次实验采用HTTP提供内核文件,当然也可以采用FTP/NFS,只要修改传输方式和路径即可,下面会说明。
3.1 安装DHCP服务
[root@server ~]# yum install -y dhcp
3.2 配置dhcp
允许BOOT引到程序协议,让局域网内暂时没有操作提醒的主机也能获取到静态IP地址,
加载引到驱动文件pexlinux.0,让客户端获取到IP地址后主动获取引到驱动文件,
自行进入安装过程。
[root@server ~]# vim /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.10.10;
range dynamic-bootp 192.168.10.100 192.168.10.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.10; #这个就是TFTP地址
filename "pxelinux.0"; #从tftp根目录获取bootloader文件
}
重启DHCP服务
[root@server ~]# systemctl restart dhcpd
3.3 安装TFTP服务
TFTP作为一种基于UDP协议的简单文件传输协议,不需要用户认证即可获取到所需的文件资
源。因此下面配置TFTP服务,为客户端主机提供引导及驱动文件。当客户端有了基本的驱动
程序之后,再通过httpd服务将完整的光盘镜像文件传输过去。
[root@server ~]# yum install -y tftp-server
TFTP是一种非常精简的文件传输服务程序,它的运行和关闭都是由xinetd网络守护进程服
务来管理的。Xinetd服务会同时监听系统的多个端口,然后根据用户请求的端口号调取相对
应的服务程序来响应请求。开启TFTP服务,只需在xinetd服务的配置文件中将disable参
数改成no就可以了。
由于centos系统中未安装xinetd包,需要手动去安装。
[root@server ~]# yum install -y xinetd
3.4 配置TFTP
[root@server ~]# vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot #<-tftp的目录
disable = no #<-开启tftp改为no
per_source = 11
cps = 100 2
flags = IPv4
}
TFTP是由xinetd网络守护进程所管理的,所以修改完之后,要重启的是xinetd
[root@server ~]# systemctl restart xinetd
TFTP服务默认使用的是UDP协议,占用端口为69,所以要通过firewall防火墙写入允许策略。
[root@server ~]# firewall-cmd --permanent --add-port=69/udp
[root@server ~]# firewall-cmd --reload
3.5 配置SYSlinux服务
Syslinux是一个用于提供引导加载的服务。
[root@server ~]# yum install -y syslinux
需要把syslinux提供的引导文件复制到TFTP服务的默认目录中,这样客户端主机就能顺利
的获取到引导文件。在centos7系统光盘中也有需要调取的引导文件。
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@server tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@server tftpboot]# cp /media/cdrom/isolinux/{vesament.c32,boot.msg} .
然后在TFTP目录中新建一个pexlinux.cfg目录,将系统光盘中的开机选项菜单复制到该目录中,并命名为default。
[root@server tftpboot]# mkdir pxelinux.cfg
[root@server tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
默认的开机菜单中有两个选项,一个是安装系统,一个是对安装介质进行检验。本次实验要
求是无人值守安装系统,编辑default文件,将default参数改为linux,将默认的光盘镜
像安装方式修改成http方式(也可以使用ftp/nfs方式只需在64行修改即可),并指定光盘镜像的获取地址以及kickstart应答文件的获取
路径:
[root@server tftpboot]# vim pxelinux.cfg/default
1 default linux
64 append initrd=initrd.img inst.repo=http://192.168.10.10/iso #<-内核启动选项需要加载的文件
ks=http://192.168.10.10/pub/ks.cfg quiet #<-ks存放的路径
3.6 配置httpd服务
本次实验选择光盘镜像是通过HTTP协议传输,因此要用httpd服务。
[root@server ~]# yum install -y httpd
[root@server ~]# systemctl start httpd
在防火墙写入策略
[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload
将已经挂载的光盘镜像拷贝到http服务的工作目录中:
[root@server ~]# mkdir /var/www/html/iso
[root@server ~]# cp -r /media/cdrom/* /var/www/html/iso/
拷贝完成后,可通过浏览器访问查看:
3.7 创建ks应答文件
KickStart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调用这个应答文件的内容,从而实现了无人值守安装系统。将root目录下的anaconda-ks.cfg应答文件复制到http服务的工作目录中,并授权。
[root@server ~]# mkdir /var/www/html/pub
[root@server ~]# cp ~/anaconda-ks.cfg /var/www/html/pub/ks.cfg
[root@server ~]# chmod +r /var/www/html/pub/ks.cfg
通过浏览器访问测试:
然后将光盘镜像安装方式修改成http协议,填写http服务器的IP地址、时区修改为上海、
磁盘选项设置为清空并初始化磁盘。
[root@server ~]# vim /var/www/html/pub/ks.cfg
6 url --url=http://192.168.10.10/iso
25 timezone Asia/Shanghai --isUtc
30 clearpart --all --initlabel
四、开始自动部署客户机
新建一个虚拟机,选择稍后安装操作系统
将网络适配器设置为仅主机模式
4.1 启动虚拟机
等待加载完毕后,会自动安装操作系统
安装成功后,只需手动点击reboot重启即可
更多推荐
已为社区贡献8条内容
所有评论(0)