GVKun编程网logo

PXE+Kickstart 实现无人值守批量安装 Linux(linux无人值守安装系统)

4

在本文中,我们将带你了解PXE+Kickstart实现无人值守批量安装Linux在这篇文章中,我们将为您详细介绍PXE+Kickstart实现无人值守批量安装Linux的方方面面,并解答linux无人

在本文中,我们将带你了解PXE+Kickstart 实现无人值守批量安装 Linux在这篇文章中,我们将为您详细介绍PXE+Kickstart 实现无人值守批量安装 Linux的方方面面,并解答linux无人值守安装系统常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI、CentOS kickstart lvm、centos6.4 下 PXE+kickstart 网络安装操作系统、centos6.5 pxe kickstart 批量部署

本文目录一览:

PXE+Kickstart 实现无人值守批量安装 Linux(linux无人值守安装系统)

PXE+Kickstart 实现无人值守批量安装 Linux(linux无人值守安装系统)

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

 

一、简介

1.1 什么是 PXE

PXE (Pre-boot Execution Environment,预启动执行环境) 是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配 IP 地址,再用 TFTP(trivial file transfer protocol)或 MTFTP (multicast trivial file transfer protocol) 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,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 方式之一进行安装;

详细工作流程,请参考下面这幅图:

yuanli

1.2 什么是 Kickstart

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

PXE+Kickstart 无人值守安装操作系统完整过程如下:

kickstart

二、系统环境

实验环境:VMware Workstation 10

系统平台:CentOS release 6.4 (最小化安装)

网络模式:NAT 模式(共享主机的 IP 地址)

DHCP / TFTP IP:192.168.111.130

HTTP / FTP / NFS IP:192.168.111.130

防火墙已关闭 /iptables: Firewall is not running.

SELINUX=disabled

三、准备工作

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

# yum groupinstall "X Window System"

# yum groupinstall Desktop

# reboot

四、配置 HTTP 安装方式

系统的安装方式可以选择 HTTP、FTP、 NFS,我们这里介绍 HTTP 方式的安装,其他两种方式的安装,大家可以自行百度。

4.1 安装并配置 HTTP

# yum install httpd –y

# rpm -qa|grep httpd 

2

开启服务并设置开机启动

# /etc/init.d/httpd start

# chkconfig --level 35 httpd on

4.2 加载 ISO 镜像

在虚拟机中设置加载 ISO 镜像。

18

将 iso 文件挂载至 /mnt/cdrom.

3

4.3 复制光盘全部内容至 http 的根目录 /var/www/html/ 下

# cp -r /mnt/cdrom/ /var/www/html/

HTTP 部分设置完毕。

五、配置 TFTP

5.1 安装 tftp-server

# yum install tftp-server –y

5.2 启用 tftp 服务

# 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 
}
复制代码

将 disable 设置为 no

5.3 启动 tftp 服务

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

# /etc/init.d/xinetd restart

4

设置开机启动 xinetd

# 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文件  

七、配置 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 ServerIP地址;  
subnet 192.168.111.0 netmask 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

5

八、生成 ks.cfg 文件

8.1 安装 Kickstart

# yum install system-config-kickstart

8.2 在桌面环境下配置 Kickstart

启动 X Windows 环境

# startx

配置 Kickstart

# system-config-kickstart

A. 设置语言,键盘,时区,Root 密码,安装完毕后重启等。

6

B. 设置安装方式,这篇文章介绍的是 HTTP 方式的安装,故选择 HTTP

C. 安装 MBR

8

D. 设置分区

9

E. 分区总览

10

F. 配置网络

11

G. 认证配置

12

H. SELinux 和防火墙配置

13

I. 图形环境配置

14

J. 软件包安装选择

15

K. 预览

16

L. 生成 ks.cfg 文件,保存在 /var/www/html/ 文件夹下

17

我们可以打开 /var/www/html/ks.cfg 文件进行查看并做修改。

