===========================================================================
概述:
在实际工作中,我们经常会遇到这样的情况:想要安装Linux但是计算机没有光驱,或者是有大批量的计算机需要同时安装Linux,如果通过光驱的方式一个个安装,不仅效率低,也不利于维护。这是时候你就需要PXE的强大功能了。本文就将讲解利用PXE自动化安装CentOS6和CentOS7的安装过程。 ===========================================================================
1.安装原理
★安装流程
客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP DHCP服务器返回分给客户机IP 客户机向本网络中的TFTP服务器索取文件 客户机取得bootstrap文件后之执行引导文件完成引导 然后读取配置文件,通过TFTP服务器加载内核和文件系统 进入安装画面, 此时可以通过选择HTTP、FTP、NFS(这里以http为例)方式进行安装
★实现PXE网络安装必需的4个要素 客户机的网卡必须为PXE网卡 网络中必须要有DHCP和TFTP服务器,当然这两个服务器可以是同一台物理主机 所安装的操作系统必须支持网络安装。 必须要有FTP,HTTP,NFS至少一个服务器,当然也可以和DHCP和TFTP服务器同为一台物理主机
2.PXE配置流程图
3.实验环境描述:
- 这里我使用的dhcp和tftp服务器为同一台CentOS 7主机;
4.CentOS 7具体实现如下:
1)安装dhcp服务器,配置自定义作用域,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [iyunv@centos7 ~]# yum install dhcp -y
[iyunv@centos7 ~]# cd /etc/dhcp/
[iyunv@centos7 dhcp]# ls
dhclient.d dhcpd6.conf dhcpd.conf
[iyunv@centos7 dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf
cp: overwrite ‘./dhcpd.conf’? y
[iyunv@centos7 dhcp]# vim dhcpd.conf
subnet 10.1.0.0 netmask 255.255.0.0 {
range 10.1.252.151 10.1.252.161;
filename "pxelinux.0";
next-server 10.1.252.153;
}
|
启动dhcp服务,验证端口(67/udp)是否处于监听状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [iyunv@centos7 dhcp]# systemctl start dhcpd
[iyunv@centos7 dhcp]# ss -unl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:67 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 *:31084 *:*
UNCONN 0 0 *:3031 *:*
UNCONN 0 0 *:514 *:*
UNCONN 0 0 :::69 :::*
UNCONN 0 0 :::50914 :::*
UNCONN 0 0 :::46863 :::*
UNCONN 0 0 ::1:323 :::*
UNCONN 0 0 :::514 :::*
|
2)配置tftp服务器,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
| [iyunv@centos7 ~]# yum install tftp-server tftp -y # 安装
[iyunv@centos7 ~]# systemctl start tftp.socket # 启动
[iyunv@centos7 dhcp]# ss -unl # 查看端口69/udp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:67 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 *:31084 *:*
UNCONN 0 0 *:3031 *:*
UNCONN 0 0 *:514 *:*
UNCONN 0 0 :::69 :::*
|
3)准备安装树
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| [iyunv@centos7 ~]# mkdir /var/ftp/pub/CentOS7
[iyunv@centos7 ~]# mount -r /dev/cdrom /var/ftp/pub/CentOS7
[iyunv@centos7 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 41922560 1017984 40904576 3% /
devtmpfs 477776 0 477776 0% /dev
tmpfs 500644 0 500644 0% /dev/shm
tmpfs 500644 13168 487476 3% /run
tmpfs 500644 0 500644 0% /sys/fs/cgroup
/dev/sda3 20961280 12449428 8511852 60% /usr
/dev/sda1 496300 192472 303828 39% /boot
/dev/sda6 5094652 11284 5022748 1% /testdir
tmpfs 100132 0 100132 0% /run/user/0
/dev/sr0 7587292 7587292 0 100% /var/ftp/pub/CentOS7 # 挂载成功
[iyunv@centos7 CentOS7]# ls
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
[iyunv@centos7 CentOS7]# systemctl start vsftpd # 启动ftp服务
|
4)准备/var/lib/tftpboot下文件
1
2
3
4
5
6
7
8
9
10
11
12
13
| # 我们需要安装syslinux程序包,它会提供 pxelinux.0 文件,然后复制到其目录下;
[iyunv@centos7 dhcp]# yum install syslinux -y
[iyunv@centos7 dhcp]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 挂载关盘,复制光盘中images/pxeboot下的文件(为pxe安装专用的内核等文件)
[iyunv@centos7 ~]# cp /var/ftp/pub/CentOS7/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
[iyunv@centos7 ~]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 vmlinuz
# 复制syslinux程序包下的文件,分别为基于链式方式引导文件,内存磁盘引导项,菜单项,内存当磁盘的模拟文件
[iyunv@centos7 ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
[iyunv@centos7 ~]# ls /var/lib/tftpboot/
chain.c32 initrd.img mboot.c32 memdisk menu.c32 pxelinux.0 vmlinuz
|
在/var/lib/tftpboot下创建为menu.c32提供菜单的配置文件(菜单加载时用到的配置文件信息)
1
2
3
4
5
6
7
8
9
10
11
| [iyunv@centos7 tftpboot]# mkdir pxelinux.cfg
[iyunv@centos7 tftpboot]# vim pxelinux.cfg/default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE
LABEL linux
MENU LABEL Install CentOS 7 X86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=ftp://10.1.252.153/pub/CentOS7/
|
5.此时,如果我们想手动安装,到这步就已经可以了,不防我们先测试一下
1)新建一个虚拟机,网卡改到和10.1.252.153同一网络,如下
2)启动此虚拟机,可以看到能正常获取到IP地址,并显示我们自己设定的安装界面,如下:
3)5s钟之后开始加载程序,然后进入到手动安装界面,如下:
|