Shell脚本 - 快速桌面化装机
#!/bin/bash
function tftp(){
echo "正在修改 tftp 服务配置文件>"
sed -i 's/yes/no/g' /etc/xinetd.d/tftp
echo "tftp 服务配置文件已经修改完毕!"
systemctl start tftp;
systemctl start xinetd
}
echo "即将开始安装 PXE ,在此期间请勿执行其他操作>"
rpm -q tftp-server xinetd &> /dev/null
bool=$?
if (($bool >= "1"))
echo "正在检测是否安装 tftp | xinetd 软件包>"
then
yum -y install tftp-server xinetd &> /dev/null
echo "tftp-server | xinetd 已经安装完毕!"
tftp
else
tftp
fi
export getIP=`ifconfig | grep "inet" | awk 'NR==1 {print $2}'`
function dhcp(){
\cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
echo "
ddns-update-style none;
next-server $getIP;
" >> /etc/dhcp/dhcpd.conf
echo '
filename "pxelinux.0";
' >> /etc/dhcp/dhcpd.conf
read -p "输入你当前的网段:" input_1
read -p "输入你网段的子网掩码:" input_2
read -p "输入你的首地址池:" input_3
read -p "输入你的尾地址池:" input_4
echo "
subnet $input_1 netmask $input_2{
range $input_3 $input_4;
option routers $getIP;
}
" >> /etc/dhcp/dhcpd.conf
}
rpm -q dhcp &> /dev/null
bool=$?
if (($bool == "1"))
echo "正在检测是否安装 dhcp 软件包>"
then
yum -y install dhcp &> /dev/null
echo "dhcp 已经安装完毕!"
dhcp
echo "正在修改 dhcp 服务配置文件>"
echo "dhcp 服务配置文件已经修改完毕!"
systemctl start dhcpd
fi
mount /dev/cdrom /mnt &> /dev/null
echo "正在将 initrd.img 复制到 tftp 中>"
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot
echo "复制完毕!"
echo "正在将 vmlinuz 复制到 tftp 中>"
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot
echo "复制完毕!"
function syslinux(){
yum -y install syslinux &> /dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
echo "syslinux 的 pxelinux.0 以复制到 tftpboot 中!"
mkdir /var/lib/tftpboot/pxelinux.cfg
echo "pxelinux.cfg 以创建成功!"
echo "
default auto
prompt 0
label auto
append initrd=initrd.img method=ftp://$getIP/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://$getIP/centos7 ks=ftp://$getIP/ks.cfg
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://$getIP/centos7
" > /var/lib/tftpboot/pxelinux.cfg/default
}
rpm -q syslinux &> /dev/null
bool=$?
if (($bool == "1"))
echo "正在检测是否安装 syslinux 软件包>"
then
syslinux
fi
rpm -q vsftpd &> /dev/null
bool=$?
if (($bool == "1"))
echo "正在检测是否安装 vsftp 软件包>"
then
yum -y install vsftpd &> /dev/null
echo "vsftp 已经安装完毕!"
mkdir /var/ftp/centos7
echo "目录 /var/ftp/centos7 创建成功!"
mount /dev/cdrom /var/ftp/centos7/
echo "已将镜像挂载至 /var/ftp/centos7 中!"
systemctl start vsftpd
fi
rpm -q system-config-kickstart &> /dev/null
if (($bool == "1"))
echo "正在检测是否安装 kickstart 软件包>"
then
yum install -y system-config-kickstart &> /dev/null
echo "kickstart 已经安装完毕!"
fi
echo "
install
keyboard --vckeymap=cn --xlayouts='cn'
rootpw --iscrypted $1$F21S05bH$jyNYoyHpkHTvaZtyoKR3D/
lang zh_CN.UTF-8
auth --useshadow --passalgo=sha512
graphical
firstboot --disable
selinux --disabled
firewall --disabled
network --bootproto=dhcp --device=end33
reboot
timezone Asia/Shanghai
" > /var/ftp/ks.cfg
echo "
url --url="ftp://${getIP}/centos7"
" >> /var/ftp/ks.cfg
echo '
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1
' >> /var/ftp/ks.cfg
echo "
%post --interpreter=/bin/bash
cd /etc/yum.repos.d/;
cp CentOS-Base.repo CentOS-Base.repo.bak;
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo;
yum makecache;
%end
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
%end
" >> /var/ftp/ks.cfg
systemctl restart dhcpd
systemctl restart xinetd
systemctl restart tftp
systemctl restart vsftpd
systemctl restart network
echo "PXE已经安装完毕!注意事项:新机器内存≥2GB"