复制代码
platform=x86, AMD64, or Intel EM64T  #version=DEVEL  # Firewall configuration  firewall --disabled  # Install OS instead of upgrade  install  # Use network installation  url --url=http://192.168.111.130/cdrom/   #这个选项告诉安装程序:到服务器192.168.111.130 的HTTP根目录下的cdrom 文件夹下寻找安装介质 # Root password  rootpw --iscrypted $1$vsvtP./e$6PVMNfJd.shq2LgFJjYfA1  # System authorization information  auth  --useshadow  --enablemd5  # Use graphical install  graphical  firstboot --disable  # System keyboard  keyboard us  # System language  lang en_US  # SELinux configuration  selinux --disabled  # Installation logging level  logging --level=info  # Reboot after installation  reboot  # System timezone  timezone  --isUtc Asia/Shanghai  # Network information  network  --bootproto=dhcp --device=eth0 --onboot=on  # System bootloader configuration  key --skip  bootloader --append="rhgb quiet" --location=mbr --driveorder=sda  # Clear the Master Boot Record  zerombr  # Partition clearing information  clearpart --all --initlabel  # Disk partitioning information  part / --fstype="ext4" --size=8192  part swap --fstype="swap" --size=1024  part /home --fstype="ext4" --size=2048  %packages  @base  %end
复制代码

说明:key --skip 如果是红帽系统,此选项可以跳过输入序列号过程;如果是 CentOS 系列,则可以不保留此项内容;

reboot 此选项必须存在,也必须文中设定位置,不然 kickstart 显示一条消息,并等待用户按任意键后才重新引导;

clearpart --all --initlabel 此条命令必须添加,不然系统会让用户手动选择是否清除所有数据,这就需要人为干预了,从而导致自动化过程失败;

九、测试安装

自动化安装系统配置完毕,下面启动一台新的机器进行测试,网络连接模式选择 NAT 模式。

19

新建虚拟机,选择自定义(高级)

20

选择 “稍后安装操作系统”

21

选择客户机操作系统类型

22

命名虚拟机

23

设置此虚拟机的内存

24

设置网络类型

25

选择 I/O 控制器类型

26

选择磁盘类型

27

选择磁盘

28

指定磁盘大小,ks.cfg 文件中,我们定义了 / 大小为 8GB,swap 分区为 1GB,/home 分区为 2GB,所以这里的磁盘大小至少要为 12GB。

而且,一定要勾选上 “立即分配所有磁盘空间”,不然在后来安装的时候将提示没有磁盘空间。

29

指定磁盘文件

30

虚拟机总览

31

正在创建磁盘,过程会很慢,虚拟机需要产生一个 20GB 的文件。

32

启动虚拟机,选择从网卡启动,DHCP 服务器正在给客户机分配 IP 地址。

35

开始下载 vmlinuz 和 initrd.img

33

安装过程...

34

安装过程...

36

安装过程...

37

安装完毕,重启后,显示登录界面

38

登录系统查看,磁盘分区和我们在 ks.cfg 文件中设定的一样。

39

PXE+Kickstart 无人值守安装操作系统环境搭建完毕。

 

参考资料

  • 抚琴煮酒:http://yuhongchun.blog.51cto.com/1604432/1100567

CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI

CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI

前言

一般情况下,新服务器上架。都需要系统管理员手工安装系统,配置 IP 地址,然后远程登陆服务器进行软件安装、配置之类的管理。这种方式,在服务器数量还不多的情况下,是正常的。试想,如果一次上架上百台服务器,再依次安装操作系统,将是一种灾难。很难在规定的时间内将服务器顺利上架并配置完毕。

这就需要在大型机房中,以 DHCP+DNS 模式管理服务器 IP 地址和主机名。服务器上架前,以其 MAC 地址为依据,在 DHCP 中配置主机保留并分配主机名。DHCP 结合 TFTP 提供的 PXE 服务,提供 PXE 引导 Linux 内核和启动镜像,通过自动应答文件来实现操作系统的自动安装和配置。就 Linux 来说,安装后启动 saltstack 客户端 salt-minion 服务即可实现新服务器的自动受控。其余的安装服务便可以通过 saltstack 来完成。自始至终,将不用通过 ssh 形式登陆新服务器,且可以实现软件包的自动化安装和配置管理。

理论描述

自动启动安装过程

服务器从第一次加电到连接到 salt-master 主机,受其集中管理,将经过以下一系列过程:

  1. 系统管理员在 DHCP 服务器中将其 MAC 地址绑定到特定 IP 地址和主机名,并指定 PXE 启动文件。
  2. 服务器加电启动,通过 PXE 获取 IP 地址并加载 PXEClient,以 TFTP 的形式获取 Linux 内核和初始化启动映像。
  3. 服务器加载自动应答脚本,通过网络获取软件包,来自动安装 Linux 系统。安装并开机启动 salt-minion 服务。
  4. 服务器安装完成并重新启动后,自动获取 IP 地址,连接 salt-master 请求受控。
  5. salt-master 控制新服务器后,以管理员配置模板自动安装软件包配置服务,管理新主机。

