1.1 安装系统的方法

  l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下

  l  U盘:ISO镜像刻录到U盘==>>需要每台机器都需要插一下

  l  并行安装==>>网络安装

  l  自动化安装

1.2 linux下批量安装系统

kickstart是RedHat公司开源的软件,所以对CentOS兼容性最好。

原理:

  我们将手动安装的所有的详细步骤记录到一个文件中,然后kickstart通过读取这个文件就可以实现自动化安装系统。

  kickstart是一个项目的名称。没有这个软件。使用者水平是高中以上

  cobbler是对kickstart的所有组件的封装。使用者水平是初中以上。本质上就是网页版本的kickstart。

1.2.1 PXE说明

  PXE,全名Pre-boot Execution Environment,预启动执行环境;

  通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;

  由Intel和Systemsoft公司于1999年9月20日公布的技术;

  客户端/Server的工作模式;

  PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;

  PXE客户端(客户端)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)

1.2.2 kickstart原理

1.2.3 PXE请求顺序说明

①  PXE 客户端发送UDP广播请求

  PXE 客户端从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。

②  DHCP服务器提供信息

  DHCP服务器收到客户端的请求,验证是否来至合法的PXE 客户端的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

③  PXE客户端请求下载启动文件

  客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

④  TETP服务器响应客户端请求并传送文件

  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从tftp服务器 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

⑤  请求下载自动应答文件

  客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

⑥  客户端安装操作系统

  将ks.cfg文件下载回来后,通过该文件找到http镜像,并按照该文件的配置请求下载安装过程需要的软件包。

  http镜像和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。

  安装完成后,将提示重新引导计算机。

1.3 kickstart批量安装系统实践

  一般批量安装操作系统最好一次安装23台机器最佳,主要因为大部分交换机为24口,安装23台服务器没有太大的压力

1.3.1 环境说明

防火墙与selinux必须关闭。

[root@kickstart ~]# cat /etc/redhat-release
CentOS Linux release 7.4. (Core) [root@kickstart ~]# uname -r
3.10.-.el7.x86_64 [root@kickstart ~]# getenforce
Disabled [root@kickstart ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld() [root@kickstart ~]# hostname -I
10.0.0.201 172.16.1.201

1.3.2 第一个里程碑:安装dhcp服务

安装

yum install dhcp -y

配置DHCP服务

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.100 172.16.1.199;
option subnet-mask 255.255.255.0;
default-lease-time ;
max-lease-time ;
next-server 172.16.1.201;
filename "/pxelinux.0";
}
EOF

配置文件说明:

range 172.16.1.100 172.16.1.199;     # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; # 设定netmask
default-lease-time ; # 设置默认的IP租用期限
max-lease-time ; # 设置最大的IP租用期限
next-server 172.16.1.201; # 告知客户端TFTP服务器的ip
filename "/pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件

启动DHCP服务

[root@kickstart ~]# systemctl start dhcpd.service
[root@kickstart ~]# systemctl status dhcpd.service
● dhcpd.service - DHCPv4 Server Daemon

检测端口信息

[root@kickstart ~]# netstat -lntup |grep dhcpd
udp 0.0.0.0: 0.0.0.0:* /dhcpd
udp 0.0.0.0: 0.0.0.0:* /dhcpd
udp6 ::: :::* /dhcpd

查看其日志信息: (日志位置为/var/log/messages)

[root@kickstart ~]# tailf /var/log/messages
Nov :: clsn dhcpd: Listening on PF/eth1/:0c::a8::b2/172.16.1.0/
Nov :: clsn dhcpd: Sending on LPF/eth1/:0c::a8::b2/172.16.1.0/
Nov :: clsn dhcpd:
Nov :: clsn dhcpd: No subnet declaration for eth0 (10.0.0.201).
Nov :: clsn dhcpd: ** Ignoring requests on eth0. If this is not what
Nov :: clsn dhcpd: you want, please write a subnet declaration
Nov :: clsn dhcpd: in your dhcpd.conf file for the network segment
Nov :: clsn dhcpd: to which interface eth0 is attached. **

注:配置dhcp的时候是可以配置监听的网卡,指定监听网卡

DHCPDARGS=eth1  # 指定监听网卡

1.3.3 创建一个新的空白虚拟机

说明:Centos7.3之后安装系统至少需要2G内存,低于2G将无法安装

开启虚拟机

日志输出

Nov  :: clsn dhcpd: Sending on   Socket/fallback/fallback-net
Nov :: clsn systemd: Started DHCPv4 Server Daemon.
Nov :: clsn dhcpd: DHCPDISCOVER from :0c:::7b: via eth1
Nov :: clsn dhcpd: DHCPOFFER on 172.16.1.120 to :0c:::7b: via eth1
Nov :: clsn dhcpd: DHCPREQUEST for 172.16.1.120 (172.16.1.201) from :0c:::7b: via eth1
Nov :: clsn dhcpd: DHCPACK on 172.16.1.120 to :0c:::7b: via eth1
Nov :: clsn kernel: perf: interrupt took too long ( > ), lowering kernel.perf_event_max_sample_rate to

