CentOS6.6下PXE+Kickstart无人值守安装CentOS7.1操作系统

一.简介

1.1 什么是PXE

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的工作过程:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
  2. DHCP服务器返回分配给客户起的IP,以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上);
  3. PXE Client 向本网络的TFTP服务器索取pxelinux.0文件;
  4. PXE Client 取得pxelinux.0文件后执行该文件;
  5. 根据pxelinu.0的执行结果,通过TFTP服务器加载内核和文件系统;
  6. 进入安装画面,此时可以通过选择HTTP.FTP、NFS方式之一进行安装;

详细工作流程,请参考下面这幅图:

1.2 什么是Kickstart

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

三、编写kickstart配置文件

CentOS-7.1-x86_64.cfg

#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 $$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 --ondisk sda
part swap --size --ondisk sda
part / --fstype xfs --size --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安装方式

系统的安装方式可以选择HTTP、FTP、NFS,我们这里介绍HTTP方式的安装,其他两种方式的安装,可以自行百度。

4.1 安装并配置HTTP

#yum install httpd -y

#rpm -qa|grep httpd

开启服务并设置开机启动

# /etc/init.d/httpd start

# chkconfig --level  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

HTTP部分设置完毕。

4.4 安装httpd 和 创建yum仓库的createrepo

# 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              = 

        cps                     =  

        flags                   = IPv4

}

将disable 设置为no

5.3 启动tftp服务

因为tftp服务时挂载在超级进程xinetd下的,所以通过启动xinetd来启动tftp服务。

# /etc/init.d/xinetd restart

设置开机启动xinetd

# chkconfig xinetd on

5.4 将cfg文件上传

[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...

  %        KB        KB/sec    ::        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  OK

Date: Fri,  Nov  :: GMT

Server: Apache/2.2. (CentOS)

Last-Modified: Fri,  Nov  :: GMT

ETag: "9ff44-508-55ec1c03dc8a0"

Accept-Ranges: bytes

Content-Length: 

Connection: close

Content-Type: text/plain; charset=UTF-

出现200 ok表示成功

5.6 修改dhcp 配置文件

# cd /usr/share/doc/dhcp-4.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

说明syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。

# yum install -y syslinux

6.2 复制pxelinux.0文件至/var/lib/tftpboot/ 文件夹中

# cp /usr/share/syslinux/pxelinux.  /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 

  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.]# tail -f /var/log/messages

Nov  :: linux-node1 in.tftpd[]: tftp: client does not accept options

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img

Nov  :: linux-node1 root: [euid=root]:root pts/ -- : (10.0.0.1):[/usr/share/doc/dhcp-4.1.]-- :: rootvim /etc/dhcp/dhcpd.conf

Nov  :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: ns1.example.org: host unknown.

Nov  :: linux-node1 dhcpd: ns2.example.org: host unknown.

Nov  :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.100 to :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.100 (10.0.0.7) from :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: DHCPACK on 10.0.0.100 to :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 in.tftpd[]: tftp: client does not accept options

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished boot.msg

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vesamenu.c32

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished pxelinux.cfg/default

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished splash.png

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished vmlinuz

Nov  :: linux-node1 in.tftpd[]: Client 10.0.0.100 finished initrd.img

Nov  :: linux-node1 dhcpd: DHCPDISCOVER from :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: DHCPOFFER on 10.0.0.101 to :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: DHCPREQUEST for 10.0.0.101 (10.0.0.7) from :0c::cb:b0:c7 via eth0

Nov  :: linux-node1 dhcpd: DHCPACK on 10.0.0.101 to :0c::cb:b0:c7 via eth0

说明:出现10.0.0.101说明dhcp自动分配ip成功

7.2 安装系统

选择自定义

下一步——》下一步-----》稍后安装操作系统

下一步——》下一步——》取名test

一直点击下一步最后点完成

开启创建的test虚拟主机

选择配置文件里定义的AUTO Install CentOS 7

over  thanks!

pxe+kickstart 无人值守安装CentOS7.1的更多相关文章

  1. PXE+Kickstart无人值守安装---CentOS7.

    1.安装一台CentOS7.x桌面版本系统的服务器,关闭selinux和防火墙: 2.在服务器安装pxe+kickstart无人值守需要的软件 : yum install dhcp tftp-serv ...

  2. CentOS 6.5下PXE+Kickstart无人值守安装操作系统centos7.3

    CentOS 6.5下PXE+Kickstart无人值守安装操作系统centos7.3 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行 ...

  3. CentOS 6.6下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  4. PXE+kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

  5. (转)PXE+kickstart无人值守安装CentOS 7

    kickstart+cobbler系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文是PXE+kickstart无人值守安装CentOS ...

  6. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  7. CentOS6 PXE+Kickstart无人值守安装

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  8. CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  9. 【转载】CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    [转载]CentOS 6.4下PXE+Kickstart无人值守安装操作系统 转自:CentOS 6.4下PXE+Kickstart无人值守安装操作系统 - David_Tang - 博客园 http ...

随机推荐

  1. 持久化ORM框架——Hibernate与mybatis

    最初SUN公司推出了JavaEE服务器端组件模型(EJB),但是由于EJB配置复杂,且适用范围较小,于是很快就被淘汰了.与EJB的失败伴随而来的是另外一个框架的应运而生.他就是至今也比较流行的Hibe ...

  2. 【翻译】ASP.NET Core 文档目录

    微软官方CORE 2.0正式版中文文档已经出来了,地址:https://docs.microsoft.com/zh-cn/aspnet/core/ 简介 入门 创建一个Web应用程序 创建一个Web ...

  3. Linux之JDK在线安装及配置

    1.查找java相关得列表  yum -y list java*2.在线安装 yum -y install java-1.6.0-openjdk*3.查看安装目录  ls -l /usr/lib/jv ...

  4. JS设置cookie,读取cookie,删除cookie

    总结了一下cookie的使用,不全面.都是基础的知识,后期还会再添加. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  5. Lyft Level 5 Challenge 2018 - Final Round Div. 1没翻车记

    夜晚使人着迷.没有猝死非常感动. A:显然对于水平线段,只有横坐标的左端点为1的时候才可能对答案产生影响:对于竖直直线,如果要删一定是删去一段前缀.枚举竖直直线删到哪一条,记一下需要删几条水平线段就可 ...

  6. hdu 1286 找新朋友 (欧拉函数)

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  7. How to Create a Perl Based Custom Monitor on NetScaler

    How to Create a Perl Based Custom Monitor on NetScaler https://support.citrix.com/article/CTX227727 ...

  8. [CF895C]Square Subsets

    题目大意:给一个集合$S$($1\leq S_i\leq 70$),选择一个非空子集,使它们的乘积等于某个整数的平方的方法的数量. 求方案数,若两种方法选择的元素的索引不同,则认为是不同的方法. 题解 ...

  9. [CF1019A]Elections

    题目大意:有$n$个人,$m$个政党,每个人都想投一个政党,但可以用一定的钱让他选你想让他选的政党. 现在要$1$号政党获胜,获胜的条件是:票数严格大于其他所有政党.求最小代价 题解:暴力枚举其他政党 ...

  10. hadoop基础----hadoop实战(九)-----hadoop管理工具---CDH的错误排查(持续更新)

    在CDH安装完成后或者CDH使用过程中经常会有错误或者警报,需要我们去解决,积累如下: 解决红色警报 时钟偏差 这是因为我们的NTP服务不起作用导致的,几台机子之间有几秒钟的时间偏差. 这种情况下一是 ...