以上过程我们需要架设的服务有 DNS、DHCP、TFTP、HTTP/FTP 服务。其中,DHCP 和 DNS 提供地址和主机名分配,TFTP 提供 PXE 启动映像,HTTP/FTP 作为 Linux 软件仓库提供安装过程中需要的软件包。

DHCP Option 60

  DHCP Option 60 Vendor class identifier 为厂商类标识符。这个选项作用于客户端可选地识别客户端厂商类型和配置。这个信息是 N 个 8 位编码,由 DHCP 服务端解析。厂商可能会为客户端选择定义特殊的厂商类标识符信息,以便表达特殊的配置或者其他关于客户端的信息。比如:这个标识符可能编码了客户端的硬件配置。客户端发送过来的服务器不能解析的类规范信息必须被忽略(尽管可能会有报告)。服务器响应厂商规范信息到客户端应该仅仅通过 Option 43 来完成。

此信息需要在 DHCP 服务器上定义,DHCP 服务器通过其判断客户端是不是 PXEClient。并通过其 Arch 代码来判断其平台,以此为依据提供不同的 PXE 引导程序给客户端。

PXE 和 gPXE

  PXE:

    (preboot execute environment,预启动执行环境) 是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS 把 PXEClient 调入内存中执行,然后由 PXEClient 向 DHCP 服务器请求分配 IP 地址,再用 TFTP 或 MTFTP 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

  gPXE:

    是一个开源的网络启动器。它提供了一个直接的 PXE 替代方案,并且提供 DNS、HTTP、iSCSI 等多种额外功能。另外,由于 gPXE 存在商业收购风险。其开发者又启动了一个名为 iPXE 的开源项目。作为 gPXE 的一个分支。iPXE 支持 HTTP、ISCSI、FCoE、Wi-Fi、InfiniBand 等多种启动方式。且支持通过脚本来控制启动过程。

BIOS 和 UEFI

  BIOS:

    (Basic Input/Output System 的缩写、中文:基本输入输出系统),在 IBM PC 兼容机上,是一种业界标准的固件接口。BIOS 这个字眼是在 1975 第一次由 CP/M 操作系统中出现。BIOS 是个人电脑启动时加载的第一个软件。

BIOS 用于计算机开机时执行系统各部分的的自检,并启动引导程序或装载在内存的操作系统。此外,BIOS 还向操作系统提供一些系统参数。系统硬件的变化是由 BIOS 隐藏,程序使用 BIOS 服务而不是直接访问硬件。现代操作系统会忽略 BIOS 提供的抽象层并直接访问硬件组件。

  

  UEFI:

    全称 “统一的可扩展固件接口”(Unified Extensible Firmware Interface),是一种详细描述类型接口的标准。这种接口用于操作系统自动从预启动操作环境,加载到一种操作系统上。

可扩展固件接口(Extensible Firmware Interface,EFI)是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看作是有近 20 多年历史的 BIOS 的继任者。

另外,由于 UEFI 不支持 32 位,所以 UEFI 部分只讨论 x64 平台。由于没有实验环境,不支持安腾架构。

 

安装所需全部服务

yum install tftp tftp-server dhcp xinetd syslinux

 

dhcpd 配置文件

 

option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option client-system-arch code 93 = unsigned integer 16;

allow booting;
allow bootp;

default-lease-time 6000;
max-lease-time 72000;

subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.50 10.1.1.70;
  option routers 10.1.1.11;
  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    next-server 10.1.1.11;
    if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      filename "BOOTX64.efi";
    } else {
     filename "pxelinux.0";
    }
  }
}

 

tftp 配置文件

  sed -i ''/disable/s/yes/no/'' /etc/xinetd.d/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 }

 

 

