Linux——Pxe+Nfs+Kickstart自动部署安装Centos7.4
PXE简介
PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。
PXE的工作流程:
实验环境:
虚拟机:VMware® Workstation 15 Pro
均使用NAT连接 网段为192.168.1.0/24
!! 使用支持PXE的网卡
!!关闭软件自带的DHCP服务
PXE 服务器 ---- Centos 7.4
IP地址:192.168.1.1/24
网关: 192.168.1.254
版本如下
!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下
[root@localhost ~]# systemctl stop firewalld //关闭防火墙 [root@localhost ~]# setenforce 0 //临时关闭Selinux,重启失效
一、部署DHCP
安装以下:
[root@localhost ~]#yum install dhcp -y
1、复制模板
2、编辑配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//从47行开始编辑 subnet 192.168.1.0 netmask 255.255.255.0 { //修改网段和掩码 range 192.168.1.210 192.168.1.215; //分配地址池 option domain-name-servers 192.168.1.1; //指定dns服务器 # option domain-name "internal.example.org"; //注释此行 option routers 192.168.1.254; //指定网关 option broadcast-address 192.168.1.255; //广播地址 default-lease-time 600; max-lease-time 7200; next-server 192.168.1.1; //指定下一跳---TFTP filename "pxelinux.0"; //指定去下载一个pxelinux.0文件 }
3、重启DHCP并开启自启动
[root@localhost ~]# systemctl restart dhcpd [root@localhost ~]# systemctl enable dhcpd Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
二、部署TFTP
安装以下:
[root@localhost ~]# yum install tftp-server xinetd -y
1、编辑配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp
2、重启TFTP并开启自启动
[root@localhost ~]# systemctl restart tftp [root@localhost ~]# systemctl enable tftp Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket. [root@localhost ~]# systemctl restart xinetd [root@localhost ~]# systemctl enable xinetd
三、安装Syslinux
安装如下:
[root@localhost ~]# yum install syslinux -y
四、部署Kickstart
1、配置ks.cfg文件
//ks.cfg的模板在/root下的anaconda-ks.cfg文件
a、创建ks.cfg存放目录
[root@localhost ~]# mkdir /pxe
b、复制模板
[root@localhost ~]# cp /root/anaconda-ks.cfg /pxe/ks.cfg
c、编辑ks.cfg
[root@localhost ~]# vim /pxe/ks.cfg
关键字 含义 install 告知安装程序,这是一次全新安装,而不是升级upgrade。 url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。 url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp://<username>:<password>@<server>/<dir> 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关机。
d、给予ks.cfg可读权限
[root@localhost ~]# chmod +r /pxe/ks.cfg [root@localhost ~]# ll /pxe/ks.cfg //列出ks.cfg的详细属性 -rw-r--r--. 1 root root 1309 Aug 23 20:56 /pxe/ks.cfg
2、复制内核文件
内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。/var/lib/tftpboot/目录规划如下:
a、创建镜像下载目录
[root@localhost ~]# mkdir /pxe/cdrom
b、复制内核文件
//从挂载的光驱里面复制内核文件: //我挂载的是mnt
[root@localhost ~]# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ [root@localhost ~]# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ [root@localhost ~]# cp /mnt/isolinux/boot.msg /var/lib/tftpboot/ [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@localhost ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
//复制syslinux的pxelinux.0
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
c、编辑应答文件
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
d、复制光驱里的文件到下载目录
[root@localhost ~]# cp -rf /mnt/* /pxe/cdrom/ //东西很多,要复制2~3分钟左右
五、部署NFS
1、安装NFS如下
[root@localhost ~]# yum install nfs-utils -y
2、编辑NFS配置文件
[root@localhost ~]# vim /etc/exports
3、重启NFS并加入自启动
[root@localhost ~]# systemctl restart nfs [root@localhost ~]# systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
!!再次提醒,注意防火墙,会影响效果
!!要么允许要么关闭!
!!由于涉及到主机间不同基于不同协议的通信,所以为了避免不必要的麻烦,我们选择关闭防火墙以及selinux。如下
[root@localhost ~]# systemctl stop firewalld //关闭防火墙 [root@localhost ~]# setenforce 0 //临时关闭Selinux,重启失效
六、安装虚拟机
开始安装!
安装完成
七、我的踩坑记录
问题1:
运行内存给的不过,Centos7.3以上的版本貌似要2G及以上才可以
解决方法:关机将运行内存调至2G即可
问题2:
无法连接到nfs服务器,nfs服务器格式错误
/var/lib/tftproot/pxelinux.cfg/default 有问题
错误原因
参数格式错误:ks=nfs:192.168.1.1/var/www/html/ks.cfg
正确格式:ks=nfs:192.168.1.1:/var/www/html/ks.cfg
一个不小心参数少打个冒号
解决方法:修改为正确格式即可
本篇文章由博客园博主[伊诺丶]原创,转载请注明出处https://www.cnblogs.com/hinaux/p/Article_2.html。
否则将追究法律责任!!