«

PXE + kickstart无人值守安装操作系统

指尖二进制 • 1 年前 • 793 次点击 • LINUX


[TOC]

基于centos7系统讲解

什么是PXE?

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的新技术,工作于Client/Server的网络模式。支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等等。

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 方式之一进行安装;
    详细工作流程,请参考下面这幅图:

什么是Kickstart?

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

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

服务器硬件操作设置:
在部署完成之后,客户端还需要设置bios启动引导顺序
服务器硬软件操作设置:
网络模式:vmnet7 【172.16.0.x】

执行 PXE + KickStart安装需要准备内容:
DHCP 服务器用来给客户机分配IP;
TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
FTP 服务器用来存放系统安装文件;
KickStart所生成的ks.cfg配置文件;
生成ks.cfg 文件需要system-config-kickstart 工具;
带有一个 PXE 支持网卡的将安装的主机;

一、配置基本环境

网卡的设置一个桥接,一个vmnet7用来做dhcp

[root@PXE ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
DEVICE=ens33
ONBOOT=yes
[root@PXE ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO=static
DEVICE=ens37
ONBOOT=yes
IPADDR=172.16.0.10
NETMASL=255.255.255.0
GATEWAY=172.16.0.1

安装vsftp服务并设置为开机自启动

[root@PXE ~]# yum install -y vsftpd
[root@PXE ~]# systemctl start vsftpd && systemctl enable vsftpd

安装tftp及配置

[root@PXE ~]# yum install tftp tftp-server xinetd -y
[root@PXE ~]# vim /etc/xinetd.d/tftp 
修改13、14行
        server_args             = -s /tftpboot  #共享的目录
        disable                 = no #开启tftp服务
[root@PXE ~]# systemctl start xinetd
[root@PXE ~]# systemctl enable xinetd
[root@PXE ~]# yum install -y lsof
[root@PXE ~]# lsof -i:69
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  9210 root    5u  IPv4  46259      0t0  UDP *:tftp

其中,server_args = -s /tftpboot是tftp服务器运行时的参数。-s /tftpboot表示服务器默认的目录是 /tftpboot,当你执行put a.txt时,文件会被放到服务器的/tftpboot/a.txt,省去你敲put a /tftpboot/的麻烦。你也可以加其它服务器运行参数到这,具体可以执行man tftpd命令查阅。

-c :上传文件时,服务器上没有。就自动创建这个文件。

默认tftp客户端,只能上传tftp服务器已经有的文件。也就是只能传上去并覆盖服务器上的原文件。如果想上传原来目录中没有的文件,需要修改tftp服务器的配置文件并重起服务。需要修改如下:

打开/etc/xinetd.d/tftp文件,在 server_args 增加-c参数,如下所示:

server_args = -s /tftpboot -c

TFTP (Trivial File Transfer Protocol),中译简单文件传输协议或小型文件传输协议. 大家一定记得在2003年8月12日全球爆发冲击波(Worm.Blaster)病毒,这种病毒会监听端口69,模拟出一个TFTP服务器,并启动一个攻 击传播线程,不断地随机生成攻击地址,进行入侵。另外tftp被认为是一种不安全的协议而将其关闭,同时也是防火墙打击的对象,这也是有道理的。tftp 在嵌入式linux还是有用武之地的。需要打开防火墙,允许tftp访问网络。

安装及配置dhcp(注意:一定要把#号后面的删除掉)

[root@PXE ~]# yum install dhcp -y
[root@PXE ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #生成配置文件
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@PXE ~]# >/etc/dhcp/dhcpd.conf 
[root@PXE ~]# vim /etc/dhcp/dhcpd.conf
subnet 172.16.0.0 netmask 255.255.255.0 { #区段和掩码
  range 172.16.0.100 172.16.0.200; #地址池
  option domain-name-servers 172.16.0.1; #dns
  option domain-name "internal.example.org"; #域名
  option routers 172.16.0.1; #默认网关
  option broadcast-address 172.16.0.255; #广播地址
  default-lease-time 600; #默认租约期限
  max-lease-time 7200; #最大租约期限
  next-server 172.16.0.10; #下一跳
  filename "pxelinux.0"; #启动代码文件
}

二、配置使用PXE启动所需的相关文件

[root@PXE ~]# yum -y install system-config-kickstart syslinux

准备tftp需要共享的文件

[root@PXE ~]# mount /dev/cdrom /media/
[root@PXE ~]# mkdir /tftpboot
[root@PXE ~]# mkdir /tftpboot/pxelinux.cfg
[root@PXE ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ #启动代码文件
#注:启动引导文件,只有安装了system-config-kickstarhe selinuxt软件包,才会有/usr/share/syslinux/目录及目录中的文件。
[root@PXE ~]# cp /media/images/pxeboot/initrd.img /tftpboot/ #理解为V镜像
[root@PXE ~]# cp /media/images/pxeboot/vmlinuz /tftpboot/   #V内核
[root@PXE ~]# cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default    #引导顺序的文件
[root@PXE ~]# chmod 644 /tftpboot/pxelinux.cfg/default

三、修改default,指定安装操作系统的方式和ks.cfg文件路径

修改第一行,后面的linux意思是寻找下面18行的label linux。

然后修改第64行,意思是使安装程序通过ftp服务器访问kickstart文件。

[root@PXE ~]# vim /tftpboot/pxelinux.cfg/default
改:default
为:default linux

label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.repo=ftp://172.16.0.10/pub inst.ks=ftp://172.16.0.10/ks.cfg

其中:default linux表示指定默认入口名称;

使安装程序指向kickstart文件的书写格式如下:
ks=ftp://server/dir/file 如:ks=ftp://ftp服务器IP/ks.cfg
ks=http://server/dir/file 如:ks=http://http服务器IP/ks.cfg
ks=nfs:server:/dir/file 如:ks=nfs:nfs服务器IP:/var/ftp/pub/ks.cfg
ks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg
ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg

最后把镜像挂载到ftp共享出去

[root@PXE ~]# umount /media/
[root@PXE ~]# mount /dev/cdrom /var/ftp/pub/
[root@PXE ~]# vim /etc/yum.repos.d/centos.repo 
[centos]
name=CentOS
baseurl=file:///var/ftp/pub
gpgcheck=0
enable=1
[root@PXE ~]# mkdir -p /etc/yum.repos.d/back
[root@PXE ~]# mv /etc/yum.repos.d/C* /etc/yum.repos.d/back/
[root@PXE ~]# yum clean all
[root@PXE ~]# yum makecache

实验一:配置ks.cfg文件

可以不使用system-config-kickstart生成ks.cfg文件。

[root@PXE ~]# cp anaconda-ks.cfg ks.cfg
[root@PXE ~]# chmod 644 ks.cfg 
[root@PXE ~]# vim ks.cfg 
修改CDROM安装源:url --url=ftp://172.16.0.10/pub/
再时区上面添加一行安装完成重启:reboot
[root@PXE ~]# cp ks.cfg /var/ftp/
[root@PXE ~]# systemctl restart xinetd
[root@PXE ~]# systemctl restart dhcpd
[root@PXE ~]# systemctl restart vsftpd
[root@PXE ~]# systemctl stop firewalld

开启一台虚拟机:报如下错。
no space left on device
设备上没有剩余空间
处理上面问题加内存加硬盘,再试。

四、调用图形化配置ks.cfg

可以使用system-config-kickstart命令调用图形化界面设置ks.cfg文件。
最小化安装的操作系统没有图形化界面,怎么调用图形化?
打开xmanager的xstart,如果报错,请安装:[root@PXE ~]# yum install xorg-x11-xauth

基本配置——语言用English,键盘用默认,时区用上海,根口令redhat,勾选安装后重新引导系统,其他不做改变

安装方法——执行新安装—选择FTP——输入FTP服务器:172.16.0.10和FTP目录:/pub (基于数据目录)

引导装载程序选项——选择安装新引导装在程序

分区信息——清除主引导记录——删除所有现存分区——初始化磁盘标签——布局中添加,boot,交换,还有 / 分区

网络配置——默认

认证,默认不用配置

防火墙 && selinux 都关闭

显示配置——安装图形环境,指的是装系统的过程是以图形的方式显示,不是装桌面环境
!

软件包管理

[root@PXE ~]# vim /etc/yum.repos.d/centos.repo 
[development]
name=CentOS
baseurl=file:///var/ftp/pub
gpgcheck=0
enable=1
#注意:centos.repo文件中第一行[centos],中括号中建议填写[development],填写其他内容会导致后面system-config-kickstart命令生成kickstart文件文件时,出现的Package selection加载不到软件包。
[root@PXE ~]# yum clean all && yum makecache

选择开发组件用于编译安装使用

预安装脚本——客户端在装系统之后的操作,现在不需要,根据实际情况需求来配置

安装后脚本——勾选使用解释器,输入/bin/bash——在下面键入自定义的%post脚本:可以使用下面的脚本

mkdir -p /etc/yum.repos.d/back
mv /etc/yum.repos.d/back/C* /etc/yum.repos.d/back/
echo '[CentOS-7]
name=CentOS-$releasever - Media
baseurl=file:///mnt/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7' > /etc/yum.repos.d/CentOS-7.repo

保存配置
文件——保存——ks1.cfg——选择一个存放位置

实验二:配置ks.cfg文件

[root@PXE ~]# cp ks1.cfg /var/ftp/ks.cfg
[root@PXE ~]# systemctl restart xinetd
[root@PXE ~]# systemctl restart dhcpd
[root@PXE ~]# systemctl restart vsftpd

其他服务器开机测试!!!!!
回顾:
什么是PXE、PXE的工作过程。
什么KickStart、PXE+KickStart实现无人值守安装系统。
配置基本环境【安装并配置ftp、tftp、dhcp】
做了两个小实验

注意事项:
1:在vmware下内存和硬盘不能太小
2:配置源的时候必须要写development否则KickStart调用图形化的时候会出现找不到软件包

还没收到回复