PXE + Kickstart 服务

2019-09-29  本文已影响0人  DB哥

Linux System Environment

[root@kickstart ~]# cat /etc/redhat-release                   #==》系统版本
CentOS Linux release 7.6.1810 (Core)
[root@kickstart ~]#uname –r                               #==》内核版本
3.10.0-862.el7.x86_64
[root@kickstart ~]#uname -m                              #==》系统架构
x86_64
[root@kickstart ~]#echo $LANG                            #==》系统字符集
en_US.UTF-8

标注:本教程安装使用的是CentOS 7.5版本的镜像文件

什么是无人值守安装CentOS系统?

传统安装CentOS操作系统一般使用U盘或光盘进行安装,这样的操作是需要手动进行安装,操作步骤比较多又费时间,少量的主机可以使用这种手动安装操作系统,但是,如果是几十台甚至上百台主机需要安装CentOS操作系统恐怕你熬夜也安装不完。

无人值守安装CentOS系统涉及软件简介

1、PXE
PXE(Preboot Execute Environment,预启动执行环境)是由Intel公司开发的新技术,采用C/S网络模式,支持主机通过网络从远程服务器下载映像,并由此支持通过网络启动操作系统(前提计算机的网卡需要支持PXE技术,现在的网卡都支持此功能)。

2、FTP
FTP(File Transfer Protocol,文件传输协议)是用于在网络上进行文件传输的工具,21端口用于建立连接,22端口用于传输数据。

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

4、Vsftpd
vsftpd 是一款基于认证用户权限管理的ftp软件,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证,默认端口21端口。

5、Xinetd服务
Xinetd是TFTP的网络守护进程,TFTP运行和关闭都是由Xinetd服务来管理,xinetd 服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。

6、SYSLinux服务
SYSLinux是一个用于提供引导加载的服务程序。

7、DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机设置协议)是用于局域网动态分配IP地址的工具,主机发送请求消息DHCP服务器使用68端口,DHCP服务器回应应答消息给主机使用67端口。

8、Kickstart
Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要手工填写的参数保存成一个ks.cfg 文件,当安装过程中出现需要填写参数情况下,安装程序会先找ks.cfg文件,找到合适的参数则自动执行,找不到合适的参数则需要手动填写。

无人值守安装系统重要的目录文件

1、kickstart应答文件存放路径
[root@kickstart ~]# ls -l /var/ftp/pub/ks.cfg 
-rwxrwxrwx 1 root root 1917 Sep  9 14:50 /var/ftp/pub/ks.cfg

2、上传到ftp的CentOS 7镜像文件
[root@kickstart ~]# ls -l /var/ftp/
total 320
-rw-r--r-- 1 root root     14 Sep  7 18:00 CentOS_BuildTag
drwxr-xr-x 3 root root     35 Sep  7 18:00 EFI
-rw-r--r-- 1 root root    227 Sep  7 18:00 EULA
-rw-r--r-- 1 root root  18009 Sep  7 18:00 GPL
drwxr-xr-x 3 root root     57 Sep  7 18:00 images
drwxr-xr-x 2 root root    198 Sep  7 18:00 isolinux
drwxr-xr-x 2 root root     43 Sep  7 18:01 LiveOS
drwxr-xr-x 2 root root 221184 Sep  7 18:03 Packages
drwxr-xr-x 2 root root     20 Sep  9 14:50 pub
drwxr-xr-x 2 root root   4096 Sep  7 18:03 repodata
-rw-r--r-- 1 root root   1690 Sep  7 18:03 RPM-GPG-KEY-CentOS-7
-rw-r--r-- 1 root root   1690 Sep  7 18:03 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root   2883 Sep  7 18:03 TRANS.TBL

3、存放的启动安装系统文件
[root@kickstart ~]# ls -l /var/lib/tftpboot/
total 57920
-rw-r--r-- 1 root root       84 Sep  7 17:38 boot.msg
-rw-r--r-- 1 root root 52893200 Sep  7 17:37 initrd.img
-rw-r--r-- 1 root root    26759 Sep  7 17:31 pxelinux.0
drwxr-xr-x 2 root root       21 Sep  7 22:32 pxelinux.cfg
-rw-r--r-- 1 root root   152976 Sep  7 17:38 vesamenu.c32
-rwxr-xr-x 1 root root  6224704 Sep  7 17:37 vmlinuz

4、安装系统的GRUP菜单配置
[root@kickstart ~]# ls -l /var/lib/tftpboot/pxelinux.cfg/default 
-rw-r--r-- 1 root root 3075 Sep  7 22:32 /var/lib/tftpboot/pxelinux.cfg/default

无人值守安装CentOS系统安装步骤

