搭建PXE自动安装centos

前段时间想学习PXE安装机器,搜了一下发现很零散,自己磕磕绊绊学习,最终成功,总结了一下搭建PXE的搭建过程。
使用虚拟机安装centos7将内存调整为2G,设置1G会出错

1、部署DHCP服务

安装DHCP
注意DHCP服务器分配的地址段要与服务器网卡IP为同一地址段
编辑DHCP服务vi /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.44.0 netmask 255.255.255.0{
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.44.2;
range dynamic-bootp 192.168.44.150 192.168.44.200; //DHCP地址范围
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.44.2; //指定tftp服务器地址
filename “pxelinux.0”;
}
重启服务:systemctl restart dhcpd

2、部署TFTP服务

安装TFTP服务器和xined服务
vi /etc/xinetd.d/tftp
//将disabled的值改为no
重启服务:systemctl restart xinetd
重启服务:systemctl restart tftp

3、部署SYSLinux服务

将相关引导文件复制到tftp目录以供客户端下载(将系统提前挂载至/media/cdrom)
cd /var/lib/tftpboot //TFTP的servier目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot //安装完syslinux后出现的文件
将系统镜像中的文件拷贝到tftp目录中
cp /media/cdrom/images/pxeboot/vmlinux /var/lib/tftpboot
cp /media/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot
cp /media/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot
将引导模板复制到tftp目录
cd /var/lib/tftpboot
mkdir pxelinux.cfg
cp /media/cdrom/isolinux.cfg pxelinux/default //j将isolinux.cfg复制过来并重命名为default
编辑引导文件模板
vim pxelinux.cfg/default
第一行修改为default linux,并注释default vesamenu.c32
第64行修改为 :append initrd=initrd.img inst.stage2=http://192.168.44.2/cdrom ks=http://192.168.44.2/ks.cfg //注释原行
如果不使用自动部署 inst.stage2应该改为inst.repo

4、部署http服务

将root目录下的anaconda-ks.cfg文件复制到/var/www/html/目录下并重命名ks.cfg
将第5行原cdrom删除改为url --url=http://192.168.44.2/cdrom
network --onboot yes --device eth0 --bootprotp dhcp // 给服务器自动分配IP,如果固定IP地址同时安装会出现冲突,到了安装阶段会给网卡分配IP获取安装源,所以使用dhcp分配IP
将这一行注释network --bootproto=static --device=ens34 --gateway=192.168.182.1 --ip=192.168.182.111 --netmask=255.255.255.0 --ipv6=auto --activate
注意,这里将光盘镜像挂载到/var/www/html/cdrom目录下,打开浏览器访问http://192.168.44.2/cdrom应出现如下界面
搭建PXE自动安装centos

5、使用kickstart创建ks.cfg文件

创建ks.cfg文件方法
1、安装完一台服务器拷贝/root/anaconda.cfg文件,修改url如上述步骤所示;
方法2:手动创建ks.cfg文件;
方法3、使用kickstart图形界面创建
下面介绍使用图形界面创建ks.cfg文件过程
安装kickstart,yum install system-config-kickstart
配置本地yum源
vim /etc/yum.repo/新建名.repo
添加配置:
————————————————————————————————
[development] //一定为这个名称,不然kickstar无法选择安装包
name=red hat 777 //yum源名称
baseurl=file:///mnt/cdrom //镜像挂载位置
gpgcheck=0 //开启校验
enable=1 //启用这个yum源

————————————————————————————————
更新yum源:
yum clean all
yum makecache
输入system-config-kickstart可以打开图形界面定制ks.cfg

—————————————————————————————————
ks.cfg具体名称含义
关键字 含义
install 告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。
url --url=“http://10.0.0.7/CentOS-6.7/”
url --url ftp://:@/


nfs 从指定的NFS服务器安装。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文本模式安装。
lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8
keyboard 设置系统键盘类型。keyboard us
zerombr 清除mbr引导信息。
bootloader 系统引导相关配置。
bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto rhgb quiet”
–location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
–driveorder,指定在BIOS引导顺序中居首的驱动器。
–append=,指定内核参数.要指定多个参数,使用空格分隔它们。
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
–bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。
static方法要求在kickstart文件里输入所有的网络信息。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
–ip=,要安装的机器的IP地址.
–gateway=,IP地址格式的默认网关.
–netmask=,安装的系统的子网掩码.
–hostname=,安装的系统的主机名.
–onboot=,是否在引导时启用该设备.
–noipv6=,禁用此设备的IPv6.
–nameserver=,配置dns解析.
timezone 设置系统时区。timezone --utc Asia/Shanghai
authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512 启用shadow文件。
rootpw root密码
clearpart 清空分区。clearpart --all --initlabel
–all 从系统中清除所有分区,–initlable 初始化磁盘标签
part 磁盘分区。
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
–fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。
–asprimary,强迫把分区分配为主分区,否则提示分区失败。
–size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
–grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。
firstboot 负责协助配置redhat一些重要的信息。
firstboot --disable
selinux 关闭selinux。selinux --disabled
firewall 关闭防火墙。firewall --disabled
logging 设置日志级别。logging --level=info
reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机
%packages #包组段 的开始 @ 表示是表明这是包组
@base
@compat-libraries
@debugging
@development
tree #这几个都是镜像里边有的
nmap
sysstat
lrzsz
dos2unix
telnet
post 是脚本段的开始
用的较多 之前的命令都执行完了之后,在执行一些想要执行的命令,装完系统后需要安装什么,或者是需要执行什么命令,都可以在这里添加上执行 。是在客户端执行
%post
脚本放置位置
%end
————————————————