在 tftpboot 中创建需要的目录

  • mkdir /var/lib/tftpboot/pxelinux.cfg/  
    • BIOS 引导所使用的 default  菜单文件目录
    •  1 UI pxelinux.cfg/vesamenu.c32
       2 prompt 1
       3 timeout 60
       4 
       5 display pxelinux.cfg/boot.msg
       6 menu background pxelinux.cfg/splash.jpg
       7 menu title Welcome to PXE+kickstart auto install systems
       8 menu color border 0 #ffffffff #00000000
       9 menu color sel 7 #ffffffff #ff000000
      10 menu color title 0 #ffffffff #00000000
      11 menu color tabmsg 0 #ffffffff #00000000
      12 menu color unsel 0 #ffffffff #00000000
      13 menu color hotsel 0 #ff000000 #ffffffff
      14 menu color hotkey 7 #ffffffff #ff000000
      15 menu color scrollbar 0 #ffffffff #00000000
      16 
      17 
      18 label linux
      19   menu label ^Install CentOS7.4 Minimal
      20   menu default
      21   kernel cores/CentOS/7.4/vmlinuz
      22   append initrd=cores/CentOS/7.4/initrd.img ip=dhcp inst.repo=ftp://10.1.1.11/CentOS/7.4 inst.ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min.cfg
      23 
      24 label linux
      25   menu label ^Install CentOS6.9 Minimal
      26   kernel cores/CentOS/6.9/vmlinuz
      27   append initrd=CentOS6/initrd.img ip=dhcp repo=ftp://10.1.1.11/CentOS/6.9 ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min.cfg
      28 
      29 label linux
      30   menu label ^Install Windows10
      31   kernel memdisk raw iso
      32   append initrd=ftp://10.1.1.11/Windows/10/W10X32_CN_PE.iso
      33 
      34 label local
      35   menu label Boot from ^local drive
      36   localboot 0xffff
      default 内容
  • mkdir -p /var/lib/tftpboot/cores/{CentOS,Ubuntu,Windows}
    • 各的系统的内核文件目录
    • cd /var/lib/tftpboot/cores/
    • mkdir CentOS/{6.9,7.4}
    • mkdir Ubuntu/{16,17}
    • mkdir Windows/{7,10}

 

这里只例举无人职守 CentOS 7 Minimaul

挂载镜像文件

mount /dev/cdrom /mnt

复制内核文件

cp -rf /mnt/isolinux/{initrd.img,vmlinuz}  /var/lib/tftpboot/cores/CentOS/7.4

 

BIOS

复制需要的文件到 /var/lib/tftpboot/ 目录下

cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32,memdisk,gpxelinux.0} /var/lib/tftpboot/

  • pxelinux.0  即为 PXE 启动引导程序,
  • gpxelinux  为 gPXE 引导程序
    • 通过它可以使用快速的 HTTP 协议,而非较慢的 TFTP 协议来下载 Linux 镜像,以加速安装。不过有些硬件对 gPXE 支持不好。例如,IBM X3650 M4。
  • memdisk  用来引导 ISO 文件
  • vasamenu.c32  用来在绘制 PXE 菜单

 

UEFI

复制 Centos6 中的 BOOTX64.efi 、BOOTX64.conf 、splash.xpm.gz , conf 文件改名为 efidefault 也就是 UEFI 的引导菜单

(Centos7 中用是 grub2 的方式)

  • BOOTX64.efi
  • efidefault
    • default=0
      splashimage=(nd)/splash.xpm.gz
      timeout 10
      hiddenmenu
      
      title CentOS 7.4 UEFI 
              root (nd)
              kernel /cores/CentOS/7.4/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-7.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/7.4
              initrd /cores/CentOS/7.4/initrd.img
      
      title CentOS 6.9 UEFI
              root (nd)
              kernel /cores/CentOS/6.9/vmlinuz ip=dhcp ks=ftp://10.1.1.11/kickstart.cfgs/CentOS-6.x-min_UEFI.cfg repo=ftp://10.1.1.11/CentOS/6.9
              initrd /cores/CentOS/6.9/initrd.img
      
      title Install system with basic video driver
              kernel /images/pxeboot/vmlinuz nomodeset askmethod
              initrd /images/pxeboot/initrd.img
      
      title rescue
              kernel /images/pxeboot/vmlinuz rescue askmethod
              initrd /images/pxeboot/initrd.img
      efidefault 内容
  • splash.xpm.gz

 

 

 

vsftp

创建需要的系统目录

  • mkdir -p /var/ftp/{CentOS,Ubuntu,Windows,cfgs}
  • cd /var/ftp
  • mkdir CentOS/{6.9,7.4}
  • mkdir Ubuntu/{16,17}
  • mkdir Windows/{7,10}

复制完整的镜像文件

