美文网首页
PXE + Kickstart 服务

PXE + Kickstart 服务

作者: DB哥 | 来源:发表于2019-09-29 08:37 被阅读0次

    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  
    

    相关文章

      网友评论

          本文标题:PXE + Kickstart 服务

          本文链接:https://www.haomeiwen.com/subject/dhymyctx.html