使用PXE+DHCP+TFTP+Kickstart+FTP搭建无人值守安装服务器。一般只有频繁安装系统才会搭建无人值守安装服务器。

  虚拟机环境:youxi1,CentOS7系统双网卡,一个网卡桥接模式(182.168.1.6)可以上外网,一个网卡LAN区段(LAN1)模拟内网,作为无人值守安装服务器

        youxi2,CentOS系统,网卡LAN区段(LAN1)模拟内网,作为客户端

        youxi3,新建虚拟机

(1).PXE概述

  PXE严格来说并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 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。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

(2).Kickstart概述

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

(3).TFTP概述

  TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。

  TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

(4).实验拓扑图和运行原理

  PXE + KickStart大概运行原理:1、DHCP 服务器用来给客户机分配IP; 2、TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件; 3、FTP 服务器用来存放系统安装文件; 4、KickStart所生成的ks.cfg配置文件;5、带有一个 PXE 支持网卡的将安装的主机。

  注意:实验是将3台服务器合并成1台服务器进行实验。

(5).实验

  在开始之前请将防火墙和SELinux关闭。

1)搭建ftp服务

  服务器端youxi1安装vsftpd服务,并开机自启

[root@youxi1 ~]# yum -y install vsftpd
[root@youxi1 ~]# systemctl start vsftpd
[root@youxi1 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

  客户端youxi2(由于没有网络所以使用本地yum源)安装lftp,配置本地yum源详见:配置本地yum源。另外为了提高安装效率,将原有的所有yum源迁移到备份目录

[root@youxi2 ~]# mkdir -p /backup/yum.repo
[root@youxi2 ~]# mv /etc/yum.repos.d/*.repo /backup/yum.repo
[root@youxi2 ~]# vim /etc/yum.repos.d/CentOS7.repo
[CentOS7]  //yum的ID,本地唯一,用于区分不同yum源
name=CentOS-server  //描述信息
baseurl=file:///mnt  //前面的file://是协议,后面的/mnt是光盘挂载点
enabled=1  //1启用yum源,0禁用yum源
gpgcheck=0 //1使用公钥验证rpm包的正确性,0不验证
[root@youxi2 ~]# yum clean all  //清空yum缓存
[root@youxi2 ~]# yum makecache  //重新读取yum源
[root@youxi2 ~]# yum -y install lftp

  把服务器端的系统光盘挂在到/var/ftp/pub/目录下

[root@youxi1 ~]# mount /dev/sr0 /var/ftp/pub/  //光盘挂载到ftp匿名用户访问的主目录
mount: /dev/sr0 写保护,将以只读方式挂载

2)搭建tftp服务

  在服务器端youxi1上安装tftp,修改配置文件,并开机自启

[root@youxi1 ~]# yum -y install tftp tftp-server xinetd
[root@youxi1 ~]# vim /etc/xinetd.d/tftp  //tftp默认是关闭的
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot  //设置tftp的主目录,可以改可以不改,但要将PXE启动所需的相关文件放到这里指定的位置
disable = no  //yes表示关闭,no表示打开
per_source = 11
cps = 100 2
flags = IPv4
}
[root@youxi1 ~]# systemctl start xinetd
[root@youxi1 ~]# systemctl enable xinetd
[root@youxi1 ~]# netstat -antup | grep 69  //检测tftp是否启动
udp 0 0 0.0.0.0:69 0.0.0.0:* 9768/xinetd

  在客户端youxi2上安装tftp客户端

[root@youxi2 ~]# yum -y install tftp

3)准备PXE启动相关文件

  在服务器端youxi1上准备PXE启动相关文件

