原创地址找不到了,请原创来找我吧,感谢原创。

KickStart 无人值守批量安装Linux系统

一:需求分析

不适合本地安装的情况如下:

(1)无软驱和光驱:如果计算机不带光驱或软驱,则无法通过本地安装。

(2)非标准的软驱和光驱:虽然笔记本电脑都会配置光驱。但是并不一定都是标准的IDE设备,有些通过USB接口或1394接口(例如Samsung的Q10)连接。在Linux安装时所引导的Linux内核一般都不会带这些接口的驱动,所以也无法通过本地安装。

(3)在一些场合,如机房中有大量的计算机需要同时安装Linux。如果通过光驱的方式逐台安装,不仅效率低,也不利于维护。

(4)光驱或安装光盘故障。

基于以上所属情况,kickstart服务就可以解决这些问题。

二:方案设计

什么是PXE:

所有系统的网络安装和无人职守安装都是基于PXE,PXE技术与RPL技术不同之处为RPL是静态路由,PXE是动态路由。RPL是根据网卡上的ID号加上其他记录组成的一个Frame(帧)向服务器发出请求。而服务器中已有这个ID数据,匹配成功则进行远程启动。PXE则是根据服务器端收到的工件站MAC地址,使用DHCP服务为这个MAC地址指定个IP地址。每次启动可能同一台工作站有与上次启动有不同的IP,即动态分配地址。下以客户端引导过程说明PXE的原理。

(1)客户端开机后,PXE BootROM(自启动芯片)获得控制权之前执行自我测试,然后以广播形式发出一个请求FIND帧。

(2)如果服务器收到客户端所送出的要求,就会送回DHCP回应,包括用户端的IP地址、预设通信通道,以及开机映像文件;否则服务器会忽略这个要求。

(3)客户端收到服务器发回的响应后则会回应一个帧,以请求传送启动所需文件,并把自己的MAC地址写到服务器端的Netnames.db文件中。

(4)将有更多的消息在客户端与服务器之间应答,用于决定启动参数。BootROM由TFTP通信协议从服务器下载开机映像文档。客户端使用TFTP协议接收启动文件后,将控制权转交启动块以引导操作系统,完成远程启动。

PXE工安装流程:

PXE协议的成功运行需要解决以下的两个问题

(1)既然是通过网络传输,那么计算机在启动时其IP地址如何配置?

(2)通过何种下载Linux内核和根文件系统?

第一个问题可以通过DHCP Server解决,由DHCP Server来为PXE Client分配一个IP地址,DHCP Server是用来为DHCP Client动态分配IP地址的协议。不过由于这里是为PXE Client分配IP地址,所以在配置DHCP Server时需要增加相应的PXE特有配置;至于第2个问题,在PXE Client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。这样,PXE协议运行的条件就具备了,PXE的安装流程如图所示。

PXE Client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上,Bootstrap文件、配置文件、Linux内核,以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。除了配置文件,这3个二进制文件是PXE Client在工件过程中所必需的文件,即bootstrap、Linux内核和Linux根文件系统。Bootstrap文件是可执行程序,它为用户提供简单的控制界面,并根据用户的选择下载合适的Linux内核以及Linux根文件系统。

三:环境准备

   

1、一台server担任启动服务器和安装服务器

2、一台client,需要能从网卡启动

3、两台机器在同一局域网

4、服务器要有安装所需的所有包软件包

5、我们用10.1.24.0/24网段来试验(网段可随意,本人学号为24)

四:实施步骤

配置IP地址

(1)在终端里输入setup打开IP配置图形界面。

然后重启网卡  service network restart

安装rpm软件包

配置该服务器需要安装dhcp,tftp,nfs,等相关软件包。首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名。

首先需要检查本机上是否已经安装了这些包,输入rpm –qa | grep +包名。

图7检查RPM包

如果没有安装这些包则需要通过rpm –ivh +包名 安装。

首先需要用  mount /dev/hdc /mnt    来将系统光盘挂载到/mnt目录下。然后安装需要的rpm包。

配置dhcp服务

需要的软件包都安装好之后,使用vim编辑器编辑dhcp服务的配置文件/etc/dhcp.conf

由于是第一次编辑dhcp.conf所以里面的内容是空的,那么我们就需要将/usr/shar/doc/dhcp-3.0.5/dhcp.conf.sample 复制到/etc下并改名为dhcp.conf

复制之后,再进入配置文件可以看到以下内容,然后就可以进行相应的修改了。。。

修改后的内容如下:

ddns-update-style interim;

ignore client-updates;

next-server 10.1.24.1;

filename "pxelinux.0";

