PXE装机与Kickstart无人值守安装详解
PXE装机与Kickstart无人值守安装详解
一键PXE(Shell脚本)
#!bin/bash
ping -c1 -W1 www.baidu.com &> /dev/null
【用于测试网络通不通以及确定当前是NAT还是仅主机模式】
if [ $? -eq 0 ];then
【如果ping的命令返回值为0,则当前为NAT模式】
mkdir -p /etc/yum.repos.d/repo.bak
mv -f /etc/yum.repos.d / * /etc/yum.repos.d/repo.bak &> /dev/null
【将local.repo文件移动到repos.bak目录下(也可以是别的备份目录)】
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
【将阿里云镜像下载到/etc/yum.repos.d/目录下】
yum clean all && yum makecache &> /dev/null
【清理缓存并且生成新的缓存】
yum list &> /dev/null
【查询软件包列表】
else
【如果为仅主机模式,则配置本地yum仓库】
mount /dev/sr0 /mnt &> /dev/null
cd /etc/yum.repos.d/
mkdir -p /etc/yum.repos.d/repo.bak
mv -f \/etc/yum.repos.d/ * /etc/yum.repos.d/repo.bak &> /dev/null
echo '[local]
name=local
baseurl=file:/
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
yum clean all && yum makecache &> /dev/null
df -h | grep "mnt"
【用df+grep查看mnt情况】
if [ $? -eq 0 ];then
【若果$?等于0则条件表达式】
echo “本地yum源已配置完成”
else
echo “当前为仅主机模式,但光盘未挂载”
fi
fi
【安装启用TFTP服务并进行相应配置的修改】
yum -y install tftp-server xinetd &> /dev/null
【修改配置文件】
sed -i 's/yes/no/g' /etc/xinetd.d/tftp
【将配置文件里的所有yse替换成no】
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
【安装启用DHCP服务并进行相应配置的修改】
yum -y install dhcp &> /dev/null
【修改配置文件】
cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
【使用cat命令将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example里的内容标准输入到/etc/dhcp/dhcpd.conf】
echo 'ddns-update-style none;
next-server 192.168.131.10;
filename "pxelinux.0";' >> /etc/dhcp/dhcpd.conf
【输出''内的内容并追加到/etc/dhcp/dhcpd.conf文件最后】
echo 'subnet 192.168.131.0 netmask 255.255.255.0 {
range 192.168.131.100 192.168.131.200;
option routers 192.168.131.30;
}' >> /etc/dhcp/dhcpd.conf
systemctl restart dhcpd
systemctl enable dhcpd
【准备Linux内核、初始化镜像文件】
【将Liunx系统的内核文件和初始化镜像文件(Linux引导加载模块)复制到TFTP根目录下】
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot
【因为PXE引导程序由软件包syslinux提供,所以这里安装并复制PXE引导程序到TFTP根目录下】
yum -y install syslinux &> /dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
yum -y install vsftpd &> /dev/null
【安装vsftpd服务并在ftp根目录下创建目录centos7后将将镜像文件强制复制到centos7目录中】
mkdir /var/ftp/centos7
cp -rf /mnt/ * /var/ftp/centos7/
systemctl start vsftpd
systemctl enable vsftpd
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
【在tftpboot目录中创建pxelinux.cfg空的子目录,并在其中创建空的default文件】
echo 'default auto
label auto 【指定默认入口名称】
prompt 0 【设置是否等待用户选择,"0"表示不等待用户控制】
kernel vmlinuz 【kernel和append用来定义引导参数】
append initrd=initrd.img method=ftp://192.168.131.10/centos7
label linux text 【文本安装引导入口】
kernel vmlinuz 【kernel定义内核文件】
append text initrd=initrd.img method=ftp://192.168.131.10/centos7 【append定义镜像文件和安装源】
label linux rescue 【救援模式引导入口】
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.131.10/centos7' > /var/lib/tftpboot/pxelinux.cfg/default
【将''输出的结果保存到default文件内】
systemctl stop firewalld.service
setenforce 0
【到这里我们的PXE相关配置就完成了】
【接下来将进行kickstart相关配置】
yum install -y system-config-kickstart
cp /root/qz.cfg /var/ftp/ks.cfg
【将/root/目录的自动应答文件qz.cfg拷贝到/var/ftp/】
sed -i '6d' /var/lib/tftpboot/pxelinux.cfg/default
【通过sed把文件内的第6行删除】
sed -i '5a append initrd=initrd.img method=ftp://192.168.131.10/centos7 ks=ftp://192.168.131.10/ks.cfg' /var/lib/tftpboot/pxelinux.cfg/default
【通过sed把''里的内容插入到文件的第5行下面】