赞
踩
DHCP概述、PXE批量装机、配置PXE引导、Kickstart自动应答、Cobbler装机平台
DHCP动态主机配置协议(Dynamic Host Configuration Protocol),由IETF(Internet网络工程师任务小组)组织指定,用来简化主机地址分配管理;
主要分配以下入网参数:
DHCP地址分配的四次会话(以DHCP广播方式进行):
解释:客户端DHCP广播 — DHCP服务器回应广播(分配IP) — 客户端反馈 — ACK确认
(同一网络中可能有多个DHCP广播,所以一般要求一个网段中只能有一台DHCP服务器)
服务端基本概念:
1)配置DHCP地址分配服务
步骤1:安装dhcp软件包
[root@svr7 ~]# yum -y install dhcp //安装软件包
步骤2:修改配置文件(末行模式:: -r /usr/share/doc/dhcp*/dhcpd.conf.example)
- [root@svr7 ~]# vim /etc/dhcp/dhcpd.conf //保留关键配置信息
- # DHCP Server Configuration file.
- # see /usr/share/doc/dhcp*/dhcpd.conf.example //参考文件
- # see dhcpd.conf(5) man page
- subnet 10.5.5.0 netmask 255.255.255.224 { //声明分配的网段
- range 10.5.5.26 10.5.5.30; //分配IP地址范围
- option domain-name-servers ns1.internal.example.org; //分配客户端DNS
- option domain-name "internal.example.org"; //分配客户端域名(del)
- option routers 10.5.5.1; //分配客户端网关
- option broadcast-address 10.5.5.31; //分配客户端广播地址(del)
- default-lease-time 600; //默认续租时间60秒
- max-lease-time 7200; //最大续租时间720秒
- }
修改关键字段:
- [root@svr7 ~]# vim /etc/dhcp/dhcpd.conf //修改关键配置信息
- # DHCP Server Configuration file.
- # see /usr/share/doc/dhcp*/dhcpd.conf.example
- # see dhcpd.conf(5) man page
- subnet 192.168.4.0 netmask 255.255.255.0 { //声明分配的网段
- range 192.168.4.100 192.168.4.200; //分配IP地址范围
- option domain-name-servers 192.168.4.7; //分配DNS
- option routers 192.168.4.254; //分配网关地址
- default-lease-time 600; //默认续租时间60秒
- max-lease-time 7200;
- }
步骤3:重启服务
[root@svr7 ~]# systemctl restart dhcpd
注意:每个字段的[ {} ]为一对(最后没有;分号)每个字段的[ ; ]前后注意不要多空格
常见报错:分配的地址不在分配网络字段范围则报错
网络装机服务是一种允许计算机通过网络启动和安装操作系统的技术。通常用于大规模部署操作系统、软件和配置,特别是在企业环境中,可以显著提高部署效率和一致性。
网络装机服务的工作原理如下:
客户端启动:当计算机启动时,BIOS或UEFI固件会检查网络接口卡(NIC)是否支持PXE,并尝试通过网络启动。
DHCP请求:客户端发送一个DHCP请求到网络中的DHCP服务器,以获取IP地址和PXE启动所需的引导文件位置(通常是一个TFTP服务器的地址和文件路径)。
TFTP引导:客户端从TFTP服务器下载引导文件(通常是一个小的引导加载程序,如PXELINUX或GRUB),并执行该文件。
引导加载程序:引导加载程序会提供一个菜单或界面,允许用户选择要安装的操作系统或进一步的配置选项。
操作系统安装:根据用户的选择,引导加载程序会从网络服务器(如HTTP、FTP或NFS)下载操作系统的安装文件,并启动安装过程。
网络装机服务的优势包括:
PXE(Pre-boot eXecution Environment)预启动执行环境,在操作系统之前运行,可用于远程安装;工作模式:
为了实现PXE网络装机服务,通常需要以下组件:
- 支持PXE的网络接口卡:客户端计算机需要支持PXE启动的NIC。
- DHCP服务器:分配IP地址,并提供TFTP服务器的地址和引导文件路径。
- TFTP服务器:提供引导加载程序文件。
- 引导加载程序:如PXELINUX或GRUB,提供启动菜单和进一步的引导功能。
- 操作系统镜像服务器:存储和提供操作系统安装文件,如HTTP、FTP或NFS服务器。
解释:客户端服务器机默认先找光驱、USB(需安装操作系统)— 调用硬件网卡广播 — DHCP分配IP 及 告知BootServer(TFTP提供启动文件使硬件正常启动)—FTP(软件包)
- [root@svr7 ~]# vim /etc/dhcp/dhcpd.conf //修改配置文件
- # DHCP Server Configuration file.
- # see /usr/share/doc/dhcp*/dhcpd.conf.example
- # see dhcpd.conf(5) man page
- subnet 192.168.4.0 netmask 255.255.255.0 { //声明网段
- range 192.168.4.100 192.168.4.200; //指定IP地址范围
- option domain-name-servers 192.168.4.7; //指定DNS
- option routers 192.168.4.254; //指定网关
- default-lease-time 600;
- max-lease-time 7200;
- next-server 192.168.4.7; //指定PXE服务器(后续服务在192.168.4.7)
- filename "pxelinux.0"; //指明网卡引导文件名(网络装机说明书)
- }
-
- [root@svr7 ~]# systemctl restart dhcpd
- [root@svr7 ~]# netstat -anptu | grep dhcpd
- udp 0 0 0.0.0.0:67 0.0.0.0:* 3230/dhcpd
注意:由于网卡引导文件是二进制文件,可以安装软件生成该文件,默认叫 pxelinux.0,建议在配置文件中指明的网卡引导文件名为 pxelinux.0,方便记忆无需修改其它文件名。
TFTP简单文件传输协议(Trivial File Transfer Protocol),简单文件传输协议,UDP 69端口
(没有操作系统也可以传输数据,有IP即可,无需验证)
1)启用TFTP服务端
① 安装tftp软件包
[root@svr7 ~]# yum -y install tftp-server.x86_64 //安装软件包
② 重启服务
- [root@svr7 ~]# systemctl restart tftp //自动生成/var/lib/tftpboot目录
- [root@svr7 ~]# ls /var/lib/tftpboot/ //目录内容显示为空
2)提供PXE引导启动程序(pxelinux.0)
① 查看软件包
- [root@svr7 ~]# yum provides */pxelinux.0 //查询哪个软件包产生该文件
- 已加载插件:fastestmirror, langpacks
- Loading mirror speeds from cached hostfile
- mydvd/filelists_db | 6.9 MB 00:00
- syslinux-4.05-13.el7.x86_64 : Simple kernel loader which boots //需下载
- : from a FAT filesystem
- 源 :mydvd
- 匹配来源:
- 文件名 :/usr/share/syslinux/pxelinux.0
-
- syslinux-tftpboot-4.05-13.el7.x86_64 : SYSLINUX modules in
- ...: /var/lib/tftpboot, available for network booting
- 源 :mydvd
- 匹配来源:
- 文件名 :/var/lib/tftpboot/pxelinux.0
建议安装:syslinux-4.05-13.el7.x86_64,为方便后续排查
② 下载安装软件包,生成pxelinux.0引导文件
- [root@svr7 ~]# yum -y install syslinux //安装syslinux软件包
- [root@svr7 ~]# rpm -ql syslinux | grep pxelinux.0 //查询软件包安装清单
- /usr/share/syslinux/gpxelinux.0
- /usr/share/syslinux/pxelinux.0
③ 复制pxelinux.0引导文件到TFTP共享主目录
- [root@svr7 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- [root@svr7 ~]# ls /var/lib/tftpboot/
- pxelinux.0
3)配置启动菜单文件(default)
部署default菜单文件,将光盘中的菜单文件进行复制作为模板,为pxelinux.0启动程序提供配置;(作为模板的光盘菜单文件:/mydvd/isolinux/isolinux.cfg)
配置路径:/var/lib/tftpboot/pxelinux.cfg/default //default为复制的菜单文件
注意:需手动创建/var/lib/tftpboot/pxelinux.cfg/,再拷贝光盘文件作为模板文件并改名default(文件名必须写成default)
① 手动创建配置路径并拷贝模板文件及改名
- [root@svr7 ~]# ls /mydvd/isolinux/ //查看挂载的光盘内容(只读)
- boot.cat initrd.img memtest vesamenu.c32
- boot.msg isolinux.bin splash.png vmlinuz
- grub.conf isolinux.cfg TRANS.TBL
- [root@svr7 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg //手动创建路径pxelinux.cfg
- [root@svr7 ~]# ls /var/lib/tftpboot/
- pxelinux.0 pxelinux.cfg
- [root@svr7 ~]# cp /mydvd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default //拷贝光盘的isolinux.cfg作为模板菜单文件
- [root@svr7 ~]# ls /var/lib/tftpboot/pxelinux.cfg/
- default //配置菜单文件
② 拷贝vesamenu.c32提供图形支持模块和splash.png背景图片(256M像素以下)
- [root@svr7 ~]# cp /mydvd/isolinux/vesamenu.c32 /mydvd/isolinux/splash.png /var/lib/tftpboot/ //vesamenu.c32提供图形支持,splash.png背景图片
- [root@svr7 ~]# ls /var/lib/tftpboot/
- pxelinux.0 pxelinux.cfg splash.png vesamenu.c32
③ 拷贝Linux内核vmlinuz及initrd.img初始镜像文件(驱动文件)
- [root@svr7 ~]# cp /mydvd/isolinux/vmlinuz /mydvd/isolinux/initrd.img /var/lib/tftpboot/
- [root@svr7 ~]# ls /var/lib/tftpboot/
- initrd.img pxelinux.cfg vesamenu.c32
- pxelinux.0 splash.png vmlinuz
归纳:共享目录中总共6个文件,包括:拷贝的5个文件,创建1的个目录(pxelinux.0)
① pxelinux.0 引导文件(工具生成)
② Pxelinux.cfg —> default 目录—>菜单文件(拷贝模板)
③ Vmlinuz 内核文件(拷贝)
④ Initrd.img 驱动文件(拷贝)
⑤ vesamenu.c32 图形支持模块(拷贝)
⑥ Splash.png 背景图片(拷贝)
4)default配置菜单文件调整
① 修改菜单显示及启动参数,为每个系统安装设置好的label菜单项标签内容:
- [root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default //修改配置菜单文件
- 1 default vesamenu.c32 //默认加载运行图形模块
- 2 timeout 600 //读秒时间60秒(1/10秒)
- 10 menu background splash.png //背景图片
- 11 menu title NSD PXE SERVER //启动菜单标题信息
- 61 label linux //菜单项标签
- 62 menu label ^Install CentOS 7
- 63 menu default //添加default,读秒结束后默认加载选项
- 64 kernel vmlinuz //内核的位置
- 65 append initrd=initrd.img //驱动(初始镜像)、inst.stage=安装源位置
- ...
补充:inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet //光盘的安装源位置
注意:确定菜单文件目录中的Linux内核和初始化镜像文件存在
② 重启服务
- [root@svr7 ~]# systemctl restart dhcpd //重启DHCP服务
- [root@svr7 ~]# systemctl restart tftp //重启TFTP服务
PXE装机测试(初步验证)
注意事项:
- 安装方式选择“网络引导(PXE)”
- 新虚拟机与PXE服务器在同一网络(网卡类型:Private虚拟网络)
- 排除其它DHCP服务干扰
① 新建一台虚拟机,选择网络引导PXE
② 选择系统(概述)
③ 内存:2048M,CPU:2
④ 磁盘空间:20G
⑤ 新虚拟机与PXE服务器在同一网络(网卡类型:Private虚拟网络),并点击完成
⑥ 进入DHCP广播页面
⑦ 进入菜单项页面
由于没有应答文件,等待一段时间后则超时报错;(找提供的应答文件)
排错思路:
# ls /etc/dhcp/dhcpd.conf) —》 filename "pxelinux.0";
# ls /var/lib/tftpboot/ —》initrd.img pxelinux.cfg vesamenu.c32 pxelinux.0 splash.png vmlinuz
# ls /var/lib/tftpboot/pxelinux.cfg —》Default
PXE引导过程:
1.通过DHCP配置网卡、获取TFTP地址及PXE启动文件
2.从TFTP服务器下载PXE启动文件
3.读取菜单启动配置(pxelinux.cfg/defualt)
4.根据选择vmlinuz和initrd.img
5.内核vmlinuz运行后,主导安装程序
FTP文件传输协议,默认端口:21
默认共享数据的主目录:/var/ftp
① 安装FTP软件包并重启服务
- [root@svr7 ~]# yum -y install vsftpd //下载安装包
- [root@svr7 ~]# systemctl restart vsftpd //重启服务
② 建立挂载点并测试
- [root@svr7 ~]# mkdir /var/ftp/centos
- [root@svr7 ~]# mount /dev/cdrom /var/ftp/centos/ //注意临时挂载【/】
- mount: /dev/sr0 写保护,将以只读方式挂载
- [root@svr7 ~]# ls /var/ftp/centos/
- CentOS_BuildTag images repodata
- EFI isolinux RPM-GPG-KEY-CentOS-7
- EULA LiveOS RPM-GPG-KEY-CentOS-Testing-7
- GPL Packages TRANS.TBL
- [root@svr7 ~]# curl ftp://192.168.4.7/centos/ //测试FTP
- -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
注意:curl测试ftp://192.168.4.7/centos/结尾必须要加【/】
补充:ftp://192.168.4.7/,相当于路径/var/ftp
1)创建应答文件
① 安装system-config-kickstart.noarch软件包
- [root@svr7 ~]# yum -y install system-config-kickstart.noarch
- [root@svr7 ~]# system-config-kickstart //运行程序(不能使用远程方式)
如图所示:
注意:运行程序后软件包选择显示“下载软件包信息失败”,因为system-config-kickstart程序需要Yum仓库的支持才能显示软件包的选择,且必须要求Yum仓库的标识为[development](BUG)
修改YUM仓库配置文件的标识:[development]
- [root@svr7 ~]# vim /etc/yum.repos.d/mydvd.repo
- [root@svr7 ~]# cat /etc/yum.repos.d/mydvd.repo
- [development] //修改仓库标识
- name=mydvd
- baseurl=file:///mydvd
- enable=1
- gpgcheck=0
打开工具,检查软件包选择界面是否有软件包
② 运行system-config-kickstart程序,配置应答文件
[root@svr7 ~]# system-config-kickstart //运行图形工具
1.【基本配置】设置默认语言、时区、Root密码(UTC针对双系统才需要)
2.【安装方法】执行全新安装、FTP目录为网络路径:192.168.4.7/centos
3.【引导装载程序选项】安装新引导转载程序
4.【分区信息】清除主引导记录、删除所有现存分区、初始化磁盘标签,并添加新的分区
5.【新分区】挂载点选择根目录【/】,使用磁盘上全部未用空间
分区后,保存配置确定
6.【网络配置】添加网络设备【eth0】,(不一定是eth0,后续还是需要修改网卡规则)
7.【验证】(无修改项)
8.【防火墙配置】禁用SELinux和防火墙
9.【显示设置】(无修改项)
10.【软件包选择】系统—>基本,最小安装
11.【文件 - 保存】保存在/root目录,默认命名为:ks.cfg,保存并退出工具
2)启用应答文件(PXE与Kickstar结合使用)
修改PXE启动配置,调用应答文件
③ 将保存在/root目录下的ks.cfg拷贝到/var/ftp目录
- [root@svr7 ~]# ls /root/
- anaconda-ks.cfg ks.cfg 模板 图片 下载 桌面
- initial-setup-ks.cfg 公共 视频 文档 音乐
- [root@svr7 ~]# ls -l /root/ks.cfg
- -rw-r--r--. 1 root root 895 3月 19 16:49 /root/ks.cfg
-
- [root@svr7 ~]# cp /root/ks.cfg /var/ftp/ //复制应答文件到FTP目录
- [root@svr7 ~]# ls /var/ftp/
- centos ks.cfg pub
-
- [root@svr7 ~]# curl ftp://192.168.4.7/ks.cfg //curl查看应答文件
- #platform=x86, AMD64, 或 Intel EM64T
- #version=DEVEL
- # Install OS instead of upgrade
- install
- # Keyboard layouts
- keyboard 'us'
- # Root password
- rootpw --iscrypted $1$9bo7fGdi$3IjOJ5eka2X37kVaxP5r40
- # Use network installation
- url --url="ftp://192.168.4.7/centos"
- # System language
- lang en_US
- # System authorization information
- auth --useshadow --passalgo=sha512
- # Use graphical install
- graphical
- firstboot --disable
- # SELinux configuration
- selinux --disabled
-
- # Firewall configuration
- firewall --disabled
- # Network information
- network --bootproto=dhcp --device=eth0
- # Reboot after installation
- reboot
- # System timezone
- timezone Asia/Shanghai
- # System bootloader configuration
- bootloader --location=mbr
- # Clear the Master Boot Record
- zerombr
- # Partition clearing information
- clearpart --all --initlabel
- # Disk partitioning information
- part / --fstype="xfs" --grow --size=1
-
- %packages
- @base
-
- %end
④ 修改default菜单文件,指定应答文件获取方式(安装源)
- [root@svr7 ~]# 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.7/ks.cfg
查看PXE安装的虚拟机:
- DHCP服务:分配IP地址、指定next-server、指定filename "pxelinux.0"
- TFTP服务:提供pxelinux.0引导(工具生成)、提供菜单default(模板)、vmlinuz内核、inited.img驱动、vesamenu.c32图形模块、背景图片(拷贝)
- pxelinux.0引导主机 —》读取菜单文件/var/lib/tftpboot/pxelinux.cfg/default
- default菜单配置 —》vesamenu.c32、标题、默认选项、读秒时间、vmlinuz、initrd.img、安装源ftp://192.168.4.7/ks.cfg
- FTP服务:提供挂载/var/ftp/centos、ks.cfg应答文件
- ks.cfg应答文件 —》语言、键盘类型、root密码、FTP软件包挂载点、新建分区、基本安装(最小化安装)
基本概念:
1)安装Cobbler组件
2)配置Cobbler
步骤1:解压软件包
- [root@svr7 ~]# unzip /root/cobbler.zip -d /
- [root@svr7 ~]# ls /cobbler/
- cobbler_boot.tar.gz cobbler_rpm.zip cobbler_web.png
- ### 解释:引导文件(pxelinux.0)、软件包文件、图片 ###
- [root@svr7 ~]# unzip /cobbler/cobbler_rpm.zip -d /opt/ //解压软件包文件
- [root@svr7 ~]# ls /opt/cobbler/
- Cobbler-2.8.2-1.el7.x86_64.rpm
- Cobbler-web-2.8.2-1.el7.noarch.rpm
- ...
- [root@svr7 ~]# cd /cobbler
- [root@svr7 cobbler]# yum -y install dhcp httpd mod_ssl //安装软件包
- [root@svr7 cobbler]# yum -y *.repo
- [root@svr7 cobbler]# cd /
- [root@svr7 /]# rpm -q cobbler //查看软件包
- Cobbler-2.8.2-1.el7.x86_64
步骤2:配置主配置文件
- [root@svr7 /]# vim /etc/cobbler/srttings //修改配置文件
- --- YAML格式(不能更改,且冒号后面有空格)
- server: 192.168.4.7 //指定本机为cobbler服务器
- next_server: 192.168.4.7 //指定下一个服务器为本机(TFTP服务器)
- manage_dhcp: 1 //设置cobber管理DHCP服务器
- pxe_just_once: 1 //防止客户端重复安装操作系统(可选)
- ...
步骤3:配置cobbler的DHCP
[root@svr7 /]# vim /etc/cobbler/dhcp.template //修改cobbler的DHCP配置文件
主要将默认192.168.1.X网段的地址通过% s/192.168.1/192.168.4/g 全局修改即可,如图所示:
补充:主配置文件赋予cobbler管理DHCP,当修改cobbler的DHCP配置文件并同步之后,将dhcp.template的配置应用到DHCP服务配置;
步骤4:部署引导文件
- [root@svr7 /]# tar -tf /cobbler/cobbler_boot.tar.gz //查看软件包内容
- tar: 从成员中删除开头的“/”
- /var/lib/cobbler/loaders/
- /var/lib/cobbler/loaders/README
- /var/lib/cobbler/loaders/COPYING.elilo
- ...
- [root@svr7 /]# tar -xPf /cobbler/cobbler_boot.tar.gz //绝对路径释放(PATH 以包的路径进行释放)
- [root@svr7 /]# ls /var/lib/cobbler/loadres/
- COPYING.elilo COPY.yaboot grubx86_64.efi menu.c32 README
- COPYING.syslinux elilo-ia64.efi grub-x86.efi pxelinux.0 yaboot
步骤5:重启相关服务
- [root@svr7 /]# systemctl restart cobblerd
- [root@svr7 /]# systemctl restart httpd
- [root@svr7 /]# systemctl restart tftp
- [root@svr7 /]# systemctl restart rsyncd //同步服务
补充:cobbler服务会借助Rsync同步把所有相关配置同步到各个服务当中,Cobblerd类似管家,会掌管其他服务的配置和更新(httpd dhcp tftp)
步骤6:验证服务
[root@svr7 /]# cobbler sync //把cobbler所有配置及服务配置同步
3)Cobbler使用(Cobbler导入镜像内容、客户端测试)
格式:cobbler import --path=挂载点 --name=导入系统命名
补充:通过命令将光盘文件内容进行导入,导入后自动共享光盘的内容、自动生成应答文件、菜单文件,应当文件默认最小化安装,系统密码默认cobbler;
默认光盘文件内容目录:/var/www/cobbler/ks_mirror/
步骤7:导入镜像内容
[root@svr7 /]# cobbler import --path=/dvd --name=Cent0S7.5 //导入光盘文件(可导入多个)
步骤8:客户端测试
① 选择操作系统
② 虚拟机名称及存放位置
③ CPU默认即可
④ 内容建议2G
⑤ 进入菜单文件
⑥ 进入安装默认字符模式
⑦ 进入最小化安装的交互界面
补充:客户端测试,需要将网络设置成虚拟局域网;
列出可用网络安装的系统镜像
- [root@svr7 /]# cobbler list //列出可用网络安装的系统镜像
- distros:
- CentOS7-X86_64 //安装客户端至少2G内存
- profiles:
- CentOS7-X86_64
删除ISO系统
- [root@svr7 /]# cobbler list
- [root@svr7 /]# cobbler profile remove --name=CentOS7-x86_64 //删除菜单信息
- [root@svr7 /]# cobbler distros remove --name=CentOS7-x86_64 //删除菜单信息
本篇章节为 【第一阶段】SERVICES-DAY4 的学习笔记,可以初步了解到 DHCP介绍、PXE批量装机、配置PXE引导、Kickstart自动应答、Cobbler装机平台。除此之外推荐参考相关学习网址:
Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。