一、搭建PXE服务器
PXE服务器——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它可以减轻你网络中多台机器同时安装Linux发行版的工作。
1.安装并配置DNSMASQ服务器(给客户机分配静态IP)
# yum install dnsmasq
DNSMASQ的默认的主配置文件dnsmasq.conf位于/etc目录中,参考配置如下:
interface=eth0,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range=eth0,192.168.0.50,192.168.0.150,255.255.255.0,48h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.0.1
# Gateway
dhcp-option=3,192.168.0.101
# DNS
dhcp-option=6,192.168.0.101,8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="press f8 for menu.",5
pxe-service=x86PC,"install from 192.168.0.1",pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
2.安装TFTP-Server并加入SYSLINUX加载启动器
# yum install tftp-server
# yum install syslinux
PXE启动加载器文件位于/usr/share/syslinux,须要拷贝该路径下的所有内容到TFTP服务器路径下。
# cp -r /usr/share/syslinux/* /var/lib/tftpboot
3.设置PXE服务器配置文件
PXE服务器从位于pxelinux.cfg文件夹中一组指定的文件中读取配置,该文件夹必须位于DNSMASQ主配置文件中tftp-root声明指定的目录中(参考配置中为tftp-root=/var/lib/tftpboot)。下面创建需要的目录pxelinux.cfg,然后添加default文件。
# mkdir /var/lib/tftpboot/pxelinux.cfg
# vi /var/lib/tftpboot/pxelinux.cfg/default
default的参考配置如下:
default menu.c32(默认加载菜单 改为1可以默认进入选项1)
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 7 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.0.1/pub devfs=nomount
label 2
menu label ^4) Boot from local drive
CentOS 7启动镜像(kernel和initrd)位于名为centos7的目录,该目录是/var/lib/tftpboot目录的相对路径(其绝对路径为/var/lib/tftpboot/centos7),而安装器仓库位于可通过FTP协议访问的192.168.0.1/pub网络位置中——在本例中,这些仓库位于本地,因此IP地址和PXE服务器地址相同。
4.添加CentOS 7启动镜像到PXE服务器
挂载预先下载好的镜像文件。创建centos7目录并将CentOS 7 的可启动的 kernel和initrd映像文件从挂载位置拷贝到centos7文件夹。
# mkdir /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
5.创建CentOS 7本地镜像安装源
可以通过多种协议设置安装源镜像,如HTTP、HTTPS或NFS。这里使用FTP协议。
# yum install vsftpd
# cp -r /mnt/* /var/ftp/pub/
# chmod -R 755 /var/ftp/pub
6.启动进程并关闭防火墙
# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd
# systemctl disable firewalld
# systemctl stop firewalld
最好测试一下FTP安装源网络路径,在浏览器输入ftp://192.168.1.20/pub。
至此PXE服务器搭建完毕。可以开一台虚机测试。
qemu-img create -f qcow2 /home/test.qcow2 10G
virt-install --name test --vcpus 1 --memory 2000 --cpu --disk path=/home/test.qcow2,format=qcow2, --network bridge=br0,model=virtio --pxe --autostart
PS:PXE和客户机之间要有网桥连接
临时创建:
ip link add br0 type bridge
ip a add 192.168.0.101/24 dev br0
ip link set br0 up
永久创建:
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.101
PREFIX=24
ONBOOT=yes
DELAY=0
二、PXE的基础上用kickstart实现自动安装
Kickstart 文件本身是一个纯文本文件,包含了可作为安装指令的关键字。通过Kickstart工具配置安装应答文件,自动完成安装过程的各种设置,从而无需手动干预,提高网络装机效率。
1.安装kickstart
yum install system-config-kickstart
2.配置ks.cfg
推荐用来生成 Kickstart 文件的方法是在系统中首先执行一次手动安装。安装完成后,安装程序中的所有选择都会保存到名为 anaconda-ks. cfg 的文件中,该文件位于所安装系统的 /root/ 目录下。然后可以复制这个文件,根据需要进行修改,并在以后的安装中使用得到的配置文件。
其中,必须要改的是安装方式,参考如下
# Use network installation
url --url=ftp://192.168.0.1/pub/centos7
加入reboot,可以在安装完毕后自动重启
可以在安装完成后、第一次重启前立即添加要在该系统中运行的命令。这部分内容必须在 Kickstart 的最后,同时必须用 %post 命令开头,以%end 结尾。
%post --log=/root/ks-post.log
ip a add 192.168.0.2/24 dev eth0
ip link set eth0 up
rpm -ivh ftp://192.168.0.1/pub/libnl-1.1.4-2.el6.x86_64.rpm
rpm -ivh ftp://192.168.0.1/pub/libselinux-python-2.0.94-5.3.el6_4.1.x86_64.rpm
rpm -ivh ftp://192.168.0.1/pub/pciutils-3.1.10-2.el6.x86_64.rpm
%end
以上脚本配置网络,通过ftp安装三个rpm
安装centos6.5时出现了unsupported hardware detect的警告,需要手动选择安装才能继续,加入一行unsupported _hard ware可以解决此问题
3.将kickstart和PXE结合
#cp ks.cfg /var/ftp/pub/
#vi /var/lib/tftpboot/pxelinux.cfg/default
append initrd=centos7/initrd.img method=ftp://192.168.0.1/pub devfs=nomount
修改为
append initrd=centos7/initrd.img ks=ftp://192.168.0.1/pub/ks.cfg
完