[root@youxi1 ~]# yum -y install system-config-kickstart syslinux
[root@youxi1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  //系统引导文件
[root@youxi1 ~]# cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/  //内核文件
[root@youxi1 ~]# cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/  //内核初始化镜像文件
[root@youxi1 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@youxi1 ~]# cp /var/ftp/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default  //引导菜单
[root@youxi1 ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default

4)搭建DHCP服务

详见:CentOS7搭建DHCP服务器

  服务器端youxi1添加新网卡,修改网卡配置文件,并启动网卡

[root@youxi1 ~]# cd /etc/sysconfig/network-scripts/
[root@youxi1 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@youxi1 network-scripts]# vim ifcfg-ens38
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
IPADDR="192.168.2.6"
NETMASK="255.255.255.0"
#GATEWAY="192.168.2.1"
#DNS1="192.168.2.1"
NAME="ens38"
DEVICE="ens38"
ONBOOT="yes"
[root@youxi1 network-scripts]# ifup ens38

  注意:将GATEWAY(网关)和DNS1删除是为了让ens33网卡能够正常访问外网,ens38只可以用来访问同一网段的IP。

  服务器端youxi1安装dhcp服务,修改配置文件,并开机自启

[root@youxi1 ~]# yum -y install dhcp
[root@youxi1 ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {  //IP网段和掩码
  range 192.168.2.100 192.168.2.254;  //dhcp取值范围
  option domain-name-servers 192.168.2.1;  //指定默认DNS地址
  option domain-name "localdhcp.cn";  //指定默认域名
  option routers 192.168.2.1;  //指定默认网关
  option broadcast-address 192.168.2.255;  //指定广播地址
  default-lease-time 600;  //最小租约时间
  max-lease-time 7200;  //最大租约时间
  next-server 192.168.2.6;  //TFTP服务器地址
  filename "pxelinux.0";  //指定引导文件位置,这里是TFTP根目录下的pxelinux.0
}
[root@youxi1 ~]# systemctl start dhcpd
[root@youxi1 ~]# systemctl enable dhcpd

5)测试各个服务是否能正常运行

  在客户端youxi2上首先验证dhcp服务是否正常工作

[root@youxi2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="yes"
NAME="ens33"
UUID="2c20e953-4536-49e1-8fe4-2c9079ea30ad"
DEVICE="ens33"
ONBOOT="yes"
[root@youxi2 ~]# systemctl restart network
[root@youxi2 ~]# ip a sh dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f2:7e:52 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.100/24 brd 192.168.2.255 scope global dynamic ens33
valid_lft 539sec preferred_lft 539sec
inet6 fe80::20c:29ff:fef2:7e52/64 scope link
valid_lft forever preferred_lft forever

  在客户端youxi2上测试ftp服务是否正常工作

[root@youxi2 ~]# lftp 192.168.2.6
lftp 192.168.2.6:~> ls
drwxrwxr-x 8 0 0 2048 Nov 25 23:53 pub
lftp 192.168.2.6:/> exit

  在客户端youxi2上测试tftp是否正常工作

[root@youxi2 ~]# tftp 192.168.2.6
tftp> get vmlinuz
tftp> quit
[root@youxi2 ~]# ll vmlinuz
-rw-r--r-- 1 root root 6639904 5月 25 18:12 vmlinuz

6)修改引导菜单文件

  在服务器端youxi1上修改tftp主目录下的引导菜单文件

[root@youxi1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
//修改引导菜单文件的第一行,default后面的值必须与下方label标签名中的一个相同,这里选择直接安装CentOS7的标签名linux
default linux
timeout 600 label linux
menu label ^Install CentOS 7
kernel vmlinuz
//指定通过网络启动系统时,通过ftp访问kickstart文件
append initrd=initrd.img inst.repo=ftp://192.168.2.6/pub inst.ks=ftp://192.168.2.6/ks.cfg

  注意:此处的ks.cfg文件尚未创建(kickstart文件)

  扩展:安装程序指向kickstart文件常见格式

    ks=ftp://server/dir/file,如ks=ftp://192.168.2.6/ks.cfg,对应FTP

    ks=http://server/dir/file,如ks=http://192.168.2.6/ks.cfg,对应HTTP

    ks=nfs:server:/dir/file,如ks=nfs:192.168.2.6:/var/ftp/pub/ks.cfg,对应NFS

7)生成kickstart文件,可以在任何安装图形界面的

  首先服务器端youxi1安装一下gdm插件(图形界面)

[root@youxi1 ~]# yum -y install gdm

  接着将服务器端youxi1的yum源进行修改,只保留本地yum源

[root@youxi1 ~]# mkdir -p /backup/yum.repo
[root@youxi1 ~]# mv /etc/yum.repos.d/*.repo /backup/yum.repo/
[root@youxi1 ~]# vim /etc/fstab
/dev/sr0 /var/ftp/pub iso9660 defaults 0 0 //添加
[root@youxi1 ~]# mount -a
mount: /dev/sr0 is write-protected, mounting read-only
[root@youxi1 ~]# vim /etc/yum.repos.d/development.repo
[development]  //必须是development,否则kickstart读取不到
name=local-CentOS7
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
[root@youxi1 ~]# yum clean all
[root@youxi1 ~]# yum makecache

  使用Xshell(或Xstart)执行命令system-config-kickstart打开图形操作界面。

  注意:echo $LANG输出的是zh_CN.UTF-8,请将LANG改为en_US.UTF-8(LANG=en_US.UTF-8),否则会出现乱码。

  之后就会出现如下图所示的配置界面

  基础配置(Basic Configuration):

  安装方案(Installation Method):全新安装(Perform new installation)

  引导装载程序选项(Boot Loader Options):如果grub需要加密可以选择使用GRUB密码(Use GRUB passwd)

  分区信息(Partition Information):

  网络配置(Network Configuration):

  验证(Authentication):默认即可

  防火墙(Firewall Configuration):可以全部关闭,也可以关闭SELinux而开启firewall。如果开启了firewall可以根据需求勾选服务端口。

  显示设置(Display Configuration):想安装图形界面的就打勾,不想安装的就去掉

  软件包选择(Package Selection):根据需求勾选更多,Compatibility Libraries针对以前版本的CentOS构建应用程序的兼容库。

  预安装脚本(Pre-Installation Script)和安装后脚本(Post-Installation Script):根据需求运行一个脚本,可有可无。

  配置完后,选择左上角的File-->Save进行保存:

  选择保存到上面设置的tftp主目录下的引导菜单文件中设置的kickstart文件位置,并且保证文件名要相同。

  最后再查看下服务器端youxi1的SELinux和防火墙状态,确保关闭,并重启下dhcpd、network、vsftp。

8)新建一台虚拟机youxi3

  网卡选择LAN1网段,确保能够获取DHCP分配的IP地址。并且光盘里没有镜像。内存给个2G,我给1G的适合会报错,报错信息如下,内存扩大到2G就没问题。

  开启虚拟机,新建的虚拟机直接开机就好,等待运行完成。如果原本有系统需要将网络引导排在启动项的第一位,安装完成后,将硬盘引导移到第一位,否则会不停的重新安装系统。