subnet 10.1.24.0 netmask 255.255.255.0 {

# --- default gateway

option routers                  10.1.24.254;

option subnet-mask              255.255.255.0;

default-lease-time 21600;

max-lease-time 43200;

range  10.1.24.20  10.1.24.200;

filename "/linuxinstall/ks.cfg";

next-server 10.1.24.10;

default-lease-time 21600;

max-lease-time 43200;

}

option space PXE;

class "PXE" {

match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";

option vendor-encapsulated-options 01:04:00:00:00:00:ff;

option boot-size 0x1;

filename "pxelinux.0";

option tftp-server-name "10.1.24.10";

option vendor-class-identifier "PXEClient";

vendor-option-space PXE;

}

需要注意的是字段range是给待安装的机器分配的的IP地址池,filename字段是ks.cfg的位置,即待安装机器所需要的安装配置文件,next-server是tftp服务器的位置。和下面的tftp-server-name字段是对应的。

配置tftp服务

tftp是为了给待安装的机器发送文件的简单的文件传输服务。

这个配置还是比较简单的,只需要把这个服务给启用就可以了。

使用vim编辑器打开/etc/xinetd.d/tftp文件

图17 tftp配置文件位置

将里面的disable字段值改为no,保存退出就可以了。

配置nfs服务

nfs服务是将安装过程所需要的一些文件共享出来,这个也是比较简单的。

使用vim编辑器打开/etc/exports文件,只要将你想共享的文件夹写入其中就可以了,我们这里需要把/mnt /tftpboot /linuxinstall 给共享出来就可以了,其中/linuxinstall目录是我们自己建立的,将在后面建立。而/tftpboot目录是在安装tftp-server的rpm包时候自动建立的。

配置如下:

保存退出…

其中*表示任何主机都可以访问,ro表示read only,只读权限,sync表示与服务器同步。

通过输入service nfs restart重启nfs服务,然后我们输入exportfs可以看见我们共享的文件。

配置ks.cfg文件

ks.cfg是待安装机器的所有的配置文件,每台机器在安装过linux系统以后都会自动生成一个ks.cfg文件里面记录了在安装系统的时候所做的所有操作,文件的位置位于/root目录下名为anaconda-ks.cfg。

图22 anaconda-ks.cfg文件

下面是我自己的anaconda-ks.cfg文件。

这个文件也可以通过system-config-kickstart的图形界面来编辑。前提需要安装这个rpm包,系统光盘自带这个包。下面的是kickstart configurator图形界面。

本次实验用的ks.cfg 文件内容如下

#     /linuxinstall/ks.cfg   的配置内容

install

text

nfs --server=10.1.24.10 --dir=/mnt

key --skip

lang zh_CN.UTF-8

keyboard us

network --device eth0 --bootproto dhcp --onboot=on

rootpw 123456

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

zerombr

clearpart --all --drives=sda --initlabel

part / --fstype ext3 --size=1 --grow

part /var --fstype ext3 --size=2000

part swap --size=1000

reboot

%packages

@base

@core

@editors

#@text-internet

#@web-server

#@mysql

#@dns-server

#sysstat

%post

/usr/sbin/useradd admin

/bin/echo 888888 | /usr/bin/passwd admin --stdin

/bin/touch /home/admin/HelloWorld

/sbin/chkconfig auditd off

/sbin/chkconfig autofs off

/sbin/chkconfig avahi-daemon off

/sbin/chkconfig bluetooth off

/sbin/chkconfig cups off

/sbin/chkconfig firstboot off

/sbin/chkconfig gpm off

/sbin/chkconfig haldaemon off

/sbin/chkconfig hidd off

/sbin/chkconfig ip6tables off

/sbin/chkconfig kudzu off

/sbin/chkconfig lvm2-monitor off

/sbin/chkconfig mcstrans off

/sbin/chkconfig netfs off

/sbin/chkconfig nfslock off

/sbin/chkconfig pcscd off

/sbin/chkconfig portmap off

/sbin/chkconfig restorecond off

/sbin/chkconfig rhnsd off

/sbin/chkconfig rpcgssd off

/sbin/chkconfig rpcidmapd off

/sbin/chkconfig smartd off

/sbin/chkconfig xfs off

/sbin/chkconfig yum-updatesd off

创建所需文件夹

上面我们共享出了/mnt  和/linuxinstall目录,但是系统上并没有/linuxinstall这个目录,所以就需要我们来建立,使用mkdir命令来执行新建操作。mkdir /linuxinstall

然后将上步创建的ks.cfg文件保存到/linuxinstall目录中,需要注意的是在配置dhcp.conf文件中,我们就指定了filename “/linuxinstall/ks.cfg”所以路径一定不能搞错。你在dhcp.conf中写的路径是什么你就需要把你的ks.cfg 放在什么样的路径。并且要通过nfs给共享出来。

