3.1 KickStart 无人值守批量安装Linux系统
原创地址找不到了,请原创来找我吧,感谢原创。
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系统相关推荐
- (转)Cobbler无人值守批量安装Linux系统
本文目录: 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光 ...
- Centos7 自动化Kickstart+pxe实现无人值守批量安装Linux系统
前言 本章讲解的是,公司网络环境,需要部署大量Linux系统.一个一个装太费时间了,而且装系统还要手动一个一个去点击配置一些基本设置,占用大量时间.只需要一根网线,设置网卡启动,kickstart和p ...
- linux系统批量装机,PXE+Kickstart实现无人值守批量安装Linux
PXE+Kickstart实现无人值守批量安装Linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: 支持TF ...
- PXE+Kickstart实现无人值守批量安装Linux
PXE+Kickstart实现无人值守批量安装Linux 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的 ...
- linux不断安装操作系统,无人值守批量安装linux操作系统
无人值守批量安装linux操作系统(实验总结) 每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性 ...
- linux无人值守安装实验,无人值守批量安装linux操作系统
无人值守批量安装linux操作系统(实验总结) 每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性 ...
- 用Kickstart批量安装Linux系统、Kickstart安装,linux批量安装;Linux的Kickstart的 无人值守安装;linux pxe自动安装linux系统...
用Kickstart批量安装Linux|Kickstart,批量安装:Linux的Kickstart的 无人值守安装:linux pxe自动安装linux系统: KickStart + DHCP + ...
- 无人值守网络安装Linux系统
概述:本文描述的是通过网络安装linux系统(PXE),完全自动无人值守安装,是通过Linux系统的kickstart工具来实现的 实验环境:分为安装服务器,启动服务器和客户机,本文把安装服务器和启动 ...
- linux查看网卡硬件 lsw,无人值守网络安装Linux系统
概述:本文描述的是通过网络安装linux系统(PXE),完全自动无人值守安装,是通过Linux系统的kickstart工具来实现的 实验环境:分为安装服务器,启动服务器和客户机,本文把安装服务器和启动 ...
最新文章
- workunit 的指的工作单元是什么_三支一扶指的是什么?主要工作内容有哪些?
- 2021年度最有成就感的几件事
- SAP MM 并非奇怪现象之MB5B报表里期初库存余额或者期末库存余额为负数?
- 你还是只会用数组吗?不懂Java集合,还想找工作?(集合概述)
- 16进制在c语言中用来做什么,十六进制在代码中有什么用
- mysql中的or_mysql中or和in的效率问题
- POJ 1080 Human Gene Functions(DP:LCS)
- 基于深度学习的自然场景文字检测及端到端的OCR中文文字识别
- Linux关机运行的脚本,Linux关机时执行指定脚本功能实现
- CentOS 6.X配置 NFS以及启动和mount挂载
- Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
- 谷歌logo的“前世今生”
- 【UI】优秀的网站欣赏以及分析
- mike21 matlab tools,MIKE21学习软件
- 阿里云新优惠活动,幸运券免费领取
- 电脑突然变成繁体字,格式化代码快捷键失灵
- 医疗软件实施入门02
- Halcon——颜色识别提取
- 耗时整整3个月,我梳理了200道Android面试基础(上)【面试必考,全网最全,每天一遍】
- 视觉Transformer研究的关键问题: 现状及展望
热门文章
- C语言丨数组越界及其避免方法详解
- 【百日冲大厂】第二篇,牛客网选择题+排序子序列+倒置字符串
- 【图像评价】基于matlab GUI图像评价系统【含Matlab源码 2185期】
- python方差分析报错_PYTHON安装报错定位信息
- 从零实现3D图像引擎:(14)背面消隐的三大陷阱
- 关于Linux的7件武器(上)
- win7 php乱码,打开网站php出现乱码问题的解决办法nsiserror解决办法win7黑屏解决办法龙之谷报错解决办...
- source insight取消文件备份功能backup
- warning no match for this type name:com.xxx.xxx [Xlint:invalidAbsoluteTypeName]
- Web使用HarmonyOS字体的压缩方案