pxe+kickstart 无人值守安装CentOS7.1
Posted 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pxe+kickstart 无人值守安装CentOS7.1相关的知识,希望对你有一定的参考价值。 Pxe(Pre-boot Execution Environment,预启动执行环境)是由Inter公司开发的最新技术,工作与Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过 网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 严格来说,PXE并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个pxe支持的网卡(NIC),即网卡必须要有PXE Client。PXE协议可以使计算机通过网络启动。此协议分为Client端和server端,而PXEclient 则在网卡的ROM中。当计算机引导时。Bios把PXE Client调入内存中执行,然后由PXE client将放置在远端的文件通过网络下载到本地执行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器会给PXE Client(将要安装系统的主机)分配一个IP地址,由于是给PXE Client分配地址,所以在配置DHCP服务器时需要增加相应的PXE设置,此外,在PXEClient的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需的文件了。 PXE的工作过程: 详细工作流程,请参考下面这幅图: kicstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录的典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。 PXE+Kickstart无人值守安装操作系统完整过程如下: 实验环境:VMware Workstation 12 系统平台:CentOS release 7.1( 最小化安装) 网络模式:NAT模式(共享主机的IP地址) DHCP /TFTP IP: 10.0.0.7 HTTP/FTP/NFS IP: 10.0.0.7 防火墙已关闭/iptables:Firewall is not running: SELINUX=disabled CentOS-7.1-x86_64.cfg 系统的安装方式可以选择HTTP、FTP、NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,可以自行百度。 开启服务并设置开机启动 HTTP部分设置完毕。 4.4 安装httpd 和 创建yum仓库的createrepo 因为tftp服务时挂载在超级进程xinetd下的,所以通过启动xinetd来启动tftp服务。 设置开机启动xinetd 5.4 将cfg文件上传 说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。 选择自定义 下一步——》下一步-----》稍后安装操作系统 下一步——》下一步——》取名test 一直点击下一步最后点完成 开启创建的test虚拟主机 选择配置文件里定义的AUTO Install CentOS 7 over thanks! 以上是关于pxe+kickstart 无人值守安装CentOS7.1的主要内容,如果未能解决你的问题,请参考以下文章 linux系统服务-PXE批量部署kickstart无人值守 CentOS6.6下PXE+Kickstart无人值守安装CentOS7.1操作系统
一.简介
1.1 什么是PXE
1.2 什么是Kickstart
二、系统安装
三、编写kickstart配置文件
#Kickstart Configurator by Benjamin Yang
#platform=x86, AMD64, or Intel EM64T
#System language
lang en_US
#System keyboard
keyboard us
#System timezone
timezone Asia/Shanghai
#Root password
#rootpw --iscrypted $default_password_crypted
rootpw --iscrypted $1$opa-node$7hqdpgEmIE7Z0RbtQkxW20
#Use text mode install
text
#Install OS instead of upgrade
install
#Use NFS installation Media
#url --url=$tree
url --url=http://10.0.0.7/CentOS-7.1-x86_64
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype xfs --size 1024 --ondisk sda
part swap --size 16384 --ondisk sda
part / --fstype xfs --size 1 --grow --ondisk sda
#System autorization information
auth --useshadow --enablemd5
#Network information
#$SNIPPET(‘network_config’)
network --bootproto=dhcp --device=eth0 --onboot=on
# Reboot after installation
reboot
#Firewall configuration
firewall --disabled
#SELinux configuration
selinux --disabled
#Do not configure XWindows
skipx
#Package install information
%packages
@ base
@ core
sysstat
iptraf
ntp
lrzsz
ncurses-devel
openssl-devel
zlib-devel
OpenIPMI-tools
mysql
nmap
screen
%end
%post
systemctl disable postfix.service
%end
四、配置HTTP安装方式
4.1 安装并配置HTTP
#yum install httpd -y
#rpm -qa|grep httpd
# /etc/init.d/httpd start
# chkconfig --level 35 httpd on
4.2 加载ISO镜像
将iso文件挂载至/mnt/
[root@linux-node1 ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
4.3 复制光盘全部内容至http 的根目录/var/www/html/ 下
# mkdir /var/www/html/CentOS-7.1-x86_64
# cp -a /mnt/cdrom/ /var/www/html/CentOS-7.1-x86_64
# yum install -y httpd createrepo
五、配置TFTP
5.1 安装tftp-server
# yum install tftp-server -y
5.2 启用tftp服务
# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
将disable 设置为no
5.3 启动tftp服务
# /etc/init.d/xinetd restart
# chkconfig xinetd on
[root@linux-node1 ~]# cd /var/www/html/CentOS-7.1-x86_64/
[root@linux-node1 CentOS-7.1-x86_64]# rz
rz waiting to receive.
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring CentOS-7.1-x86_64.cfg...
100% 1 KB 1 KB/sec 00:00:01 0 Errors
5.5 验证kickstart文件是否能访问
# curl --head http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg
HTTP/1.1 200 OK
Date: Fri, 24 Nov 2017 22:06:42 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Fri, 24 Nov 2017 22:05:30 GMT
ETag: "9ff44-508-55ec1c03dc8a0"
Accept-Ranges: bytes
Content-Length: 1288
Connection: close
Content-Type: text/plain; charset=UTF-8
出现200 ok表示成功
5.6 修改dhcp 配置文件
# cd /usr/share/doc/dhcp-4.1.1/
# cp dhcpd.conf.sample /etc/dhcp/dhcpd.conf
# vim /etc/dhcp/dhcpd.conf
subnet 10.0.0.0 netmask 255.255.255.0 {
range dynamic-bootp 10.0.0.100 10.0.0.200;
option subnet-mask 255.255.255.0;
next-server 10.0.0.7;
filename "pxelinux.0";
}
5.7 重启httpd、 xinetd服务
# /etc/init.d/httpd restart
# /etc/init.d/xinetd restart
5.8 创建本地yum源
-p以整洁的格式输出xml文件。
-d该选项指定使用SQLite来存储生成的元数据,默认项。
-o 指定元数据的输出位置
# createrepo -pdo /var/www/html/CentOS-7.1-x86_64/ /var/www/html/CentOS-7.1-x86_64/
创建组信息
# createrepo -g `ls /var/www/html/CentOS-7.1-x86_64/repodata/*-comps.xml` /var/www/html/CentOS-7.1-x86_64/
六、配置支持PXE的启动程序
6.1 安装syslinux
# yum install -y syslinux
6.2 复制pxelinux.0文件至/var/lib/tftpboot/ 文件夹中
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:syslinux是一个小型的linux操作系统,它的母的是简化首次安装linux的时间,并建立维护或其他特殊用途的启动盘。
6.3 复制iso镜像中的/isolinux/*.msg 至/var/lib/tftpboot/文件夹中
# cp /mnt/isolinux/* /var/lib/tftpboot/
6.4 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录
# mkdir /var/lib/tftpboot/pxelinux.cfg
6.5 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
# cd /var/lib/tftpboot/pxelinux.cfg/
# cp /mnt/isolinux/isolinux.cfg default
6.6 修改default文件
# vim default
label ks
menu label ^AUTO Install CentOS 7
kernel vmlinuz
append initrd=initrd.img ks=http://10.0.0.7/CentOS-7.1-x86_64/CentOS-7.1-x86_64.cfg
七、创建系统
7.1 查看日志,检查系统发现情况。
[root@linux-node1 dhcp-4.1.1]# tail -f /var/log/messages
Nov 25 07:11:17 linux-node1 in.tftpd[4635]: tftp: client does not accept options
Nov 25 07:11:17 linux-node1 in.tftpd[4636]: Client 10.0.0.100 finished pxelinux.0
Nov 25 07:11:17 linux-node1 in.tftpd[4647]: Client 10.0.0.100 finished pxelinux.cfg/default
Nov 25 07:11:17 linux-node1 in.tftpd[4648]: Client 10.0.0.100 finished boot.msg
Nov 25 07:11:17 linux-node1 in.tftpd[4650]: Client 10.0.0.100 finished vesamenu.c32
Nov 25 07:11:17 linux-node1 in.tftpd[4651]: Client 10.0.0.100 finished pxelinux.cfg/default
Nov 25 07:11:17 linux-node1 in.tftpd[4652]: Client 10.0.0.100 finished splash.png
Nov 25 07:12:20 linux-node1 in.tftpd[4666]: Client 10.0.0.100 finished vmlinuz
Nov 25 07:12:22 linux-node1 in.tftpd[4667]: Client 10.0.0.100 finished initrd.img
Nov 25 07:12:51 linux-node1 root: [euid=root]:root pts/0 2017-11-25 05:12 (10.0.0.1):[/usr/share/doc/dhcp-4.1.1]2017-11-25 07:07:05 rootvim /etc/dhcp/dhcpd.conf
Nov 25 07:13:57 linux-node1 dhcpd: DHCPDISCOVER from 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:13:58 linux-node1 dhcpd: ns1.example.org: host unknown.
Nov 25 07:13:58 linux-node1 dhcpd: ns2.example.org: host unknown.
Nov 25 07:13:58 linux-node1 dhcpd: DHCPOFFER on 10.0.0.100 to 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:13:59 linux-node1 dhcpd: DHCPREQUEST for 10.0.0.100 (10.0.0.7) from 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:13:59 linux-node1 dhcpd: DHCPACK on 10.0.0.100 to 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:13:59 linux-node1 in.tftpd[4715]: tftp: client does not accept options
Nov 25 07:13:59 linux-node1 in.tftpd[4716]: Client 10.0.0.100 finished pxelinux.0
Nov 25 07:13:59 linux-node1 in.tftpd[4727]: Client 10.0.0.100 finished pxelinux.cfg/default
Nov 25 07:13:59 linux-node1 in.tftpd[4728]: Client 10.0.0.100 finished boot.msg
Nov 25 07:13:59 linux-node1 in.tftpd[4730]: Client 10.0.0.100 finished vesamenu.c32
Nov 25 07:13:59 linux-node1 in.tftpd[4731]: Client 10.0.0.100 finished pxelinux.cfg/default
Nov 25 07:13:59 linux-node1 in.tftpd[4732]: Client 10.0.0.100 finished splash.png
Nov 25 07:14:06 linux-node1 in.tftpd[4733]: Client 10.0.0.100 finished vmlinuz
Nov 25 07:14:08 linux-node1 in.tftpd[4734]: Client 10.0.0.100 finished initrd.img
Nov 25 07:14:20 linux-node1 dhcpd: DHCPDISCOVER from 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:14:21 linux-node1 dhcpd: DHCPOFFER on 10.0.0.101 to 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:14:21 linux-node1 dhcpd: DHCPREQUEST for 10.0.0.101 (10.0.0.7) from 00:0c:29:cb:b0:c7 via eth0
Nov 25 07:14:21 linux-node1 dhcpd: DHCPACK on 10.0.0.101 to 00:0c:29:cb:b0:c7 via eth0
说明:出现10.0.0.101说明dhcp自动分配ip成功7.2 安装系统