pxe自动安装系统
环境:rhel8+dhcp+tftp+http+kickstart
总体概述:
本次pxe环境使用VMware软件来搭建,镜像为rhel8,通过dhcp+tftp+http+kickstart来实现自动化安装。
pxe主机两块网卡,管理卡在192.168.174.0网段(也可以自动获取,只要能ssh上主机就可以),另一块规划IP为10.1.0.1/24,地址池为10.1.0.100-10.1.0.200
操作步骤概述:
- 安装rhel8的操作系统
正常安装即可,但是需要另添加一块网卡,这样我们有两块网卡ens160和ens192,ens160采用桥接模式,作为管理可以让我们进行登录操作,ens192采用特定的虚拟网络,采用vmnet2仅主机模式,作为DHCP地址分发网口。将vmnet2的DHCP关掉。
- 关闭subscription-manager,selinux和防火墙
进入 /etc/yum/pluginconf.d/subscription-manager.conf,将subscription-manager这个订阅模块关闭,这个不关闭会存在一定问题(如果有红帽的订阅也可以直接登录订阅,那就省去配置本地yum)
[root@localhost ~]# cat /etc/selinux/config
SELINUX=disable
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl status firewalld
- 搭建本地yum仓库,
[root@localhost ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@localhost ~]# vi /etc/yum.repos.d/bendi.repo
[root@localhost ~]# cat /etc/yum.repos.d/bendi.repo
[BaseOS]
name =BaseOS
enable =yes
gpgcheck =0
baseurl =file:///mnt/BaseOS/
[AppStream]
name =AppStream
enable =yes
gpgcheck =0
baseurl =file:///mnt/AppStream/
[root@localhost ~]# yum repolist
repo id repo name
AppStream AppStream
BaseOS BaseOS
[root@localhost ~]# yum list
- 配置网卡
个人使用networkmanager来管理网卡,安装bash-completion来使nmcli命令可以补全(需要重启生效)
[root@localhost ~]# nmcli connection add con-name static type ethernet ifname ens192 ipv4.addresses 10.1.0.1/24 ipv4.method man
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 f6c07f5f-33c3-4546-8a8f-9cadae517cbc ethernet ens160
static 79943213-bca3-45b6-9b37-5188bf395934 ethernet ens192
- 安装配置DHCP
[root@localhost selinux]# yum install -y dhcp-server
[root@localhost ~]# rpm -ql dhcp-server
/etc/dhcp/dhcpd.conf
/usr/share/doc/dhcp-server/dhcpd.conf.example
[root@localhost~]#cp/usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.255.0 {
range 10.1.0.100 10.1.0.200;
next-server 10.1.0.1;
filename "pxelinux.0";
}
- 安装配置TFTP
[root@localhost ~]# yum install -y tftp-server.x86_64
[root@localhost ~]# rpm -ql tftp-server
[root@localhost ~]# cat /usr/lib/systemd/system/tftp.service
[Unit]
Description=Tftp Server
Requires=tftp.socket
Documentation=man:in.tftpd
[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket
[root@localhost isolinux]# pwd
/mnt/isolinux
[root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot/
检查pxelinux.0这个文件是否存在
[root@localhost syslinux]# find / -name pxelinux.0
没有的话安装syslinux这个包
[root@localhost ~]# yum install -y syslinux
[root@localhost ~]# find / -name pxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost isolinux]# cp ldlinux.c32 /var/lib/tftpboot/
[root@localhost isolinux]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost isolinux]# touch /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost isolinux]# cd
[root@localhost ~]# cp -rf /usr/share/syslinux/* /var/lib/tftpboot/
cp: overwrite '/var/lib/tftpboot/ldlinux.c32'? y
cp: overwrite '/var/lib/tftpboot/pxelinux.0'? y
[root@localhost ~]# vim /var/lib/tftpboot/pxe
pxechn.c32 pxelinux.0 pxelinux.cfg/
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#加载引导文件
timeout 3000
#超时时间
label shihppxe
#名称
- 安装配置http
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# mkdir /var/www/html/iso
[root@localhost ~]# mount /dev/sr0 /var/www/html/iso/
mount: /var/www/html/iso: WARNING: device write-protected, mounted read-only.
[root@localhost ~]# systemctl restart httpd
将以下写入/var/lib/tftpboot/pxelinux.cfg/default文件中
kernel vmlinuz
append initrd=initrd.img method=http://10.1.0.1/iso/
[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#加载引导文件
timeout 3000
#超时时间
label shihppxe
#名称
kernel vmlinuz
append initrd=initrd.img method=http://10.1.0.1/iso/
到这里已经实现了网络安装,我们新建虚拟机把网卡设置为vmnet2,开机就是自动进入安装界面,要想实现全自动安装,我们还需要kickstart来帮助我们实现这个操作
- 编写kickstart文件
在我们超级用户root家目录中,有一个anaconda-ks.cfg的文件,这个就是kickstart文件,这里面记录我们装系统时,安装的具体操作,比如分区信息,时区信息用户密码等信息,我们针对这个文件进行修改放入http目录下,在default文件中将ks指向该文件即可
里面主要的修改信息是
repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream(这条删除,替换为url --url=http://10.1.0.1/iso)
删除cdrom
添加reboot
编辑default文件
[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#加载引导文件
timeout 3000
#超时时间
label shihppxe
#名称
kernel vmlinuz
append initrd=initrd.img method=http://10.1.0.1/iso/ ks=http://10.1.0.1/test.cfg
现在重启pxe测试虚拟机,就可以自动化安装了,kickstart文件也可以使用软件生成。
下面是ks文件,密码是1,写入了一些其他配置,通过网络拉取yum仓库直接搭建本地仓库
#version=RHEL8
# Use graphical install
graphical
url --url="http://10.1.0.1/jj"
%packages
@^minimal-environment
kexec-tools
%end
# Keyboard layouts
keyboard --xlayouts='cn'
# System language
lang zh_CN.UTF-8
# Network information
network --bootproto=dhcp --device=ens160 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Use CDROM installation media
reboot
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=nvme0n1
autopart
# Partition clearing information
clearpart --none --initlabel
# System timezone
timezone America/New_York --isUtc
# Root password
rootpw --iscrypted $6$dRGmRXbYKiMFICDy$R2AyGkhad0xp26BfMniB1D0Sv8hsx4TI9USaltow4syfK0SOHAPbbyYp1EwIdoKFEiLChFhij0xm2RrXFca.f.
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%post
#/bin/bash
touch /etc/yum.repos.d/1.repo
touch /etc/yum.repos.d/bendi.repo
echo "[baseos]
name =baseos
enable =yes
gpgcheck =0
baseurl =http://10.1.0.1/jj/BaseOS/
[appstream]
name =appstream
enable =yes
gpgcheck =0
baseurl =http://10.1.0.1/jj/AppStream/" >>/etc/yum.repos.d/1.repo
yum repolist
yum list
yum install -y createrepo
yum install -y yum-utils-4.0.21-3.el8.noarch
mkdir /cangku
reposync --repo baseos -p /cangku
reposync --repo appstream -p /cangku
createrepo -v /cangku/baseos
createrepo -v /cangku/appstream
echo "[BaseOS]
name =BaseOS
enable =yes
gpgcheck =0
baseurl =file:///cangku/baseos/
[AppStream]
name =AppStream
enable =yes
gpgcheck =0
baseurl =file:///cangku/appstream/" >>/etc/yum.repos.d/ben.repo
rm -rf 1.repo
yum repolist
yum list
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
简述:
1.安装DHCP服务
复制配置模板到配置文件
在配置文件中写入网段,网关,分发地址的qishi地址和终止地址,写入ghcp服务器地址(net-server 10.1.0.1),指向启动文件(filename “pxelinux.0”)
2.安装tftp服务
将vmlinuz , initrd.img,ldlinux.c32放入tftpboot下
在tftpboot下建立pxelinux.cfg目录,并在pxelinux.cfg中建立default文件
将/usr/share/syslinux/下所有文件放入tftpboot
编辑default文件,里面写入指向加载引导文件,超时时间,pxe名称,内核文件
default vesamenu.c32
#加载引导文件
timeout 3000
#超时时间
label shihppxe
#名称
kernel vmlinuz
#指定内核文件
append initrd=initrd.img method=http://10.1.0.1/iso/ ks=http://10.1.0.1/test.cfg
3.安装配置HTTP服务
安装http服务
在默认路径下建立一个空目录xx
将本地镜像文件挂载到xx
将ks文件放入html下