1.3.4 安装tftp服务

安装tftp软件

[root@kickstart ~]# yum install tftp-server -y

启动服务

[root@kickstart ~]# systemctl start tftp.socket
[root@kickstart ~]# systemctl status tftp.socket

tftp根目录

[root@kickstart ~]# cd /var/lib/tftpboot/

再次启动虚拟机

启动发现又tftp但是没找到要加载的系统。上面报错是在TFTP服务的根目录找不到启动文件pxelinux.0

1.3.5 获取pxelinux.0系统

通过安装软件获得

[root@kickstart tftpboot]# yum install -y syslinux

复制pxelinux.0文件到tftp根目录

[root@kickstart tftpboot]# cp /usr/share/syslinux/pxelinux.  /var/lib/tftpboot/
[root@kickstart tftpboot]# ls
pxelinux. 

    首先排除最简单故障原因:selinux是否关闭,防火墙是否关闭

    上面的错误是因为pxelinux.0这个小系统的配置文件(default不存在,或者文件名不对

1.3.6 添加pxelinux.0配置文件

1)给虚拟机添加上centos7的镜像,注意实在kickstart服务端添加

2)将镜像挂载上

特别说明:由于这是测试环境可以使用挂载,在生产环境中必须把镜像中的文件复制到硬盘上,光驱速度太慢。

mkdir -p /var/www/html/CentOS7
mount /dev/cdrom /var/www/html/CentOS7

3)将镜像中的相关文件复制到tftp根目录

