目录
PXE的全称是preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。pxe是通过网卡引导启动。
pxe优点:
① 网卡需要查找相关的dhcp服务器(获取地址时间)
② 找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址,还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
③ 网卡使用tftp客户端吧引导程序加载到内存中来
④ bios执行引导程序
⑤ 引导程序会去TFTP去查找配置文件
⑥ 根据配置文件去引导安装系统
⑦ 系统安装过程
PXE远程安装服务器集成了CentOS 7安装源、TFTP服务、DHCP服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
TFTP(简单文件传输协议):内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口
可以使用http,ftp等方式,ftp文件传输的一种。
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。pxelinux.0启动pxe
DHCP: Dynamic Host Configuration Protocol,动态主机配置协议;UDP协议,C/S模式,dhcp server: 67/udp,dhcpv4 client :68/udp, dhcpv6 client: 546/udp 主要用途:
① 分配给同一局域网内新加机器的地址(配置文件)dhcp分配地址指明tftp服务器的地址
② tftp服务端开启udp配置默认关闭
③ 安装syslinux取得pxelinux.0文件
④ 安装vsftpd服务挂载软件安装源(mount /dev/sr0 /var/ftp/centos7)
⑤ 将四大文件拷入(/var/lib/tftpboot )
⑥ 将服务开启,关闭防火墙,selinux
主要文件:
/etc/xinetd.d/tftp:配置文件
/var/lib/tftpboot:站点?
[root@localhost ~]# yum install tftp-server vsftpd syslinux dhcp -y
root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
#将配置文件模板复制到dhcp目录下,并覆盖
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
32 subnet 192.168.190.0 netmask 255.255.255.0 { #指定网段
33 range 192.168.190.50 192.168.190.60; #定义用于分配的IP地址池
34 option routers 192.168.190.100; #指定给客户端分配的网关
35 next-server 192.168.190.100; #指定tftp的服务器地址
36 filename "pxelinux.0"; #指定启动文件
37 }
[root@localhost ~]# vim /etc/xinetd.d/tftp #修改配置文件
14 disable = no #no表示开启TFTP服务
[root@localhost ~]# cd /var/lib/tftpboot/ #切换到站点目录
[root@localhost tftpboot]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost tftpboot]# cp /mnt/isolinux/initrd.img .
[root@localhost tftpboot]# cp /mnt/isolinux/vmlinuz .
[root@localhost tftpboot]# ls
initrd.img vmlinuz
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0 #查找引导程序文件路径
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 . #拷贝到站点文件里
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# vim pxelinux.cfg/default
1 default linux
2 timeout 600
3
4 label linux
5 kernel vmlinuz
6 append initrd=initrd.img method=ftp://192.168.190.100/centos7
[root@localhost tftpboot]# mkdir /var/ftp/centos7/
[root@localhost tftpboot]# mount /dev/sr0 /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost tftpboot]# systemctl stop firewalld.service
[root@localhost tftpboot]# setenforce 0
[root@localhost tftpboot]# systemctl start tftp.socket
[root@localhost tftpboot]# systemctl start vsftpd
[root@localhost tftpboot]# systemctl start dhcpd
[root@localhost tftpboot]# yum install system-config-kickstart -y
[root@localhost tftpboot]# cd /var/ftp/
[root@localhost ftp]# ls #查看应答文件
centos7 ks.cfg pub
[root@localhost tftpboot]# vim pxelinux.cfg/default
1 default linux
2 timeout 600
3
4 label linux
5 kernel vmlinuz
6 append initrd=initrd.img method=ftp://192.168.190.100/centos7 ks=ftp://192.168.190.100/ks.cfg
#将应答文件位置指明
[root@localhost ~]# yum install epel-release.noarch -y
[root@localhost ~]# yum install cobbler dhcp httpd -y
[root@localhost ~]# systemctl enable --now cobblerd httpd tftp dhcpd
[root@localhost ~]# cobbler check
#生成新密码,默认安装好的系统root密码为cobbler
[root@localhost ~]# openssl passwd -1 '123123' #配置root修改密码生成密钥
$1$Mpd6eW5n$r4EVXEzCVUc5.w.Ok77f31
[root@localhost ~]# vim /etc/cobbler/settings
101 default_password_crypted: "$1$fTpFEKwU$pPPBZwUVJuXOcRmmW4JAJ0"
242 manage_dhcp: 1 #设置为1,表示通过cobbler生成dhcpd.conf配置文件
278 next_server: 192.168.190.101 #tftp服务器的IP地址
298 pxe_just_once: 1 #设置为1,防止重复安装系统
390 server: 192.168.190.101 #cobbler服务器的IP地址
[root@localhost ~]# systemctl restart cobblerd
[root@localhost ~]# vim /etc/cobbler/dhcp.template #修改模板文件
21 subnet 192.168.190.0 netmask 255.255.255.0 {
22 option routers 192.168.190.2;
23 option domain-name-servers 8.8.8.8;
24 option subnet-mask 255.255.255.0;
25 range dynamic-bootp 192.168.190.20 192.168.190.30;
[root@localhost ~]# cobbler sync
……
*** TASK COMPLETE ***
[root@localhost ~]# systemctl restart cobblerd.service
[root@localhost ~]# tree /var/lib/tftpboot
/var/lib/tftpboot #已同步信息
├── boot
│?? └── grub
│?? └── menu.lst
├── etc
├── grub
│?? ├── efidefault
│?? └── images -> ../images
├── images
├── images2
├── memdisk
├── menu.c32
├── ppc
├── pxelinux.0
├── pxelinux.cfg
│?? └── default
└── s390x
└── profile_list
10 directories, 7 files
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# cobbler import --name=centos-7-x86_64 --path=/mnt --arch=x86_64
task started: 2024-01-17_202530_import
task started (id=Media import, time=Wed Jan 17 20:25:30 2024)
……
*** TASK COMPLETE ***
[root@localhost ~]# cd /var/www/cobbler/ks_mirror/
[root@localhost ks_mirror]# ls
centos-7-x86_64 config
[root@localhost ks_mirror]# du -sh /var/www/cobbler/ks_mirror/*
4.3G /var/www/cobbler/ks_mirror/centos-7-x86_64 #拷贝的文件
4.0K /var/www/cobbler/ks_mirror/config
?