目录
? ? ? ? ?2、系统装机的三种引导方式
二、pxe(preboot execute environment )
3.3 修改/var/lib/tftpboot/pxelinux.cfg/default文件
安装过程:anaconda会根据用户的选择和配置,将操作系统的文件复制到指定的安装位置,并进行必要的系统配置。这可能包括安装软件包、设置系统服务、配置引导加载程序等
安装完成:安装过程完成后,anaconda会提示用户安装完成,并要求重新启动计算机
在系统光盘的isolinux目录下有和安装相关的文件
boot.cat: 相当于grub的第一阶段,是引导光盘中的一个关键文件,包含了引导目录的信息、引导加载程序的位置和配置、启动菜单的配置以及光盘验证信息
grub.conf:是GRUB引导加载程序的配置文件,用于定义引导菜单的配置、默认启动项和其他选项
isolinux.bin:这是一个引导加载程序,用于引导光盘的启动过程。它包含了启动光盘所需的引导代码和配置信息,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
memtest:是一个独立的内存测试工具,用于检测计算机的内存是否存在问题
TRANS.TBL:是一个用于文件传输的索引文件,用于记录文件名和位置信息。它在文件传输过程中起着索引和参考的作用,以确保文件的完整性和准确性
vmlinuz:这是Linux内核的可执行文件。在引导过程中,它会被加载到内存中,并由引导加载程序启动
boot.msg:通常是一个用于引导菜单的消息文件。它包含了一些文本信息,用于在引导过程中向用户显示一些提示、说明或者其他相关信息
initrd.img:这个文件是一个初始 RAM 磁盘(Initial RAM Disk)映像,它包含了在启动过程中需要用到的文件系统、驱动程序和工具。在启动过程中,initrd会被加载到内存中,以便内核可以在没有完整文件系统支持的情况下启动并加载必要的驱动程序
isolinux.cfg:这是isolinux的配置文件。当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件,定义了启动菜单的外观和行为。它包含了启动选项、菜单标题、菜单项等信息
splash.png:这是一个启动菜单的背景图片。它用于美化启动菜单的外观,并提供视觉效果
vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
PXE(Preboot eXecution Environment)是一种网络协议,它允许计算机通过网络启动和安装操作系统。使用PXE,计算机可以从网络中的服务器获取引导程序和操作系统安装文件,而不是从本地硬盘或光盘启动。这种方法对于大规模部署和远程管理计算机非常有用
PXE通常涉及以下几个组件:
①设备网卡需要查找相关的dhcp服务器(获取地址时间)
②找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址还提供给客户机TFTP server地址(dhcp本身不提供tftp服务)
③网卡使用tftp客户端把引导程序加载到内存中来
④bios执行引导程序
⑤引导程序会去TFTP server去查找配置文件
⑥根据配置文件去引导安装系统
⑦系统安装过程
PXE远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件
前提:关闭防火墙和临时防护
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭临时防护
基本流程:
①配置dhcp服务器(需要手写dhcp配置文件)给同一局域网内新加机器分配ip地址
②tftp服务端开启udp配置默认关闭
③安装vsftpd服务,通过光驱挂载获取软件安装源
④安装syslinux获取得 pxelinux.0 文件
⑤将四大文件拷入 (/var/lib/tftpboot )
initrd.img (从光驱挂载到本地获取)
pxelinux.0? (类似grub)
pxelinux.cfg/default (需要手写配置软件安装源的来源)?
vmlinuz(从光驱挂载到本地获取)
⑥开启tftp和vsftpd服务
具体操作步骤:
#安装所需软件
[root@localhost ~]#yum install tftp-server vsftpd syslinux dhcp -y
#将dhcp配置文件模板复制到dhcp目录下,在此基础上修改,来给同一局域网内新加机器分配ip地址
[root@localhost ~]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]#vim /etc/dhcp/dhcpd.conf
subnet 172.16.12.0 netmask 255.255.255.0 {
range 172.16.12.20 172.16.12.50;
option routers 172.16.12.2;
next-server 172.16.12.10; #指定tftp的服务器地址
filename "pxelinux.0"; #指定启动文件
}
[root@localhost ~]#systemctl start dhcpd
#将tftp服务端开启udp配置默认关闭
[root@localhost ~]#rpm -ql tftp-server
[root@localhost isolinux]#vim /etc/xinetd.d/tftp
#第14行将默认disable=yes改成no
disable = no
#获取四大文件:initrd.img、pxelinux.0、pxelinux.cfg/default、vmlinuz
[root@localhost ~]#cd /var/lib/tftpboot/
#进入TFTP服务器的根目录,拷贝PXE引导所需的四大文件
[root@localhost tftpboot]#mount /dev/sr0 /mnt
#挂载光驱到/mnt,来获取PXE引导所需文件
[root@localhost tftpboot]#cp /mnt/isolinux/initrd.img .
#拷贝PXE引导所需的initrd.img到当前目录
[root@localhost tftpboot]#cp /mnt/isolinux/vmlinuz .
#拷贝PXE引导所需的vmlinuz到当前目录
[root@localhost tftpboot]#ls
initrd.img vmlinuz #现在TFTP服务器的根目录下已有两大文件,现在还需要两个文件
[root@localhost tftpboot]#rpm -ql syslinux | grep pxelinux.0
#查找syslinux软件里的pxelinux.0文件
[root@localhost tftpboot]#cp /usr/share/syslinux/pxelinux.0 .
#将pxelinux.0文件拷贝到当前目录
[root@localhost tftpboot]#mkdir pxelinux.cfg
#创建PXE引导所需的pxelinux.cfg/default文件并写入配置
[root@localhost tftpboot]#vim pxelinux.cfg/default
default linux
timeout 600
label linux
kernel vmlinuz
append initrd=initrd.img method=ftp://172.16.12.10/centos7
#指定系统装机所需的软件安装源获取于PXE远程安装服务器的ftp根目录的centos7目录下
[root@localhost tftpboot]#mkdir /var/ftp/centos7
[root@localhost tftpboot]#mount /dev/sr0 /var/ftp/centos7/
#将光驱挂载到ftp根目录的centos7下,获取相关软件安装源
[root@localhost tftpboot]#systemctl start tftp.socket #启动服务
[root@localhost tftpboot]#systemctl start vsftpd
Kickstart是一种用于Linux系统自动化安装的工具,它允许用户通过一个预先定义好的配置文件来自动化安装过程,从而实现无人值守安装
在Kickstart安装过程中,用户可以创建一个Kickstart配置文件,其中包含了安装过程中需要的各种设置和选项,比如分区信息、软件包选择、网络设置、用户账户等。一旦配置文件准备好,安装程序就可以使用这个文件来自动完成整个安装过程,而无需用户交互
ks.cfg
,其中包含了安装过程中的各种设置和选项。#CentOS 8,7,6 不同版本的kickstart文件格式不尽相同,不可混用
#本次Kickstart无人值守安装是基于centos 7
[root@localhost ~]#yum install system-config-kickstart -y
①安装完图形化工具后,登入PXE远程安装服务器,开启Kickstart工具
②基本配置
③安装方法
④引导装载程序选项?
⑤分区信息
⑥网络配置
⑦防火墙配置
⑧显示配置
⑨安装后脚本
?⑩保存ks.cfg应答文件到服务器的/var/ftp/目录下
client裸机以网络方式启动,等待其自动安装,接下会进入下图这样的界面,就可以正常使用了
Cobbler是一个开源的Linux系统部署和管理工具,它旨在简化大规模Linux系统的自动化安装和配置管理
Cobbler提供了一个集中化的管理界面,通过该界面可以轻松地进行以下操作:
Cobbler是一个功能强大的工具,可帮助管理员简化Linux系统的部署和管理工作。它提供了一套集中化的管理界面和自动化工具,使得大规模Linux系统的部署和维护变得更加高效和可靠
①client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP
②DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址
③client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求
④cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port
⑤client裸机通过上面告知的TFTP server地址通信,下载引导文件
⑥client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image
⑦cobbler server发送请求的kickstart和os iamge
⑧client裸机加载kickstart文件
⑩client裸机接收os image,安装该os image
cobbler工具光盘中是没有软件包的,需要先下载额外源,而后再下载工具
cobbler工具,并不能提供dhcp服务,所以还需要安装dhcp服务
[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
安装完相关软件后,开启cobblerd、httpd、tftp、dhcpd服务会显示失败,因为有些配置还没有完成
?再输入cobbler? check命令,检查Cobbler服务器的配置和运行状态
?分析这些配置:
1.服务器字段设置?? ?
Cobbler需要将/etc/cobbler/settings文件中的 server字段设置为非 'localhost' 的值,应设置为PXE客户端能够访问到的实际主机名或IP地址
2.next_server字段设置?? ?
同样在/etc/cobbler/settings 文件中,将 next_server字段设置为PXE网络上启动服务器的真实IP地址,而不是 '127.0.0.1'(本地回环地址)
3.SELinux状态?? ?
由于系统启用了SELinux,需要按照Cobbler Wiki页面的指导来确保Cobbler在当前SELinux环境中正常工作
4.TFTP服务配置?? ?
需要在 /etc/xinetd.d/tftp 文件中将 'disable' 参数改为 'no',以启用并允许通过xinetd启动TFTP服务
5.缺少网络引导加载器?? ?
检查 /var/lib/cobbler/loaders 目录下是否包含所有架构所需的引导加载器文件。若仅支持x86/x86_64架构,确保已安装最新版本的syslinux包,并确认pxelinux.0、menu.c32等文件存在。
6.启动rsyncd服务?
使用systemctl工具启用并启动rsyncd.service,以便Cobbler可以管理镜像同步等相关功能
7.debmirror包未安装?? ?
若要管理和部署Debian系统及其仓库,需安装debmirror软件包
8.默认密码安全??
默认的模板密码设置仍为 'cobbler',为了安全性,请更改此密码。可以使用提供的openssl命令生成一个新的加密密码,并将其替换到 /etc/cobbler/settings 文件中的 default_password_crypted 字段
9.电源管理工具缺失?? ?
发现没有安装用于电源管理(如重启、关机)的fencing工具。如果需要使用这些可选功能,请安装cman或fence-agents相关包
上面的这些配置,不需要全部修改,只需要操作其中的几个,剩下的,只需要使用cobbler? sync命令同步一下即可
①首先先生成自己的一个加密密码并且复制,作为root用户登录密码
[root@localhost ~]#openssl passwd -1 '123456'
$1$Li5NApYR$LeA/IYaO9BQDe.75nvA.x1
②?修改cobbler配置文件
[root@centos7 ~]#vim /etc/cobbler/settings
#将101行的加密密码替换成自己生成的密码
default_password_crypted: "$1$Li5NApYR$LeA/IYaO9BQDe.75nvA.x1"
#第278行next_server字段,将回环地址设置成服务器的ip地址
next_server: 172.16.12.10
#在第390行server字段,将回环地址设置成服务器的ip地址
server:172.16.12.10
#将第242行manage_dhcp的值设置为1,表示通过cobbler工具生成dhcp.conf配置文件
manage_dhcp:1
#将第298行的pxe_just_once的值设置为,表示,如果客户端有系统,则该工具不生效,防止重复安装系统
pxe_just_once: 1
?将101行的加密密码替换成自己生成的密码
第278行next_server字段,将回环地址设置成服务器的ip地址
第390行server字段,将回环地址设置成服务器的ip地址
第242行manage_dhcp的值设置为1,表示通过cobbler工具生成dhcp.conf配置文件
第298行的pxe_just_once的值设置为,表示,如果客户端有系统,则该工具不生效,防止重复安装系统
[root@localhost ~]#vim /etc/cobbler/dhcp.template
subnet 172.16.12.0 netmask 255.255.255.0 { #服务器IP地址、子网掩码
option routers 172.16.12.2; #网关
option domain-name-servers 8.8.8.8; #dns
option subnet-mask 255.255.255.0; #子网掩码
range dynamic-bootp 172.16.12.20 172.16.12.50; #client裸机自动获取ip地址范围
#自动生成dhcp配置文件并启动
[root@localhost ~]#cobbler sync #cobbler同步
[root@localhost ~]#systemctl restart cobblerd.service #重启服务
[root@localhost ~]#cat -n /etc/dhcp/dhcpd.conf #查看dhcp的配置信息是否同步成功
[root@localhost ~]#tree /var/lib/tftpboot/ #查看系统启动所需的文件是否在规定目录下
?修改cobbler的dhcp的配置文件
同步配置信息到/etc/dhcp/dhcpd.conf
重启cobbler服务,并查看dhcp的配置文件和/var/lib/tftpboot文件是否同步成功
导入CentOS系统的安装文件,生成相应的YUM源
#先挂载光驱,然后将/mnt目录下的所有文件,拷到一个固定目录/var/www/cobbler/ks_mirror/,取一个名字叫做centos-7.7-x86_64
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cobbler import --name=centos-7-x86_64 --path=/mnt --arch=x86_64
client裸机还是选择以网络方式启动,等待之后,即可出现下图