搭建无人值守安装服务器(CentOS)的更多相关文章

  1. 其他综合-Cobbler无人值守安装系统 CentOS 7

    Cobbler 无人值守安装系统 CentOS 7 1.实验描述 1.1 概述 作为运维,在公司经常遇到一些机械性重复工作要做,例如:为新机器装系统,一台两台机器装系统,可以用光盘.U盘等介质安装,1 ...

  2. 其他综合-Kickstart无人值守安装系统CentOS 7

    Kickstart无人值守安装系统CentOS 7 1.概述 1.1 关于PXE Preboot Execution Environment 翻译过来就是预启动执行环境:简称 PXE :传统安装操作系 ...

  3. 搭建阿里云服务器(centos,jdk和Tomcat版本)

    1.购买服务器(登录阿里云,购买服务器,并进入控制台,查看自己的服务器实例 2.域名注册(这步可以省略,直接IP地址访问,因为域名需要备案),购买域名的需要进行解析以及绑定自己的服务器 3.可以准备一 ...

  4. PXE实现无人值守批量安装服务器

    今天我们使用PXE+Kickstart+TFTP+DHCP+FTP实现无人值守安装服务器. 一.无人值守所需服务介绍: 1)PXE PXE,远程引导技术 功能:使计算机通过网络启动 硬件要求:客户端的 ...

  5. linux下制作软件包安装服务器

    linux下的软件包在有网络的情况下比较好安装,在ubuntu下,更新sourcelist,然后使用apt-get就可以很方便的安装包,在centos下面,更新yum列表,然后使用yum也可以进行方便 ...

  6. centos 7.3 服务器环境搭建——MySQL 安装和配置

    centos 7.3 服务器环境搭建——MySQL 安装和配置服务器信息如下:服务器:阿里云系统 centos 7.3 (阿里云该版本最新系统)mysql版本:5.7.18 (当前时间最新版本)连接服 ...

  7. [转]CentOS 6.4下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.6下PXE+Kickstart无人值守安装操作系统

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

随机推荐

  1. k2系列-服务器管理篇

    k2服务器即K2 WORKSPACE管理介绍: k2 管理平台统一管理基于K2开发的所有流程的跟踪调试以及基本配置信息. 具体完成的操作有以下几个部分: 1 配置K2环境相关属性.包括全局变量等 2 ...

  2. U盘装manjaro 18报Python error in job “initcpio”

    更新: 还是不行,大家再找别的方法. 以下内容仅做参考,意义不大. U盘安装 用rufus做U盘,写入选DD模式,比ISO模式可靠点. 错误解决 报错信息: Error installing Manj ...

  3. 数据库连接池,DBUtil的模板,dbcp,c3p0

    数据库连接池,DBUtil的模板,Druid使用(重点) 一.DBUtil模板 public class DBUtilTest { public static Connection connectio ...

  4. Fillder的前后端的应用

    测试需求:有一个功能,允许用钻石兑换金币,假设1钻石=1金币,前端控制一次至少兑换10个,最多100个,后台不做验证. 测试方案:输入10,也就是告诉前端我要兑换10个金币,等前端验证通过之后,截取要 ...

  5. Unknown initial character set index '255' received from server. Initial client character 解决方法

    Unknown initial character set index '255' received from server. Initial client character set can be ...

  6. 部署WCF Lib到IIS

    打开VS2013,新建项目,选择WCF|WCF服务库,取名WCFWithIIS 2. 我们用演示一个计算加法的服务.简单起见,直接在IService接口中添加加法接口 3. 实现这个加法 4. 生成项 ...

  7. 0005SpringBoot中用Junit测试实体类中绑定yml中的值

    1.编写SpringBoot的引导类 package springboot_test.springboot_test; import org.springframework.boot.SpringAp ...

  8. Spring-使用注解开发

    8.使用注解开发 在Spring4之后,要使用注解开发,必须要保证AOP包已经导入了 使用注解需要导入context约束,增加注解的支持! <?xml version="1.0&quo ...

  9. vue3.0脚手架 创建项目

    1.下载node最新稳定版本,并且安装 2.安装好之后,在cmd或者terminal下, 使用npm -v 查看当前npm版本,验证是否安装成功 3.安装成功后,运行 npm i -g @vue/cl ...

  10. WCF错误处理

    介绍 WCF(Windows Communication Foundation) -异常处理:一般Exception的处理,FaultException和FaultException<T> ...