配置支持PXE启动

这步需要将linux内核复制到tftpboot文件夹内。

mount /dev/hdc /mnt

#把第一张光盘挂载到/mnt

cd /tftpboot/

#tfp-server指定的根目录位置(若该文件夹已经存在则不用建立,通常重启tftp服务后会自动建立)

cp /usr/lib/syslinux/pxelinux.0 /tftpboot

#pxelinux.0是pxe方式的boot loader,如果你发现没有这个目录,不要紧张。找到syslinux这个软件包就OK了

cp /mnt//images/pxeboot/vmlinuz /tftpboot/

#把Linux第一张安装光盘上/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中

cp /mnt//images/pxeboot/initrd.img /tftpboot/

mkdir /tftpboot/pxelinux.cfg

#在tftpboot中新建一个pxelinux.cfg目录

复制好之后,/tftpboot/目录下应该有以下内容才对:

由于启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下。pxelinux.0根据一定的规则来搜索合适的配置文件名。比如说C0A88A1E > C0A88A1 > … > C0 > C > default就是说,如果C0A88A1E文件存在,它就是pxelinux.0将载入的配置文件。否则,继续往下找。如果C0A88A1文件存在,它就是 pxelinux.0将载入的配置文件。如果前面的以C开头的文件都不存在,那么pxelinux.0将试图从文件default中读取配置。对于一台需要支持很多安装机器的安装服务器来说,将配置写在与IP地址对应的文件里很不灵活。把所有配置都集中在default文件中是个不错的主意,可以减轻配置文件维护负担。 这里也是为什么要建立pxelinux.cfg文件夹。所以接下来就要在pxelinux.cfg里建立default 文件,系统盘里也有这个文件,位于系统盘的isolinux下的isolinux.cfg但是我这里不借用它的default文件,所以这是我们使用vim编辑器在pxelinux.cfg中直接建立一个default文件。

图27 创建default文件

直接在里面写入一句话就可以了

default linux

prompt 0

label  linux

kernel  vmlinuz

append ks=nfs:10.1.24.10:/linuxinstall/ks.cfg initrd=initrd.img

这样写的好处在于不用在待安装机器启动的时候做一些别的操作。

接下来是要使用mount /dev/hdc /mnt把系统光盘给挂载到/mnt中。

启动服务器

到这里我们的服务器可以说是配置的差不多了,剩下的就只要将这些服务给启动起来就可以了。

service dhcpd restart

#启动dhcpd服务

chkconfig dhcpd on

#dhcpd服务开机自动启动

service nfs restart

#重启nfs服务

chkconfig nfs on

#nfs服务开机自动启动

service xinetd restart

#启动xinetd服务

chkconfig xinetd on

#xinetd服务开机自动启动

五:测试

将待安装机器启动起来,进入bios界面,将启动方式改为从网络启动,保存退出重启即可,有的机器则不用进入bios就可以直接进入安装界面。主要过程如下:

通过DHCP获取IP地址

通过tftp服务器下载配置文件

发送IP信息请求

检查软件包依赖关系

开始安装

安装完成,重启系统

六、常见故障排除

6.1 无法分配到IP地址

如果安装开始的时候无法分配到IP地址,则说明你服务器的dhcp.conf配置的有问题,有可能你的语法有问题,比如说少了个分号(;),又或者单词写的有问题,这些语法错误会导致dhcp服务启动失败。

6.2 tftp无法连接

导致这个错误的主要原因是在你的dhcp.conf文件的next-server和tftp-server-name两个字段上,如果这两个字段没有正确的指出tftp服务器的地址的话,一般就会出现这样的问题。或者是tftp服务没有启动,这类问题一般都出现在dhcp服务器的配置上面,因为当待安装机器在局域网内广播需要分配IP地址的时候,服务器会将IP地址和一些安装文件的地址返回给待安装机器上,如果dhcp出现了问题则无法将这些地址返回回来,这就导致了待安装机器不知道从何处来获取安装文件。返回修改好tftp指定IP 地址,再把/etc/xinetd.d/tftp 里面disable字段值改为no,即可。

6.3 无法获取ks.cfg文件

可以获取到dhcp服务器分配的IP地址,也可以从tftp服务器上获取内核文件,并加载,但是在读取ks.cfg文件的时候出现了错误。如下图。

图37 无法获取ks.cfg文件

出现了这样的问题则说明你的default文件指定的nfs服务器的地址错误,如上图,IP应该为10.1.24.10即可

6.4 在指定目录无法获取安装信息

出现这种情况,是因为光盘没有挂载上来,或者是挂错了光盘,正确的解决办重新

把第一张光盘挂载到/mnt目录

六:总结