1、关闭Firewalld防火墙及SElinux
2、安装配置DHCP服务
3、安装配置TFTP服务
4、安装配置SYSlinux服务
5、安装配置vsftpd 服务
6、创建KickStart应用文件
7、测试无人值守安装CentOS系统

一、配置阿里云yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

二、关闭firewalld防火墙和SElinux

#==》关闭firewalld防火墙
[root@kickstart ~]# systemctl stop firewalld
[root@kickstart ~]# systemctl disable firewalld
[root@kickstart ~]# systemctl status firewalld

#==》关闭SElinux
[root@kickstart ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux 
[root@kickstart ~]# grep 'SELINUX=disabled' /etc/sysconfig/selinux 
[root@kickstart ~]# setenforce 0
[root@kickstart ~]# getenforce

三、安装配置DHCP服务
标注:本机是DHCP服务器,提供DHCP客户端动态获取IP地址

1、设置本机网卡为固定IP地址 10.0.0.30,本机是提供DHCP服务防止本机IP随意变动

[root@kickstart ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
IPADDR=10.0.0.30
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=223.6.6.6
ONBOOT=yes

2、安装DHCP服务

[root@kickstart ~]# yum -y install dhcp

3、配置DHCP服务

[root@kickstart ~]# vim /etc/dhcp/dhcpd.conf
allow booting;                                        #==》是否响应使用者查询
allow bootp;                                          #==》是否响应激活查询
ddns-update-style interim;                            #==》配置DHCP-DNS 互动更新模式
ignore client-updates;  
subnet 10.0.0.0 netmask 255.255.255.0 {
        range dynamic-bootp 10.0.0.150 10.0.0.200;    #==》指定IP地址池
        option subnet-mask 255.255.255.0;             #==》指定子网掩码
        option domain-name-servers 10.0.0.30;         #==》指定DNS服务器IP地址
        default-lease-time 21600;                     #==》指定默认租约时间,单位秒
        max-lease-time 43200;                         #=》最大租约时间,单位秒
        next-server 10.0.0.30;                        #=》设置服务器从引导文件中安装
        filename "pxelinux.0";                        #=》开始启动文件名称
}

4、启动DHCP服务并设置开机自启动

[root@kickstart ~]# systemctl start dhcpd
[root@kickstart ~]# systemctl enable dhcpd
[root@kickstart ~]# systemctl status dhcpd
[root@kickstart ~]# ss -tlunp | egrep "67|68"

四、安装配置TFTP服务
标注:TFTP运行和关闭是由 xinetd 网络守护进程服务来管理

1、安装TFTP服务

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

2、配置TFTP服务
标注:把/etc/xinetd.d/tftp配置文件中disable=yes修改成no表示启动TFPT服务

[root@kickstart ~]# vim /etc/xinetd.d/tftp
        disable                 = no

3、启动xinetd服务并设置开机自启动

[root@kickstart ~]# systemctl start xinetd
[root@kickstart ~]# systemctl enable xinetd
[root@kickstart ~]# systemctl status xinetd
[root@kickstart ~]# ss -tlunp | grep 69

五、安装配置SYSLinux服务
标注:SYSLinux是一个用于提供引导加载的服务程序,其中SYSLinux服务包含bootloader有SYSLinux/PXELinux/ISOLinux等,我们要使用到的是PXELinux(PXE网络引导启动)的引导加载程序文件pexlinux.0,默认存放在/usr/share/syslinux目录中

1、安装SYSLinux服务

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

2、提取SYSLinux提供的引导文件pxelinux.0到TFTP服务程序默认目录

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

六、挂载CentOS 7镜像本地主机

1、挂载CentOS 7(ISO)镜像

[root@kickstart ~]# mkdir /media/cdrom
[root@kickstart ~]# mount /dev/cdrom /media/cdrom/

2、提取CentOS 7镜像中需要使用的一些引导文件也复制到TFTP服务程序默认目录

[root@kickstart ~]# cp /media/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@kickstart ~]# cp /media/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@kickstart ~]# cp /media/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/
[root@kickstart ~]# cp /media/cdrom/isolinux/boot.msg /var/lib/tftpboot/

3、提取CentOS 7镜像中开机菜单文件并指定自定的目录命名为default

[root@kickstart ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@kickstart ~]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

4、配置开机菜单文件

[root@kickstart ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
#==》第 1 行的 default 参数修改为 linux,这样系统在开机时就会默认执行那个名称为 linux 的选项了
  1 default linux
#==》第 64 行,我们把默认的光盘镜像安装方式修改成 FTP 文件传输方式,并指定好光盘镜像的获取地址以及 Kickstart 应答文件的获取路径,修改网卡名称为eth0
64 append initrd=initrd.img inst.stage2=ftp://10.0.0.30 ks=ftp://10.0.0.30/pub/ks.cfg quiet net.ifnames=0 biosdevname=0

5、检查

[root@kickstart ~]# ls -l /var/lib/tftpboot/
total 57920
-rw-r--r-- 1 root root       84 Sep  7 17:38 boot.msg
-rw-r--r-- 1 root root 52893200 Sep  7 17:37 initrd.img
-rw-r--r-- 1 root root    26759 Sep  7 17:31 pxelinux.0
drwxr-xr-x 2 root root       21 Sep  7 17:49 pxelinux.cfg
-rw-r--r-- 1 root root   152976 Sep  7 17:38 vesamenu.c32
-rwxr-xr-x 1 root root  6224704 Sep  7 17:37 vmlinuz

七、安装配置vsftpd服务
标注:CentOS 7光盘镜像资源是通过 FTP 协议传输,因此要用到 vsftpd 服务

1、安装vsftpd服务

[root@kickstart ~]# yum -y install vsftpd

2、启动vsftpd服务并设置开机自启动

[root@kickstart ~]# systemctl start vsftpd
[root@kickstart ~]# systemctl enable vsftpd
[root@kickstart ~]# systemctl status vsftpd
[root@kickstart ~]# ss -ltunp | grep 21

3、提取CentOS 7镜像文件到vsftpd服务工作目录中

[root@kickstart ~]# cp -r /media/cdrom/* /var/ftp/

八、创建Kickstart应答文件
标注:Kickstart不是一个服务,是一个应答文件。包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的指定的操作步骤

创建Kickstart应答有三种方法

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

方法2:
  Centos提供了一个图形化的kickstart配置工具,可以通过yum来安装system-config-kickstart 软件包,可以根据自己的需求生成自定义的 Kickstart应答文件。

方法3:
  阅读kickstart配置文件的手册,用vi/vim文本编辑器创建你自己的kickstart配置文件。

1、通过vim创建kickstart应答文件,文件放到/var/ftp/pub 目录中并命名为 ks.cfg

[root@kickstart ~]# vim /var/ftp/pub/ks.cfg
#==》安装Linux系统
install

#==》键盘类型为英文
keyboard --vckeymap=us --xlayouts='us'

#==》root加密的密码,也可以设置成不加密的
#rootpw --iscrypted $1$uV3lKOUB$xbDxbXrOTZzIRu4837FDU0
rootpw 123456

#==》使用网络安装并指定ftp服务提供的系统镜像源
url --url=ftp://10.0.0.30

# System language
#==》系统字符集设置为英文的UTF-8
lang en_US.UTF-8

#==》以图形化安装系统,text以文本形式安装系统
#text
graphical

#==》设置地区时间
timezone Asia/Shanghai --isUtc --nontp

#==》设置网卡信息
network  --bootproto=static --device=eth0 --gateway=10.0.0.2 --ip=10.0.0.7 --nameserver=10.0.0.2 --netmask=255.255.255.0

#==》指定引导记录被写入的位置
bootloader --location=mbr --boot-drive=sda

#==》清除MBR引导
zerombr

#==》清除分区
clearpart --all –initlabel

#==》磁盘分区
part /boot --asprimary --fstype="ext4" --size=500       #==》boot引导分区
part swap --fstype="swap" --size=4000                   #==》swap分区
part / --fstype="ext4" --grow --size=1                  #==》主分区,size为1代表将剩下的所有容量分配给当前分区

#==》关闭SELinux
selinux --disabled

#==》关闭防火墙
firewall --disabled

#==》负责协助配置redhat一些重要信息
firstboot --disabled

#==》设置日志级别
logging --level=info

#==》指定要安装的软件包,本教程选择的是以最小化安装
%packages
@^minimal
@compat-libraries
@core
@debugging
@development
@system-admin-tools
wget
vim
tree
nmap
sysstat
lrzsz
bash-completion
%end

#==》关闭kdump功能
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end

#==》存放脚本和命令,此处设置阿里云为yum源
%post
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
%end

#==》安装完重启系统
reboot

2、ks.cfg授权所有用户x权限

[root@kickstart ~]# chmod +x  /var/ftp/pub/ks.cfg

3、使用命令检查kickstart应答文件是否有语法错误

[root@kickstart ~]# yum -y install pykickstart
[root@kickstart ~]# ksvalidator /var/ftp/pub/ks.cfg

九、使用VMware Workstation创建的虚拟测试

1、虚拟机需要设置成网络启动

2、系统安装完后的分区

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0  3.9G  0 part [SWAP]
└─sda3   8:3    0 45.6G  0 part /
sr0     11:0    1 1024M  0 rom  
上一篇下一篇

猜你喜欢

热点阅读