当前位置: 首页 > news >正文

CentOS6 PXE+Kickstart无人值守安装

一、简介
1.1 什么是PXE

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 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. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ; 6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装; 详细工作流程,请参考下面这幅图:
kickstartpxe01

1.2 什么是Kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。 PXE+Kickstart 无人值守安装操作系统完整过程如下:
kickstartpxe02

二、系统环境

实验环境:VMware Workstation 10 系统平台:CentOS release 6.5 (最小化安装) 网络模式:NAT模式(共享主机的IP地址) DHCP / TFTP IP:192.168.111.130 HTTP / FTP / NFS IP:192.168.111.130 关闭Iptables和SELINUX

三、准备工作

生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依赖于X Windows,所以我们需要安装X Windows 和Desktop 并重启系统,操作如下:

# yum groupinstall "X Window System"
# yum groupinstall Desktop
# yum groupinstall Fonts
# reboot
四、配置HTTP安装方式
4.1 安装配置HTTP,启动服务并开机自启
# yum install httpd –y
# /etc/init.d/httpd start
# chkconfig --level 35 httpd on
4.2 加载ISO镜像

在虚拟机中设置加载ISO镜像:
kickstartpxe03
将iso文件挂载至/mnt/cdrom:
kickstartpxe04

4.3 复制光盘全部内容至http 的根目录/var/www/html/ 下
# cp -r /mnt/cdrom/ /var/www/html/
五、配置TFTP
5.1 安装tftp-server
# yum install tftp-server –y
5.2 启用tftp 服务tftp-server

# 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 
}
5.3 启动tftp服务tftp-server

因为tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务,并开机自启动xinetd:

# /etc/init.d/xinetd restart
# chkconfig xinetd on
六、配置支持PXE的启动程序
6.1 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

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

6.2 复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/ 文件夹中
# cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
6.3 复制iso 镜像中的/isolinux/*.msg 至/var/lib/tftpboot/ 文件夹中
# cp /var/www/html/cdrom/isolinux/*.msg /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
# cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
6.6 修改default文件

# vi /var/lib/tftpboot/pxelinux.cfg/default

default ks     #默认启动的是 'label ks' 中标记的启动内核 
prompt 1 #显示 'boot: ' 提示符。为 '0' 时则不提示,将会直接启动 'default' 参数中指定的内容。 
timeout 6      #在用户输入之前的超时时间,单位为 1/10 秒。 
display boot.msg #显示某个文件的内容,注意文件的路径。默认是在/var/lib/tftpboot/ 目录下。也可以指定位类似 '/install/boot.msg'这样的,路径+文件名。 
F1 boot.msg     #按下 'F1' 这样的键后显示的文件。 
F2 options.msg 
F3 general.msg 
F4 param.msg 
F5 rescue.msg 
label linux #'label' 指定你在 'boot:' 提示符下输入的关键字,比如boot: linux[ENTER],这个会启动'label linux' 下标记的kernel 和initrd.img 文件。 
kernel vmlinuz #kernel 参数指定要启动的内核。 
append initrd=initrd.img #append 指定追加给内核的参数,能够在grub 里使用的追加给内核的参数,在这里也都可以使用。 
label text 
  kernel vmlinuz 
  append initrd=initrd.img text 
label ks 
  kernel vmlinuz 
  append ks=http://192.168.111.130/ks.cfg initrd=initrd.img #告诉系统,从哪里获取ks.cfg文件 
label local 
  localboot 1 
label memtest86 
  kernel memtest 
  append -
七、配置DHCP
7.1 安装DHCP服务
# yum -y install dhcp
7.2 复制配置模板文件到DHCP的配置目录中
# cp -f /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf
7.3 修改/etc/dhcp/dhcpd.conf 配置文件,内容如下:
ddns-update-style interim; 
ignore client-updates; 
filename "pxelinux.0";   #pxelinux 启动文件位置;
next-server 192.168.111.130;  #TFTP Server 的IP地址;

subnet 192.168.111.0 netmask 255.255.255.0 {

        option routers                  192.168.111.130; 
        option subnet-mask              255.255.255.0;

        range dynamic-bootp 192.168.111.100 192.168.111.200; 
        default-lease-time 21600; 
        max-lease-time 43200;
}
7.4 启动DHCP服务
# /etc/init.d/dhcpd start
八、生成ks.cfg 文件
8.1 安装Kickstart
# yum install system-config-kickstart

启动X Windows 环境

# startx

配置Kickstart

# system-config-kickstart

A. 设置语言,键盘,时区,Root密码,安装完毕后重启等。
kickstartpxe05
B. 设置安装方式,这篇文章介绍的是HTTP方式的安装,故选择HTTP
kickstartpxe06
C. 安装MBR
kickstartpxe07
D. 设置分区
kickstartpxe08
E. 分区总览
kickstartpxe09
F. 配置网络
kickstartpxe10
G. 认证配置
kickstartpxe11
H. SELinux 和防火墙配置
kickstartpxe12
I. 图形环境配置
kickstartpxe13
J. 软件包安装选择
kickstartpxe14
K. 预览
kickstartpxe15
L. 生成ks.cfg 文件,保存在/var/www/html/ 文件夹下
kickstartpxe16

九、测试安装

1. 创建一台虚拟机 2. 启动虚拟机,选择从网卡启动,DHCP 服务器正在给客户机分配IP地址。
kickstartpxe17
3. 开始下载vmlinuz 和initrd.img
kickstartpxe18
4. 安装过程...
kickstartpxe19

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

相关文章:

  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • lua闭包浅析及项目应用
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 验证信息
  • centos6.5环境基于corosync+cman+rgmanager实现RHCS及iscsi+gfs2+clvm的文件系统集群
  • 三步学会用spring开发OSGI——(第二步:工程篇)
  • 个推基于Consul的配置管理
  • Android精品开源整理
  • ECS应用管理最佳实践
  • 大数据分析专题:利用向外扩展技术深入挖掘商业价值(1)
  • Apache搭建简单的图片访问服务器
  • Bootloader之uBoot简介
  • 分布式熔断降级平台aegis
  • 建议
  • dubbo分布式事务
  • [笔记] php常见简单功能及函数
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2017年终总结、随想
  • ECS应用管理最佳实践
  • ES6语法详解(一)
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java|序列化异常StreamCorruptedException的解决方法
  • Javascript 原型链
  • java概述
  • js ES6 求数组的交集,并集,还有差集
  • Nacos系列:Nacos的Java SDK使用
  • Python_网络编程
  • Spring声明式事务管理之一:五大属性分析
  • vue2.0项目引入element-ui
  • 分布式任务队列Celery
  • 使用Swoole加速Laravel(正式环境中)
  • 数组的操作
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • No resource identifier found for attribute,RxJava之zip操作符
  • 你对linux中grep命令知道多少?
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • # include “ “ 和 # include < >两者的区别
  • #Ubuntu(修改root信息)
  • #Z2294. 打印树的直径
  • $ git push -u origin master 推送到远程库出错
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (力扣)循环队列的实现与详解(C语言)
  • (七)Knockout 创建自定义绑定
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献