cp -rf /mnt/* /var/tfp/CentOS/7.4

二级目录结构

tree /var/ftp
.
├── CentOS
   ├── 6.9
   └── 7.4
├── kickstart.cfgs
├── Ubuntu
   ├── 16
   └── 17
└── Windows
    ├── 10
    └── 7

 

 

Kickstart

 1 install
 2 url --url=ftp://10.1.1.104/CentOS/7.4
 3 text
 4 lang en_US.UTF-8
 5 keyboard us
 6 zerombr
 7 bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder=sda
 8 network  --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7
 9 timezone --utc Asia/Shanghai
10 authconfig --enableshadow --passalgo=sha512
11 rootpw  --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ0
12 clearpart --all --initlabel
13 part /boot --fstype xfs --size 1024 
14 part swap --size 1024    
15 part / --fstype xfs --size 8192
16 part /home --fstype xfs --size 1 --grow
17 services --enabled="chronyd"
18 firstboot --disable
19 selinux --disabled
20 firewall --disabled
21 logging --level=info
22 reboot
23 
24 %packages            
25 @^minimal
26 @core
27 chrony
28 kexec-tools
29 
30 %end
BIOS MBR 分区 ks 文件
 1 install
 2 url --url=ftp://10.1.1.11/CentOS/7.4
 3 text
 4 keyboard us
 5 lang en_US.UTF-8
 6 bootloader --location=mbr            
 7 zerombr
 8 clearpart --all --initlabel
 9 part /boot/efi --fstype efi --size 200 --asprimary --ondisk sda
10 part /boot --fstype xfs --size 500 --ondisk sda
11 part swap --size 1024 --ondisk sda
12 part / --fstype xfs --size 8192 --ondisk sda
13 part /home --fstype xfs --size 1 --grow --ondisk sda
14 network  --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7
15 timezone --utc Asia/Shanghai
16 authconfig --enableshadow --passalgo=sha512
17 rootpw  --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ0
18 logging --level=info
19 
20 %pre
21 parted -s /dev/sda mklabel gpt
22 %end
23 
24 %packages            
25 @^minimal
26 @core
27 chrony
28 kexec-tools
29 %end
30 
31 reboot
UEFI GTP 分区 ks 文件

因详细的 kickstart 配置文件参数过多,这里不一一表明。

 

 

tftp 结构目录

tree /var/lib/tftpboot

.
├── BOOTX64.efi
├── cores
│   ├── CentOS
│   │   ├── 6.9
│   │   │   ├── initrd.img
│   │   │   └── vmlinuz
│   │   └── 7.4
│   │   ├── initrd.img
│   │   └── vmlinuz
│   ├── Ubuntu
│   │   ├── 16
│   │   └── 17
│   └── Windows
│   ├── 10
│   └── 7
├── efidefault
├── gpxelinux.0
├── memdisk
├── pxelinux.0
├── pxelinux.cfg
│   ├── boot.msg
│   ├── default
│   ├── splash.jpg
│   └── vesamenu.c32
└── splash.xpm.gz

 

 

 

启动服务

  • systemctl start dhcpd
  • systemctl start tftp
  • systemctl start xinetd
  • systemctl start vsftpd

 加入开机自启动

  • systemctl enable dhcpd
  • systemctl enable tftp
  • systemctl enable xinetd
  • systemctl enable vsftpd

 

经过测试 CentOS7 PXE 无人职守安装并无问题,BIOS 和 UEFI 均可。

 

CentOS kickstart lvm

CentOS kickstart lvm

install
url --url=$tree
text
lang en_US.UTF-8
keyboard us
timezone --utc Asia/Shanghai
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network  --hostname=Cobbler-client.localdomain
authconfig --enableshadow --passalgo=sha512
rootpw  123456
clearpart --all --initlabel
part /boot --fstype="xfs" --size=200
part swap --fstype=swap --size=2000
part pv.01 --size=10000 --grow --ondisk=sda
volgroup vg00 pv.01
logvol  /  --vgname=vg00  --fstype="xfs" --size=1 --grow  --name=lv_root
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot

%packages
@^minimal
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
net-tools
wget
vim
bash-completion
%end

%post
systemctl disable postfix.service
%end

 http://landoflinux.com/linux_kickstart_partition.html

centos6.4 下 PXE+kickstart 网络安装操作系统

centos6.4 下 PXE+kickstart 网络安装操作系统

20150610 

centos6.4 下 PXE+kickstart 网络安装操作系统

参考 http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html

基本全部是参照该博客来的

我的基础环境服务器是 centos7 客户端是一台联想一体机,支持 NetWork PXE 启动(试了公司其他 2 种型号电脑都不可以)

主要遇到问题:

1、基本问题:ip 设置问题;centos7 路由重启失效,已通过 baidu 解决 ;

时区设置  cp /usr/share/zoneinfo/Asia/Shanghai/etc/localtime ;

查看时区:timedatectl 时区正确,不同步, 无奈  ntpdate ntp.api.bz

centos7 上面的防火墙重启无效,而且服务模式不一样(待确定)

2、安装 nginx 用 rpm 已经装好的 pcre(重写模块),提示 openssl not used,在编译需要时指定

sed -i ''/CFLAGS="$CFLAGS -g"/s/^/#/'' auto/cc/gcc

关闭 selinux   echo "/usr/sbin/setenforce 0" >>/etc/rc.local 

安装完成无法访问 80,iptabls 关不掉,之后在 iptables 规则中开放 80 端口,重启 iptables

3、网站找 centos6.4 镜像文件并下载(一上午到 1 点多),centos 下挂载 iso 文件 ,并拷贝到 nginx 目录下面

mount -o loop -t iso9660 /usr/local/src/CentOS-6.4-x86_64-bin-DVD1.iso /mnt/

4、有些系统没有 /usr/shar/syslinux/pxelinux.0  文件 (暂时不清楚为啥),还有镜像里面没有支持 PXE 的启动文件(估计是包不全), 比如我自己笔记本还有公司内外服务器;把之前装的 centos7 用来做服务端

5、配了 dhcp,子网分配没用上,因为局域网内有台路由器,客户端从那里获取了,dhcp 还是要的

6、就是配置 centos xbrows 图形界面了,

vim /etc/gdm/custom.conf  添加如下内容

[security]

AllowRemoteRoot=true

[xdmcp]

Port=177

Enable=1

查看 177

 netstat -an|grep 177

在 xshell 终端下执行 system-config-kickstart,调出图像界面

7、用 kickstart 生成 ks.cfg 文件时,倒数第 3 部,选择安装包时,没包可用,折腾哇,网上说要配置本地源,/data/www 下面是挂载 cp 的镜像文件,server 是包目录

[ base ]
name=base
baseurl=file:///data/www/Server
enabled=1
gpgcheck=0

,重复并重启还是不行,网友说是包这块建议手动填写,网上搜了下,全部手写好乱,就试着启动图形界面到包部分保存为 ks.cfg, 并安装博客修改,主要添加如下 2 个参数,还有个 url 地址,自己的地址

%packages 
@base

8、检查完毕,找电脑测试,第一次随便拿了台一体机测试,启动 ok,由于数据未确定,所以终止安装,又找了 2 种电脑试试了,主板 boot 启动有 network 选项,但没有 PXE 提示,无法安装,所以用另一台搁置比较久的一体机测试安装,ok,速度还可以,毕竟只是基础安装


centos6.5 pxe kickstart 批量部署

centos6.5 pxe kickstart 批量部署

使用本地光盘安装 PXE kickstart (自动化无人值守批量安装服务器)

好久没搞这个东西了,最近马上又要用得到,复习一下

完整的步骤记在这里,说明以后再加上

环境 Centos 6.5 ESXI 虚拟机

服务器端 安装dhcp tftp-server nfs 挂载光盘

yum install dhcp -y
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
修改vim /etc/init.d/dhcpd

vim/etc/dhcp/dhcpd.conf

#dhcpd.conf
#SampleconfigurationfileforISCdhcpd

#optiondeFinitionscommontoallsupportednetworks...

#Usethistoenble/disabledynamicdnsupdatesglobally.
#ddns-update-stylenone;

#IfthisDHcpserveristheofficialDHcpserverforthelocal
#network,theauthoritativedirectiveshouldbeuncommented.
#authoritative;

#Usethistosenddhcplogmessagestoadifferentlogfile(youalso
#havetohacksyslog.conftocompletetheredirection).
log-facilitylocal7;

#Aslightlydifferentconfigurationforaninternalsubnet.
subnet192.167.1.0netmask255.255.255.0{
range192.167.1.122192.167.1.129;
optiondomain-name-servers202.106.0.20,192.167.1.104;
#optiondomain-name"internal.example.org";
optionrouters192.167.1.1;
#optionbroadcast-address10.5.5.31;
default-lease-time600;
max-lease-time7200;
next-server192.167.1.121;
filename"pxelinux.0";
}

报错 &解决办法

wKioL1jcdp_z954BAAAVqTKIVo8131.png-wh_50


wKiom1jcdUeAUC6pAABlramHLsw385.png-wh_50

wKioL1jcdUfD9AnsAAAeFKuyG2Q724.png-wh_50

wKiom1jcdUfiqIBZAAAK6fuT8Ns526.png-wh_50


=====================================================

yum install tftp-server -y
vim /etc/xinetd.d/tftp

wKioL1jcdUjDdyS1AAAh-lfJBro217.png-wh_50


yum install syslinux -y
[root@ccda yum.repos.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
[root@ccda yum.repos.d]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@ccda yum.repos.d]# cp /mnt/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
[root@ccda yum.repos.d]# vim /var/lib/tftpboot/pxelinux.cfg/default

修改vim /var/lib/tftpboot/pxelinux.cfg/default

defaultlinux
#prompt1
timeout600

displayboot.msg

menutitleWelcometoCentOS6.5!

labellinux
menulabel^Installorupgradeanexistingsystem
menudefault
kernelvmlinuz
appendinitrd=initrd.imgks=nfs:192.167.1.121:/ks/ks.cfg
labelrescue
menulabel^Rescueinstalledsystem
kernelvmlinuz
appendinitrd=initrd.imgrescue

[root@ccda yum.repos.d]# service xinetd restart
[root@ccda yum.repos.d]# service iptables stop
[root@ccda yum.repos.d]# yum install system-config-kickstart -y
[root@ccda yum.repos.d]# mkdir /ks

wKiom1jcdUjzzD7VAAAOqU1R_tE812.png-wh_50


[root@ccda ~]# service nfs start
[root@ccda ~]# chkconfig nfs on
[root@ccda ~]# umount /dev/cdrom
[root@ccda ~]# mount /dev/cdrom /media/

wKiom1jcdUjyp5krAABexhaSyfE518.png-wh_50

wKioL1jcdUnRAEhdAABJ3XLSiYQ070.png-wh_50

wKiom1jcdUmAkM78AABW2LVRVco636.png-wh_50

wKioL1jcdUmDI0rvAABgyVZb6AM874.png-wh_50

wKiom1jcdUqR9bg8AAA5qTaz4xo479.png-wh_50

wKioL1jcdUuDJiEdAABYGvBKGAs723.png-wh_50

wKiom1jcdUvjbanqAABFy3vl_0c104.png-wh_50

wKiom1jcdUvjEZFaAAAriMHLqoA679.png-wh_50

wKioL1jcdUyh3fQ9AABzVvn4ERI602.png-wh_50

wKiom1jcdwDB7129AABAyCVIRdM110.png

wKiom1jcdU3R5cSCAADgXsl-XBE899.png-wh_50


选择--> 保存文件到 /ks 目录 名称为ks.cfg

至此kickstart 安装完毕,如果需要减轻服务器压力 可将NFS单独装一台机器分离出去

=====================================================

我生成的ks文件

vim /ks/ks.cfg

#platform=x86,AMD64,或IntelEM64T
#version=DEVEL
#Firewallconfiguration
firewall--enabled--http--ssh
#InstallOSinsteadofupgrade
install
#UseNFSinstallationmedia
nfs--server=192.167.1.121--dir=/media
#Rootpassword
rootpw--iscrypted$1$ZmGYyI0Q$MdJasSrD999guxiZq62mM.
#Systemauthorizationinformation
auth--useshadow--passalgo=sha512
#Usegraphicalinstall
graphical
firstboot--disable
#Systemkeyboard
keyboardus
#Systemlanguage
langen_US
#SELinuxconfiguration
selinux--enforcing
#Installationlogginglevel
logging--level=info
#Rebootafterinstallation
reboot
#Systemtimezone
timezoneAsia/Shanghai
#networkinformation
network--bootproto=dhcp--device=eth0--onboot=on
#Systembootloaderconfiguration
bootloader--location=mbr
#CleartheMasterBootRecord
zerombr
#Partitionclearinginformation
clearpart--all--initlabel
#diskpartitioninginformation
part/home--fstype="ext4"--size=10240
part/--fstype="ext4"--grow--size=80000

%post
/sbin/chkconfig--level2345sshdon
mkdir-p/etc/yum.repos.d/bak
mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak
cat<<EOF>>/etc/yum.repos.d/work.repo
[centos_6]
name=sitvs
baseurl=http://192.167.1.121/media
#baseurl=http://10.10.6.52/yumdown/
enabled=1
gpgcheck=0
EOF
FILE=/opt/ifcfg-eth0
IPADDR=`ifconfigeth0|grep"inetaddr"|awk'{print$2}'|awk-F:'{print$2}'`
MAC=`grepHWADDR/etc/sysconfig/network-scripts/ifcfg-eth0`
DEVICE=`grepDEVICE/etc/sysconfig/network-scripts/ifcfg-eth0`
TYPE=`grepTYPE/etc/sysconfig/network-scripts/ifcfg-eth0`
NETMASK=`ifconfigeth0|grep"inetaddr"|awk'{print$4}'|awk-F:'{print$2}'`
#
#
echo"${DEVICE}">>${FILE}
echo"BOOTPROTO=\"static\"">>${FILE}
echo"${MAC}">>${FILE}
echo"NM_CONTROLLED=\"yes\"">>${FILE}
echo"ONBOOT=\"yes\"">>${FILE}
echo"${TYPE}">>${FILE}
echo"IPADDR=\"192.167.1.130\"">>${FILE}
echo"NETMASK=\"${NETMASK}\"">>${FILE}
echo"GATEWAY=\"192.167.1.254\"">>${FILE}
echo"DNS1=\"192.167.1.104\"">>${FILE}
echo"DNS2=\"202.106.0.20\"">>${FILE}
#
cat${FILE}>/etc/sysconfig/network-scripts/ifcfg-eth0
#
/etc/init.d/networkrestart
%end

%packages
@base
@chinese-support
@scalable-file-systems

%end

说明

%post

/sbin/chkconfig --level 2345 sshd on

mkdir -p /etc/yum.repos.d/bak

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

cat <<EOF>> /etc/yum.repos.d/work.repo
[centos_6]
name=sitvs
baseurl=http://192.167.1.121/media
#baseurl=http://10.10.6.52/yumdown/
enabled=1
gpgcheck=0
EOF
FILE=/opt/ifcfg-eth0
IPADDR=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}'`
MAC=`grep HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0`
DEVICE=`grep DEVICE /etc/sysconfig/network-scripts/ifcfg-eth0`
TYPE=`grep TYPE /etc/sysconfig/network-scripts/ifcfg-eth0`
NETMASK=`ifconfig eth0 | grep "inet addr" | awk '{ print $4}' | awk -F: '{print $2}'`

#
#
echo "${DEVICE}" >> ${FILE}
echo "BOOTPROTO=\"static\"" >> ${FILE}
echo "${MAC}" >> ${FILE}
echo "NM_CONTROLLED=\"yes\"" >> ${FILE}
echo "ONBOOT=\"yes\"" >> ${FILE}
echo "${TYPE}" >> ${FILE}
echo "IPADDR=\"192.167.1.130\"" >> ${FILE}
echo "NETMASK=\"${NETMASK}\"" >> ${FILE}
echo "GATEWAY=\"192.167.1.254\"" >> ${FILE}
echo "DNS1=\"192.167.1.104\"" >> ${FILE}
echo "DNS2=\"202.106.0.20\"" >> ${FILE}
#
cat ${FILE} > /etc/sysconfig/network-scripts/ifcfg-eth0
#
/etc/init.d/network restart

%end

====

%post---->%end 此处是安装完成执行的脚本 (要直接把脚本写在这里,不要先编辑脚本再用sh 命令执行脚本) 红色部分是配置yum源 蓝色部分是截取自动获取的IP写到网卡配置文件里,即把服务器改成固定IP (可以加上ntpdate命令同步时间)

备注:如果不确定需要安装的软件包 可以查看你其他机器上的 /root/anaconda-ks.cfg 文件中末尾@打头的报名复制到ks文件 @packages--->@end 之间

===============

至此客户端就可以开机自动安装系统了(保证客户机可以获取到dhcp地址)



一直在学习。。。。

关于PXE+Kickstart 实现无人值守批量安装 Linuxlinux无人值守安装系统的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于CentOS 7 PXE+Kickstart+TFTP+VSFTP+BIOS+UEFI、CentOS kickstart lvm、centos6.4 下 PXE+kickstart 网络安装操作系统、centos6.5 pxe kickstart 批量部署等相关知识的信息别忘了在本站进行查找喔。

本文标签: