PXE(preboot execute environment)可以让客户端从服务器端加载域引导启动文件即DHCP服务器上指定的filename文件,把这个文件下载到客户端本地,并基于这个文件引导启动客户端操作系统。
现有的网卡基本都已经支持PXE(在BIOS里修改启动顺序为PXE优先)
依赖于dhcp服务(提供地址),tftp服务(提供启动程序文件),yum源(提供操作系统的安装文件,可以是ftp、http或nfs服务)
kickstart是在PXE启动后,预先加载的一个安装操作系统的配置文件,可修改参数进行安装。
注:
- PXE服务端建议关闭firewall和selinux
- anaconda.cfg是在linux系统安装后,自动生成的一个配置文件,通过这个文件可以修改成自动安装的脚本,用于自动安装同样配置的系统
1、dhcp
Yum安装dhcp服务
yum install dhcp
修改dhcp配置文件,/etc/dhcp/dhcpd.conf
从模板(/usr/share/doc/dhcp-*/dhcpd.conf.example)复制需要的功能模块配置到配置文件中
subnet 1.1.1.0 netmask 255.255.255.0 {
range 1.1.1.10 1.1.1.200; # 分配的地址池范围
option subnet-mask 255.255.255.0; # 配置掩码
default-lease-time 21600; # 设置缺省的租期时间
max-lease-time 43200; # 设置最大的租期时间
next-server 1.1.1.1; # tftp服务地址
filename “/pxelinux.0”; # 从tftp下载的文件
}
配置tftp中pxelinux.0的文件链接,dhcp分配到IP后便会下载此文件
systemctl enable --now dhcpd
systemctl status dhcpd
———————————————
shared-network:用来告知是否一些子网络分享相同网络
subnet:描述一个IP地址是否属于该子网
range:起始IP 终止IP 提供动态分配IP 的范围
host:机名称 参考特别的主机
group:为一组参数提供声明
allow unknown-clients/deny unknown-client:是否动态分配IP给未知的使用者
allow bootp;deny bootp:是否响应激活查询
allow booting;deny booting :是否响应使用者查询
filename:开始启动文件的名称. 应用于无盘工作站
next-server:设置服务器从引导文件中装如主机名,应用于无盘工作站
fixed-address:为DHCP客户指定IP地址
domain-name:为客户指定DHS名字
———————————————
2、tftp
配置相应的启动文件(安装操作的小系统,主要为安装软件允许提供环境)
安装tftp及xinetd程序
yum install tftp-server
修改tftp配置文件,/etc/xinetd.d/tftp
#disable = yes
disable = no
yum install xinetd(tftp守护进程)
systemctl enable --now tftp.service
systemctl enable --now xinetd.service
systemctl status tftp.service
systemctl status xinetd.service
安装启动文件
yum install syslinux
查看pxeinux.0路径rpm -ql syslinux | grep pxelinux.0
将pxelinux.0拷贝至tftp服务目录下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
安装启动程序
创建文件夹pxelinux.cfg
mkdir /var/lib/tftpboot/pxelinux.cfg
从光盘里(主要是启动程序isolinux下)考vmlinuz, initrd.img, isolinux.cfg, boot.msg到/var/lib/tftpboot
cp /mnt/cdrom/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/
cp /mnt/cdrom/isolinux/boot.msg /var/lib/tftpboot/
cp /mnt/cdrom/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改内容如下:
# 修改default文件
# default vesamenu.c32
default linux
# 配置default选择从label=linux进入
kernel vmlinuz
#append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.6\x20Server.x86_64 quiet
append initrd=initrd.img ks=http://1.1.1.1/rhel7.6/ks.cfg
在安装引导页面上,增加ks.cfg的下载链接,使得安装启动去找http服务;label后面的内容可以自行定义
上面的配置内容与下面安装时的启动界面相对应
———————————————
menu.c32:图形化菜单
vesamenu.c32:图形化菜单
pxelinux.0:是bootloader
pexlinux.cfg: 开机菜单设定
pxelinux.0相当于grub引导系统,pxelinux.cfg/default相当于grub.cfg
default中默认改为default linux引导
———————————————
———————————————
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。
———————————————
3、apache
安装并配置apache
yum install httpd
修改配置文件,/etc/http/conf/httpd.conf
ServerName 1.1.1.1:80
systemctl enable --now httpd
systemctl status httpd
mkdir /var/www/html/rhel7.6
cp -r /mnt/cdrom/* /var/www/html/rhel7.6
cp 制作好的ks.cfg /var/www/html/rhel7.6/ks.cfg
规划系统盘分区大小(根据实际情况):
分区 | 大小 |
---|---|
/boot | 512 MiB |
swap | 128 GiB |
/ | 128 GiB |
/home | 其余空间 |
修改ks.cfg 自动应答文件
# 修改原有默认的安装途径cdrom为http下载
# Use CDROM installation media
#cdrom
url --url="http://1.1.1.1/rhel7.6/"
# 修改原有默认的安装方式graphic为text
# Use graphical install
#graphical
text
# 修改网卡配置
# Network information
network --bootproto=dhcp --device=eno1 --onboot=on --ipv6=auto --no-activate
network --bootproto=dhcp --device=eno2 --onboot=on --ipv6=auto
network --bootproto=dhcp --device=eno3 --onboot=off --ipv6=auto
network --bootproto=dhcp --device=eno4 --onboot=off --ipv6=auto
network --hostname=localhost.localdomain
# 修改磁盘分区
# Disk partitioning information
part /boot --fstype="ext4" --ondisk=sda --size=512
part swap --fstype="swap" --ondisk=sda --size=8191
part / --fstype="ext4" --ondisk=sda --size=131072
part /home --fstype="ext4" --ondisk=sda --size=317031
# 关闭SELinux
# SELinux configuration
selinux --disabled
# 安装完成后自动重启
# Reboot after installation
reboot
# 安装程序包
%packages
@^minimal
@core
kexec-tools
%end
# 配置安装后脚本
%post
# 配置team
nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}' # 添加team聚合方式
nmcli connection add con-name eno1 ifname eno1 type team-slave master team0 # 把eno1绑定到team0
nmcli connection add con-name eno2 ifname eno2 type team-slave master team0 # 把eno2绑定到team0
# 关闭防火墙
systemctl disable --now firewalld.service
# 新建用户sshusr
useradd sshusr
# 修改密码
echo "XXXXXXX" | passwd --stdin sshusr
# 配置sshusr的sudo权限
sed -i '/^root/a\sshusr ALL=(ALL) NOPASSWD:ALL' /etc/sudoers
%end