DHCP服务器
-
Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任务小组)组织制定,用来简化主机地址分配管理
– 主要分配以下入网参数
– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址 -
DHCP地址分配的四次会话(以广播进行,先到先得)
– DISCOVERY --> OFFER --> REQUEST -->ACK
– 一个网络中,只能有一台DHCP服务器
– 服务端基本概念
– 租期:允许客户机租用IP地址的时间期限,单位为秒
– 作用域:分配给客户机的IP地址所在的网段
– 地址池:用来动态分配的IP地址的范围
yum -y install dhcp
vim /etc/dhcp/dhcpd.conf
# 按照提示读入模板配置文件,修改以下
subnet 192.168.4.0 netmask 255.255.255.0 { #分配网段
range 192.168.4.110 192.168.4.200; #分配的IP地址范围
option domain-name-servers 192.168.4.100; #分配的DNS
option routers 192.168.4.254; #分配的网关地址
default-lease-time 600;
max-lease-time 7200;
}
systemctl start dhcpd
网络装机服务器
– 规模化:同时装配多台主机
– 自动化:装系统、配置各种服务
– 远程实现:不需要光盘、U盘等物理安装介质
- PXE,Pre-boot eXecution Environment
– 预启动执行环境,在操作系统之前运行
– 可用于远程安装 - 工作模式
– PXE client 集成在网卡的启动芯片中
– 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行 - 网络装机服务器需要服务
– DHCP服务,分配IP地址、定位引导程序
– TFTP服务,提供引导程序下载
– HTTP服务(或FTP/NFS),提供yum安装源 - 客户机应具备的条件
– 网卡芯片必须支持PXE协议
– 主板支持从网卡启动
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.100 192.168.4.200;
option domain-name-servers 192.168.4.100;
option routers 192.168.4.254;
next-server 192.168.4.100; #指定网络装机的服务器IP地址
filename "pxelinux.0"; #指定网卡引导文件名称 --> 网络安装说明书,二进制文件
default-lease-time 600;
max-lease-time 7200;
}
systemctl restart dhcpd
- TFTP服务器,提供众多的引导文件
– TFTP:简单的文件传输协议 默认端口:69
– 默认共享数据路径:/var/lib/tftpboot
yum -y install tftp-server
systemctl restart tftp #开启服务
# 部署pxelinux.0文件
yum provides */pxelinux.0 #查询仓库中那个软件包产生
yum -y install syslinux
rpm -ql syslinux | grep pxelinux.0 #查询安装清单
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
ls /var/lib/tftpboot/
pxelinux.0
- 基本思路
– DHCP服务—>IP地址、next-server、filename
– TFTP服务—>pxelinux.0
– pxelinux.0—>读取菜单文件/var/lib/tftpboot/pxelinux.cfg/default
– 本机与所用镜像文件均为CentOS7v1804,镜像文件挂载在 /mnt 下
部署菜单文件
mount /dev/cdrom /mnt
ls /mnt/isolinux
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32
mkdir /var/lib/tftpboot/pxelinux.cfg #创建菜单文件
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
ls /var/lib/tftpboot/
pxelinux.0
ls /var/lib/tftpboot/pxelinux.cfg/
isolinux.cfg
部署内核(vmlinuz)与驱动程序(initrd.img)
ls /mnt/isolinux/
boot.cat grub.conf isolinux.bin memtest TRANS.TBL vmlinuz
boot.msg initrd.img isolinux.cfg splash.png vesamenu.c32
cp /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img /var/lib/tftpboot/
ls /var/lib/tftpboot/
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
部署图形模块(vesamenu.c32)与背景图片(splash.png)
cp /mnt/isolinux/vesamenu.c32 /mnt/isolinux/splash.png /var/lib/tftpboot/
修改菜单文件的内容
vim /var/lib/tftpboot/pxelinux.cfg/default
1 default vesamenu.c32 #默认加载运行图形模块
2 timeout 600 #读秒的时间,1/10秒
...
10 menu background splash.png #背景图片
11 menu title PXE Server #标题内容
...
61 label linux
62 menu label ^Install CentOS 7 #菜单显示内容
63 menu default #读秒结束的默认选项
64 kernel vmlinuz #加载运行内核
65 append initrd=initrd.img #加载运行驱动程序
# 后面的label没有需要可以都删掉
- 基本思路
– DHCP服务—>IP地址、next-server、filename
– TFTP服务—>pxelinux.0
– pxelinux.0—>读取菜单文件/var/lib/tftpboot/pxelinux.cfg/default
– default—>图形模块、驱动程序、背景图片……
初步测试
- 将虚拟机对应网卡的本地DHCP服务取消,避免和自己的DHCP服务器冲突,新建一台对应网段虚拟机(无需挂在镜像文件)打开就会看到安装菜单
- 测试机最少2G内存
部署安装源
- 构建FTP服务,共享光盘所有内容(也可以采用HTTP服务安装)
– FTP:文件传输协议 默认端口:21
– 默认共享数据的路径:/var/ftp
#安装软件包
yum -y install vsftpd
systemctl restart vsftpd
#创建挂载点
mkdir /var/ftp/centos
mount /dev/cdrom /var/ftp/centos
mount: /dev/sr0 写保护,将以只读方式挂载
curl ftp://192.168.4.7/centos/
-rw-rw-r-- 1 0 0 14 May 02 2018 CentOS_BuildTag
drwxr-xr-x 3 0 0 2048 May 03 2018 EFI
-rw-rw-r-- 1 0 0 227 Aug 30 2017 EULA
-rw-rw-r-- 1 0 0 18009 Dec 09 2015 GPL
drwxr-xr-x 2 0 0 2048 May 03 2018 LiveOS
drwxrwxr-x 2 0 0 1640448 May 03 2018 Packages
-rw-rw-r-- 1 0 0 1690 Dec 09 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 1 0 0 1690 Dec 09 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 0 0 2883 May 07 2018 TRANS.TBL
drwxr-xr-x 3 0 0 2048 May 03 2018 images
drwxr-xr-x 2 0 0 2048 May 03 2018 isolinux
drwxrwxr-x 2 0 0 4096 May 07 2018 repodata
生成应答文件,实现无人值守安装
- 安装图形的工具,生成应答文件
yum -y install system-config-kickstart
# system-config-kickstart程序需要Yum仓库的支持才能显示软件包的选择,必须要求Yum仓库的标识为[development]
vim /etc/yum.repos.d/mylocal.repo
[development]
name=development
baseurl=file:///mnt
enabled=1
gpgcheck=0
system-config-kickstart # 生成 ks.cfg 应答文件,注意将安装源地址写好,其他自定义即可
- 利用FTP服务共享ks.cfg应答文件
cp /root/ks.cfg /var/ftp/
curl ftp://192.168.4.7/ks.cfg #测试访问
- 利用菜单文件指定ks.cfg应答文件位置
vim /var/lib/tftpboot/pxelinux.cfg/default
...
61 label linux
62 menu label ^Install CentOS 7
63 menu default
64 kernel vmlinuz
65 append initrd=initrd.img ks=ftp://192.168.4.100/ks.cfg #指定获取应答文件
- 再次开启测试机,即可完成自定义的自动装机
总结思路:
1.dhcp服务—》IP地址、next-server、filename “pxelinux.0”
2.tftp服务—》 “pxelinux.0”
3.pxelinux.0—》读取菜单文件/var/lib/tftpboot/pxelinux.cfg/default
4.default—》vesamenu.c32、读秒时间、vmlinuz、initrd.img、ftp://192.168.4.100/ks.cfg
5.ks.cfg应答文件—》语言、键盘类型、分区、安装方式url --url=“ftp://192.168.4.100/centos”