cp -a /var/www/html/CentOS7/isolinux/* /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

4)修改default配置文件实现通过网络安装操作系统

CentOS7.X 网络安装的关键点,修改default文件

修改完成后,重启pxe客户端,就会有安装界面,与使用光盘安装一致,这里就不是做详细的记录了。注意实现网路安装需要将下一步完成(配置http服务)。

5)CentOS7实现自动化安装的default文件

[root@kickstart ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt label ks
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.1.201/ks_config/CentOS7-ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth1

1.3.7 配置httpd服务

安装apache服务

[root@kickstart tftpboot]# yum install httpd -y

启动apache服务

[root@kickstart tftpboot]# systemctl start httpd.service
[root@kickstart tftpboot]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server

通过浏览器访问,使用curl命令镜像访问。

http://10.0.0.201/CentOS7/
curl http://172.16.1.201/CentOS7/

1.4 ks文件说明

1.4.1 ks文件的作用

   通常,我们在安装操作系统的过程中,需要大量的和服务器交互操作,为了减少这个交互过程,kickstart就诞生了。使用这种kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。

1.4.2 ks文件生成的三种方式

方法1

  每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)  

方法2

  Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。

方法3

  阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。

1.4.3 centos7.4自动应答文件(ks)

# Kickstart Configurator for CentOS  by yao zhang #命令段
install #告知安装程序,这是一次全新安装,而不是升级
url --url="http://172.16.1.201/CentOS7/" #通过http下载安装镜像
text #以文本格式安装
lang en_US.UTF- #设置字符集格式
keyboard us #设置键盘类型
zerombr #清除mbr引导
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" #指定引导记录被写入的位置
network --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.202 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate #配置eth0网卡
network --bootproto=static --device=eth1 --ip=172.16.1.202 --netmask=255.255.255.0 --activate #配置eth1网卡
network --hostname=Cobbler #设置主机名
#network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai 可以使用dhcp方式设置网络
authconfig --enableshadow --passalgo=sha512 #设置密码格式
rootpw --iscrypted $$X20eRtuZhkHznTb4$dK0BJByOSAWSDD8jccLVFz0CscijS9ldMWwpoCw/ZEjYw2BTQYGWlgKsn945fFTjRC658UXjuocwJbAjVI5D6/ #密文密码
clearpart --all --initlabel #清空分区
part /boot --fstype xfs --size #/boot分区
part swap --size #swap分区
part / --fstype xfs --size --grow #/分区
firstboot --disable #负责协助配置redhat一些重要的信息
selinux --disabled #关闭selinux
firewall --disabled #关闭防火墙
logging --level=info #设置日志级别
reboot #安装完成重启 %packages #包组段 @表示包组
@^minimal
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
%end %post #脚本段,可以放脚本或命令
systemctl disable postfix.service #关闭邮件服务开机自启动
%end

1.4.4 PXE配置文件default

由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件。如果客户机的网卡的MAC地址为8F:3H:AA:6B:CC:5D,对应的IP地址为10.0.0.195,那么客户机首先尝试以MAC地址为文件名匹配的配置文件,如果不存在就以IP地址来查找。根据上述环境针对这台主机要查找的以一个配置文件就是 /tftpboot/pxelinux.cfg/01-8F:3H:AA:6B:CC:5D。如果该文件不存在,就会根据IP地址来查找配置文件了,这个算法更复杂些,PXE映像查找会根据IP地址16进制命名的客户机配置文件。例如:10.0.0.195对应的16进制的形式为C0A801C3。(可以通过syslinux软件包提供的gethostip命令将10进制的IP转换为16进制)

如果C0A801C3文件不存在,就尝试查找C0A801C文件,如果C0A801C也不存在,那么就尝试C0A801文件,依次类推,直到查找C文件,如果C也不存在的话,那么最后尝试default文件。

总体来说,pxelinux搜索的文件的顺序是:

/tftpboot/pxelinux.cfg/---aa-bb-cc-dd
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default

1.4.5 上面的事情做完以后就可以批量安装系统了

[root@Cobbler ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G .5G 97G % /
devtmpfs 227M 227M % /dev
tmpfs 237M 237M % /dev/shm
tmpfs 237M 4.6M 232M % /run
tmpfs 237M 237M % /sys/fs/cgroup
/dev/sda1 1014M 135M 880M % /boot
tmpfs 48M 48M % /run/user/ [root@Cobbler ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld() [root@Cobbler ~]# getenforce
Disabled [root@Cobbler ~]# hostname -I
10.0.0.202 172.16.1.202

1.5 常见错误

1.5.1 网卡无法启动解决

解决办法:

将NetworkManager服务停止,再重新启动network服务

[root@CentOS7 ~]# systemctl disable NetworkManager
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service. [root@CentOS7 ~]# systemctl stop NetworkManager

1.5.2 Could not find kernel image

报错原因:selinux没关

1.5.3 查考文档

http://blog.oldboyedu.com/autoinstall-kickstart/

http://www.zyops.com/autoinstall-kickstart

kickstart模式实现批量安装centos7.x系统的更多相关文章

  1. 005-(已测试成功的方案)kickstart模式实现批量安装centos7.x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  2. kickstart 实现批量安装centos7.x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  3. 基于Centos7.2使用Cobbler工具定制化批量安装Centos7.2系统

    1.1    定制Centos_7_x86_64.ks文件内容 # Cobbler for Kickstart Configurator for CentOS 7.2.1511 by Wolf_Dre ...

  4. pxe+kickstart实现无人值守批量安装linux

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

  5. Cobbler全自动批量安装部署Linux系统

    说明: Cobbler服务器系统:CentOS 5.10 64位 IP地址:192.168.21.128 需要安装部署的Linux系统: eth0(第一块网卡,用于外网)IP地址段:192.168.2 ...

  6. win10下安装centos7双系统

    国庆最后一天了,闲来无事装个双系统,用虚拟机的linux总有些不方便. window下安装linux双系统有两中方法: 1.U盘安装 (我采用的方法,后面详述) 2.EasyBCD工具安装 (使用Ea ...

  7. 配置LANMP环境(1)-- 安装虚拟机VMware与安装CentOS7.2系统

    一.安装虚拟机VMware 1.下载VMware傻瓜式安装 2.配置                二.安装CentOS7.2系统 镜像下载链接 1.放入ios镜像文件之后,启动虚拟机,选择7.0+的 ...

  8. 制作linux系统U盘并使用U盘安装CentOS7.6系统

    目录   一.制作linux启动盘     1.1. 准备工作     1.2. 制作linux系统U盘   二.使用U盘安装Centos7.6     2.1. 使用U盘启动     2.2. 更改 ...

  9. Windows安装Centos7双系统后Windows启动项消失

    原文: https://www.cnblogs.com/xinglichao/p/9999049.html https://blog.csdn.net/yingzinanfei/article/det ...

随机推荐

  1. iOS - UIAlertController三种显示提示框代码

    UIAlertView在IOS 8以上版本已经过时了,官方推荐我们使用UIAlertController代替UIAlertView.UIActionSheet 1、UIAlertController显 ...

  2. django通用视图(类方法)

    这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所 ...

  3. Get Started with the Google Fonts API

    Get Started with the Google Fonts API This guide explains how to use the Google Fonts API to add fon ...

  4. word2016怎么让目录索引显示在左边?

    视图里面 勾选导航窗格即可 前提是你分级分好

  5. 关于ie6出现的问题的原因归结

    关于ie6出现的问题主要可以归结为以下几种情况把. 当然还存在各种原因,bug的情况也还有各种各样,我只是小结一下我自己经常遇到,比较有代表性的问题.会持续的更新. 1.浏览器本身存在的缺陷 比如: ...

  6. day_6.9py网络编程

    .路由器:能够链接不同的网络使他们之间能够通信 mac就是手拉手传输数据用的

  7. IDEA中将WEB-INF\lib下的Jar包添加到项目中

    打开Project Structure[可以使用快捷键:Ctrl+Alt+Shift+S]左侧选中Modules,在Dependecies中,点击右侧“+”号,选择JARS or directorie ...

  8. python3.6利用pyinstaller模块打包程序为.exe可执行程序

    步骤: 1.安装pyinstaller模块:(必须在联网情况下进行) 操作原理: python3.6已经自带了pip,所以只需要在cmd中执行 pip install pyinstaller 就可以安 ...

  9. iBatis.Net 配置 SQL语句执行 日志

    <configuration> <configSections> ... <sectionGroup name="iBATIS"> <se ...

  10. [No0000DC]C# FileHelper 本地文件、文件夹操作类封装FileHelper

    using System; using System.Diagnostics; using System.IO; using System.Text; using Shared; namespace ...