From 20633aa928cc556eb14a3313a11af5f9fba9dba9 Mon Sep 17 00:00:00 2001 From: 11617 <1161733918@qq.com> Date: Sun, 26 Feb 2023 16:35:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4pxe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- os/get-pxe.sh | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 os/get-pxe.sh diff --git a/os/get-pxe.sh b/os/get-pxe.sh new file mode 100644 index 0000000..8e7b2d5 --- /dev/null +++ b/os/get-pxe.sh @@ -0,0 +1,141 @@ +#!/usr/bin/bash + +color(){ + unset c + declare -A c=([Error]=31 [Success]=32 [Warning]=33 [Info]=34) + #echo -e "\033[${c[$1]}m[`date +%T`]($1) $2\033[0m" + printf "\033[${c[$1]}m%-10s%-10s %-30s\033[0m\n" "[`date +%T`]" "($1)" "$2" + sleep 0.5 +} + +# pxe服务器初始化 +color Info "pxe服务器初始化" +curl -s -L https://download.beyourself.org.cn/shell-project/os/get-os-init.sh | sh + + +# 安装dhcp、tftp、tftp-server、syslinux、wget、vsftpd、pykickstart +color Info "安装pxe服务依赖" +yum install -y dhcp tftp tftp-server syslinux wget vsftpd pykickstart + +# 配置dhcp +color Info "配置dhcp" +ipaddr=$(ip -4 -f inet a show dev ens33 | awk '/inet/{print $2}') +cat > /etc/dhcp/dhcpd.conf << EOF +ddns-update-style interim; +ignore client-updates; +authoritative; +allow booting; +allow bootp; +allow unknown-clients; + +# A slightly different configuration for an internal subnet. + subnet ${ipaddr%.*}.0 netmask 255.255.255.0 +{ + range ${ipaddr%.*}.100 ${ipaddr%.*}.200; + option domain-name-servers ${ipaddr%.*}.1; + option domain-name "server1.example.com"; + option routers ${ipaddr%.*}.1; + option broadcast-address ${ipaddr%.*}.255; + default-lease-time 600; + max-lease-time 7200; + + # PXE SERVER IP + next-server ${ipaddr%/*}; # DHCP server ip + filename "pxelinux.0"; + } +EOF + +# 配置tftp +color Info "配置tftp" +cat > /etc/xinetd.d/tftp << EOF +service tftp +{ + socket_type = dgram + protocol = udp + wait = yes + user = root + server = /usr/sbin/in.tftpd + server_args = -s /tftpboot + disable = no + per_source = 11 + cps = 100 2 + flags = IPv4 + } +EOF + +# 配置vsftpd +color Info "配置vsftpd" +cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/ +mkdir /var/lib/tftpboot/pxelinux.cfg +mkdir /var/lib/tftpboot/netboot +mount /dev/cdrom /mnt +cp -rvf /mnt/* /var/ftp/pub + +cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/ +cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/netboot/ + +cat > /var/ftp/pub/ks.cfg </var/lib/tftpboot/pxelinux.cfg/default <