如果只是完成一个kickstart服务,不是很难,因为如今的网络资源可以说是应有尽有,但是,要真正明白其中的原理,就要花一定的时间去研究研究。比如说,kickstart服务的工作流程,及其用到的哪些技术。像这些知识如果没有掌握好,实施起来就会出现很多问题。运气好第一次测试就成功,但是出现错误的时候,你怎么知道它错在哪里,而如果你把服务的流程和工作原理都了解透彻的话,这些问题就会很容易解决。

通过这样一篇论文,使自己在Linux方面有更深一层的认识,为以后自己在学习和工作中积累更多的经验。

3.1 KickStart 无人值守批量安装Linux系统相关推荐

  1. (转)Cobbler无人值守批量安装Linux系统

    本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...

  2. Centos7 自动化Kickstart+pxe实现无人值守批量安装Linux系统

    前言 本章讲解的是,公司网络环境,需要部署大量Linux系统.一个一个装太费时间了,而且装系统还要手动一个一个去点击配置一些基本设置,占用大量时间.只需要一根网线,设置网卡启动,kickstart和p ...

  3. linux系统批量装机,PXE+Kickstart实现无人值守批量安装Linux

    PXE+Kickstart实现无人值守批量安装Linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: 支持TF ...

  4. PXE+Kickstart实现无人值守批量安装Linux

    PXE+Kickstart实现无人值守批量安装Linux 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的 ...

  5. linux不断安装操作系统,无人值守批量安装linux操作系统

    无人值守批量安装linux操作系统(实验总结) 每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性 ...

  6. linux无人值守安装实验,无人值守批量安装linux操作系统

    无人值守批量安装linux操作系统(实验总结) 每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性 ...

  7. 用Kickstart批量安装Linux系统、Kickstart安装,linux批量安装;Linux的Kickstart的 无人值守安装;linux pxe自动安装linux系统...

    用Kickstart批量安装Linux|Kickstart,批量安装:Linux的Kickstart的 无人值守安装:linux pxe自动安装linux系统: KickStart + DHCP + ...

  8. 无人值守网络安装Linux系统

    概述:本文描述的是通过网络安装linux系统(PXE),完全自动无人值守安装,是通过Linux系统的kickstart工具来实现的 实验环境:分为安装服务器,启动服务器和客户机,本文把安装服务器和启动 ...

  9. linux查看网卡硬件 lsw,无人值守网络安装Linux系统

    概述:本文描述的是通过网络安装linux系统(PXE),完全自动无人值守安装,是通过Linux系统的kickstart工具来实现的 实验环境:分为安装服务器,启动服务器和客户机,本文把安装服务器和启动 ...

最新文章

  1. workunit 的指的工作单元是什么_三支一扶指的是什么?主要工作内容有哪些?
  2. 2021年度最有成就感的几件事
  3. SAP MM 并非奇怪现象之MB5B报表里期初库存余额或者期末库存余额为负数?
  4. 你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)
  5. 16进制在c语言中用来做什么,十六进制在代码中有什么用
  6. mysql中的or_mysql中or和in的效率问题
  7. POJ 1080 Human Gene Functions(DP:LCS)
  8. 基于深度学习的自然场景文字检测及端到端的OCR中文文字识别
  9. Linux关机运行的脚本,Linux关机时执行指定脚本功能实现
  10. CentOS 6.X配置 NFS以及启动和mount挂载
  11. Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
  12. 谷歌logo的“前世今生”
  13. 【UI】优秀的网站欣赏以及分析
  14. mike21 matlab tools,MIKE21学习软件
  15. 阿里云新优惠活动,幸运券免费领取
  16. 电脑突然变成繁体字,格式化代码快捷键失灵
  17. 医疗软件实施入门02
  18. Halcon——颜色识别提取
  19. 耗时整整3个月,我梳理了200道Android面试基础(上)【面试必考,全网最全,每天一遍】
  20. 视觉Transformer研究的关键问题: 现状及展望

热门文章

  1. C语言丨数组越界及其避免方法详解
  2. 【百日冲大厂】第二篇,牛客网选择题+排序子序列+倒置字符串
  3. 【图像评价】基于matlab GUI图像评价系统【含Matlab源码 2185期】
  4. python方差分析报错_PYTHON安装报错定位信息
  5. 从零实现3D图像引擎:(14)背面消隐的三大陷阱
  6. 关于Linux的7件武器(上)
  7. win7 php乱码,打开网站php出现乱码问题的解决办法nsiserror解决办法win7黑屏解决办法龙之谷报错解决办...
  8. source insight取消文件备份功能backup
  9. warning no match for this type name:com.xxx.xxx [Xlint:invalidAbsoluteTypeName]
  10. Web使用HarmonyOS字体的压缩方案