PXE+Kickstart实现自动装机

来源:互联网 发布:淘宝上海华硕商城 编辑:程序博客网 时间:2024/04/30 14:10

一、搭建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 CentOS7 x64 withLocal Repo

kernel centos7/vmlinuz

append initrd=centos7/initrd.img method=ftp://192.168.0.1/pub devfs=nomount


label 2

menu label ^4)Boot fromlocal 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

原创粉丝点击