文章目录
前言
一:搭建PXE远程安装服务
1.1:搭建PXE远程安装服务器
1.1.1:服务器的批量部署
- 规模化:同时装配多台服务器
- 自动化:安装系统,配置各种服务
- 远程实现:不需要光盘,U盘等安装介质
1.1.2:关于PXE网络
- PXE,Pre-boot eXcution Environment
预启动执行环境,在操作系统之前运行
可用于远程安装,构建无盘工作站
- 服务端
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
- 客户端
网卡支持PXE协议
主板支持网络启动
1.1.3:配置PXE装机服务器
- 基本部署过程
-
准备centos 7 安装源(yum仓库)
[root@localhost ~]#yum -y install vsftpd [root@localhost ~]#mkdir /var/ftp/centos7 [root@localhost ~]#cp -rf /media/cdrom/* /var/ftp/cdentos7/ [root@localhost ~]#systemctl start vsftpd
-
启动TFTP服务
-
安装tftp-server软件包,启用tftp服务
-
配置文件位于/etc/xinetd.d/tftp
-
tftp 站点 /var/lib/tftpboot
[root@localhost ~]#yum -y install tftp-server [root@localhost ~]#vi /etc/xinetd.d/tftp disable = no '开启tftp服务' [root@localhost ~]#systemctl start tftp [root@localhost ~]#systemctl enable tftp
-
-
提供linux内核,pxe引导程序
[root@localhost ~]# cd /media/cdrom/images/pxeboot '位于系统镜像文件夹images/pxeboot下' [root@localhost ~]# cp vmlinuz initrd.img /var/lib/tftpboot [root@localhost ~]yum -y install syslinux [root@localhost ~]cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
-
启动DHCP服务,用来分配地址,指导引导程序位置
[root@localhost ~]#yum install dhcp -y [root@localhost ~]# vim /etc/dhcp/dhcpd.conf [root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y [root@localhost ~]# vim /etc/dhcp/dhcpd.conf subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.20 192.168.100.30; option routers 192.168.100.100; option domain-name-servers 6.6.6.6; next-server 192.168.100.100; '指定TFTP服务器地址' filename "pxelinux.0"; 'filename:指定要下载的引导程序文件' } [root@localhost ~]#systemctl start dhcpd [root@localhost ~]#systemctl enable dhcpd
-
配置启动菜单
[root@server tftpboot]# cd /var/lib/tftpboot [root@server tftpboot]# mkdir pxelinux.cfg '创建pxelinux配置文件' [root@server tftpboot]# cd pxelinux.cfg/ [root@server pxelinux.cfg]# vim default '创建默认配置文件' [root@server pxelinux.cfg]# vim default default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
- 总结:TFTP服务及引导文件
- 安装tftp-server软件包,启动tftp服务
- 准备内核文件vmlinuz,初始化镜像initrd.img
- 准备引导程序文件pxelinux.0(依赖于syslinux)
- DHCP服务的PXE设置
1.2:PXE自动部署步骤与总结
-
1.设置双网卡,
-
2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置
next-server TFTP IP
filename “pxelinux.0”
- 3.设置TFTP(先安装tftp-server并设置)
1.安装syslinux(包含pxelinux.0)并设置,引导程序
2.压缩内核 vmlinuz (在iso镜像文件中获取)
3.初始化文件 initrd.img (iso镜像文件中获取)
4.默认配置文件 default (自建三个模式,默认时auto,指引FTP镜像系统文件位置)
-
总结:
DHCP 让客户端获取IP地址,能主动联网PXE服务器 配置中指向TFTP
TFTP 简单文件系统 UDP 69 端口 快速加载引导程序,引导程序的容量小,默认配置文件指向FTP镜像位置
FTP 文件系统 TCP ,21连接服务,20传输数据,系统镜像存放
TFTP 四大文件
-
default 需要先创建pxelinux.cfg目录,引导配置文件默认被加载
-
vmlinuz 压缩内核 在default 中被定义
-
initrd.img 初始化镜像文件,在default被定义第二个加载
-
pxelinux.0 引导程序 需要安装syslinux包才会有,在dhcp配置中定义
-
1.3:验证PXE网络安装
为客户机安装系统
调整BIOS设置,以便从网络引导
自动获取IP地址,并指定centos7安装源
其余过程与本地安装相同
环境
使用VMware软件中centos 7系统
打开一台centos 7
'第一步,在服务器设置双网卡'
在centos 7添加一个网络适配器,并设置为仅主机模式。 '用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。 '用来安装yum包'
两个网卡可以不在同一网段,正常只用一个仅主机模式网卡即可,此时是为了yum安装,多用一块vm8网卡
'第二步,设置添加的网卡IP地址,关闭防火墙'
[root@server lpf]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24
注意双网卡36的uuid要删掉
[root@server lpf]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e927c915-1f32-4f8e-b4d4-77c7a3ed4823
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.110
PREFIX=24
GATEWAY=192.168.100.2
DNS1=8.8.8.8
'第三步,设置DHCP服务'
[root@localhost ~]#yum install dhcp* -y
[root@server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@server ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.100 192.168.100.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.100.100;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
'第四步:设置TFTP--配置安装tftp-server'
[root@server ~]# yum install -y syslinux
[root@server ~]# yum install tftp-server -y
[root@server ~]# vim /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
}
'第五步:安装并设置syslinux'
[root@server ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
[root@server ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@server ~]# vim /usr/sbin/in.tftpd
[root@server ~]# vim /etc/xinetd.d/tftp
[root@server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ll
总用量 28
-rw-r--r--. 1 root root 26759 7月 13 17:41 pxelinux.0
[root@server tftpboot]# yum install -y vsftpd
'第六步,在镜像中复制出文件'
[root@server yum.repos.d]# cd /var/ftp
[root@server ftp]# ls
pub
[root@server ftp]# mkdir centos7
[root@server ftp]# mount /dev/sr0 /var/ftp/centos7
mount: /dev/sr0 写保护,将以只读方式挂载
[root@server ftp]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda3 xfs 295G 4.2G 291G 2% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 174M 841M 18% /boot
tmpfs tmpfs 378M 4.0K 378M 1% /run/user/42
tmpfs tmpfs 378M 36K 378M 1% /run/user/1000
tmpfs tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /var/ftp/centos7
'第六步,在镜像中复制出文件'
[root@server ftp]# cd centos7/images
[root@server images]# ll
总用量 8707
-rw-r--r--. 1 root root 8912896 11月 26 2018 efiboot.img
drwxr-xr-x. 2 root root 2048 11月 26 2018 pxeboot
-r--r--r--. 1 root root 442 11月 26 2018 TRANS.TBL
[root@server images]# cd pxeboot
[root@server pxeboot]# pwd
/var/ftp/centos7/images/pxeboot
[root@server pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@server pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@server pxeboot]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
'第七步,设置默认配置文件'
[root@server tftpboot]# mkdir pxelinux.cfg '创建pxelinux配置文件'
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# vim default '创建默认配置文件'
[root@server pxelinux.cfg]# vim default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@server pxelinux.cfg]# iptables -F
[root@server pxelinux.cfg]# setenforce 0
[root@server pxelinux.cfg]# systemctl start dhcpd
[root@server pxelinux.cfg]# systemctl start tftp
[root@server pxelinux.cfg]# systemctl start vsftpd
[root@server pxelinux.cfg]# netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 9894/X
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 9748/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9310/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 9308/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 9706/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 12115/sshd: root@pt
tcp 0 0 192.168.100.110:22 192.168.100.1:59737 ESTABLISHED 12115/sshd: root@pt
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::6000 :::* LISTEN 9894/X
tcp6 0 0 :::21 :::* LISTEN 13253/vsftpd
tcp6 0 0 :::22 :::* LISTEN 9310/sshd
tcp6 0 0 ::1:631 :::* LISTEN 9308/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 9706/master
tcp6 0 0 ::1:6010 :::* LISTEN 12115/sshd: root@pt
[root@server pxelinux.cfg]# netstat -nuap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:5353 0.0.0.0:* 8602/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 9748/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 13213/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 9748/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:660 0.0.0.0:* 8542/rpcbind
udp 0 0 0.0.0.0:41765 0.0.0.0:* 8602/avahi-daemon:
udp6 0 0 :::69 :::* 1/systemd
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 :::660 :::* 8542/rpcbind
第八步,开启虚拟机,选择
二:实现kickstart无人值守安装
2.1:装备安装应答文件
-
kickstart无人值守技术
- 创建应答文件,预先定义好各种安装设置
- 免去交互设置过程,从而实现全自动化安装
- 通过添加%post脚本,完成安装后的各种配置操作
-
应答文件的来源
-
编辑CentOS7 系统中现有的应答文件
/root/anaconda-ks.cfg
-
使用system-config-kickstart 工具创建新的应答文件
需要安装system-config-kickstart软件包
-
2.2:实现批量自动装机
[root@localhost ~]# yum install system-config-kickstart -y
'安装kickstart工具'
这一步要选择第一个安装引导程序
[root@server ~]# cd /var/ftp
[root@server ftp]# ls
centos7 ks.cfg pub
[root@server ftp]# cd
[root@server ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 下载 公共 图片 文档 桌面 模板 视频 音乐
[root@server ~]# vim anaconda-ks.cfg
...'复制以下内容'
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
[root@server ~]# vim /var/ftp/ks.cfg '复制的粘贴到此'
[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@server tftpboot]# cd pxelinux.cfg/
[root@server pxelinux.cfg]# ls
default
[root@server pxelinux.cfg]# vim default
..
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cf
g '在原本此段内容后面输入ks=ftp://192.168.100.100/ks.cf
g'
[root@server pxelinux.cfg]# systemctl restart dhcpd '重启服务'
[root@server pxelinux.cfg]# systemctl restart tftp
[root@server pxelinux.cfg]# systemctl restart vsftpd
图示正在安装