美文网首页
第二十节、kickstart自动化安装

第二十节、kickstart自动化安装

作者: 妄语莫言 | 来源:发表于2017-12-12 06:22 被阅读0次

    参考文章1
    参考文章2
    参考文章3

    一、Kickstart使用背景介绍
    • 什么是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网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP;
    2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
    3. 客户端下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
    4. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统(pxelinux.cfg/default、vmlinuz、initrd.img);
    5. 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
      6.将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机
      详细工作流程,请参考下面这幅图:


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


      kickstart自动化安装原理.jpg

      这里可以将DHCP/TFTP/NFS全部安装在同一台机器上

    二、服务配置安装(分配IP192.168.15.150)

    环境准备局域网内已提供yum源(Nginx服务器端口8088)192.168.15.131:8088
    登录kickstart服务器备份默认yum源目录,从yum服务器远程拷贝文件到目录

    ##150服务器
    [root@mini ~]# cd /etc/   
    [root@mini etc]# cp -R yum.repos.d    yum.repos.d.bak  
    #备份原始yum源配置文件
    [root@mini yum.repos.d]# rm -rf /etc/yum.repos.d/*
    #删除配置目录下所有文件
    [root@mini yum.repos.d]#  vim centos.repo
    [yum]                               
    name=centos6.5                     
    baseurl=http://192.168.15.131:8088/CentOS6.5/  
    enabled=1                        
    gpgcheck=0      
    #创建网络源配置文件
    [root@mini yum.repos.d]# yum clean all
    #清除yum缓存
    [root@mini yum.repos.d]# yum repolist
    Loaded plugins: aliases, changelog, downloadonly, fastestmirror, kabi, presto, security, tmprepo, verify,
                  : versionlock
    Loading support for CentOS kernel ABI
    Determining fastest mirrors
    yum                                                                                        | 4.0 kB     00:00     
    yum/primary_db                                                                             | 4.4 MB     00:00     
    repo id                                              repo name                                              status
    yum                                                  centos6.5                                              6,367
    repolist: 6,367
    #查看更换yum源成功
    
    • 安装DHCP/TFTP服务
    [root@mini ~]# yum install dhcp* tftp* -y
    #开启tftp服务
    [root@mini ~]# vim /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  #默认yes不开启
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
    #tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务。
    [root@mini ~]# /etc/init.d/xinetd restart
    

    配置DHCP服务

    [root@mini data]#  vim /etc/dhcp/dhcpd.conf 
    ###################
    ddns-update-style interim;    #忽略客户端更新
    ignore client-updates;  
    next-server 192.168.15.150;  #指定NFS客户端地址
    filename "pxelinux.0";   #指定默认查找的文件名
    allow booting;  
    allow bootp;   #允许启动
    subnet 192.168.15.0 netmask 255.255.255.0 {
    # --- default gateway
    option routers          192.168.15.1;
    option subnet-mask      255.255.252.0;
    range dynamic-bootp 192.168.15.170 192.168.15.200;
    
    host ns {
            hardware ethernet  00:1a:a0:2b:38:81;
            fixed-address 192.168.15.101;}
    }
    [root@mini data]# /etc/init.d/dhcpd restart
    
    • TFTP+PXE配置
      要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。(客户端请求后从服务端下载的一些启动文件)
      配置步骤如下:
    [root@mini tftpboot]# ln -s /var/lib/tftpboot  /
    [root@mini tftpboot]# cd /
    #把tftp的目录软链接到根目录
    [root@mini /]# ll  /tftpboot
    lrwxrwxrwx    1 root root    17 Dec 11 16:26 tftpboot -> /var/lib/tftpboot
    [root@mini ~]# mount /dev/cdrom /mnt
    mount: block device /dev/sr0 is write-protected, mounting read-only
    #将光驱的系统盘挂载到/mnt目录
    [root@mini tftpboot]# find / -name "pxelinux.0"
    /usr/share/syslinux/pxelinux.0
    #查找启动文件pxelinux.0位置,如果不存在通过下面程序安装
    [root@mini syslinux]# yum install syslinux syslinux-devel -y
    [root@mini syslinux]# cp /usr/share/syslinux/pxelinux.0  /tftpboot/
    #拷贝启动引导文件到tftp根目录
    [root@mini tmp]# cp /mnt/images/pxeboot/vmlinuz  /tftpboot/
    [root@mini tftpboot]# cp /mnt/images/pxeboot/initrd.img  /tftpboot/
    #拷贝光盘中的内核启动文件到tftp根目录
    #创建引导菜单文件目录,从光驱拷贝文件并重命名
    [root@mini tftpboot]# mkdir pxelinux.cfg
    [root@mini tftpboot]# cd pxelinux.cfg/
    [root@mini pxelinux.cfg]# cp /mnt/isolinux/isolinux.cfg  /tftpboot/pxelinux.cfg/default
    [root@mini tftpboot]# tree
    .
    ├── initrd.img
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vmlinuz
    

    修改引导文件/tftpboot/pxelinux.cfg/default

    [root@mini tftpboot]# vim /tftpboot/pxelinux.cfg/default 
    default linux    # 默认加载一个菜单
    #prompt 1 # 开启会显示命令行'boot: '提示符。prompt值为0时则不提示,将会直接启动'default'参数中指定的内容
    timeout 10  # timeout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒
    display boot.msg   # 菜单背景图片、标题、颜色。
    #########
    label linux  # label指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动label linux下标记的kernel和initrd.img文件。
    kernel vmlinuz   # 指定要启动的内核。同样要注意路径,默认是/tftpboot目录
    append ks=nfs:192.168.15.150:/data/centosinstall/ks.cfg  ksdevice=eth0 initrd=initrd.img
    # 指定追加给内核的参数
    ##########
    label text
    kernel vmlinuz
    append initrd=initrd.img text
    label ks
    kernel vmlinuz
    append ks initrd=initrd.img
    label local
    localboot 1
    label memtest86
    kernel memtest
    append –
    
    • 拷贝光盘文件到/data目录下新建的centosinstall目录,并且利用nfs共享该目录
    [root@mini data]# mkdir centosinstall
    [root@mini data]# nohup cp /mnt/*  /data/centosinstall/ -a &
    #后台拷贝
    [root@mini data]# yum install nfs* -y 
    #安装NFS
    [root@mini data]# vim /etc/exports 
    /data/centosinstall/    *(rw,sync)
    #共享目录/data/centosinstall/
    [root@mini data]#  /etc/init.d/rpcbind restart
    [root@mini data]# /etc/init.d/nfs restart   
    #依次重启依赖服务rpcbind和nfs
    
    • 在centosinstall目录下新建ks.cfg文件(定义硬盘分区及安装软件包)
      默认记录系统安装步骤的文件/root/anaconda-ks.cfg
    [root@mini data]# vim /data/centosinstall/ks.cfg
    # Kickstart file automatically generated by anaconda.   #注释语句这是kickstart自动安装脚本
    install      #开始安装
    text          #文本模式安装
    nfs --server=192.168.15.150 --dir=/data/centosinstall/  #指定nfs服务器目录后面带/号
    key --skip   #跳过密钥
    lang zh_CN.UTF-8  #字符集
    keyboard us
    network --device eth0 --bootproto=dhcp --noipv6 #网卡dhcp自动获取
    rootpw 123456  #root密码
    firewall --disabled  #禁用防火墙
    authconfig --enableshadow --enablemd5
    selinux --disabled  #禁止selinux
    timezone Asia/Shanghai   #时区
    bootloader --location=mbr --driveorder=sda --append="rhgb quiet" #引导方式mbr,安装到硬盘sda,打印默认信息
    clearpart --all --initlabel  #初始化所有磁盘分区
    part /boot --fstype ext3 --size=200  # /boot分配200M
    part swap --size=1024     #swap交换分区1G
    part / --fstype ext3 --size=80000  #根分区8G
    part /data --fstype ext3 --size=200 --grow #data分区占剩余所有空间
    reboot  #重启
    %packages  #定义安装软件包,可以去/root/anaconda-ks.cfg复制光盘系统安装的包
    @base
    @core
    @chinese-support
    @compat-libraries
    @core
    @debugging
    @development
    @java-platform
    @perl-runtime
    @server-policy
    @workstation-policy
    yum-plugin-aliases
    tboot
    nss_db
    linuxptp
    rsyslog-gssapi
    udftools
    rsyslog-relp
    audispd-plugins
    mtools
    yum-plugin-versionlock
    sox
    dumpet
    gpm
    yum-plugin-tmprepo
    pax
    python-dmidecode
    uuidd
    yum-presto
    oddjob
    wodim
    volume_key
    squashfs-tools
    star
    kernel-doc
    tunctl
    yum-plugin-downloadonly
    sgpio
    yum-plugin-changelog
    genisoimage
    brltty
    yum-plugin-verify
    x86info
    dos2unix
    cpupowerutils
    unix2dos
    kabi-yum-plugins
    edac-utils
    device-mapper-persistent-data
    logwatch
    rsyslog-gnutls
    PyPAM
    mkbootdisk
    ecryptfs-utils
    python-volume_key
    zsh
    ncurses-term
    cjkuni-fonts-ghostscript
    glibc-utils
    systemtap-client
    memtest86+
    gdb-gdbserver
    ps_mem
    lslk
    flightrecorder
    systemtap-initscript
    systemtap-sdt-devel
    dejagnu
    ElectricFence
    ant
    libstdc++-docs
    gcc-gnat
    expect
    mod_dav_svn
    perltidy
    cmake
    imake
    babel
    ksc
    kdewebdev
    rpmdevtools
    compat-gcc-34
    systemtap-server
    cvs-inetd
    gcc-java
    compat-gcc-34-g77
    jpackage-utils
    bzr
    mercurial
    chrpath
    gcc-objc
    rpmlint
    gcc-objc++
    compat-gcc-34-c++
    python-docs
    nasm
    icedtea-web
    perl-LDAP
    perl-Frontier-RPC
    perl-Date-Calc
    perl-suidperl
    perl-Date-Manip
    perl-Mozilla-LDAP
    perl-DBD-SQLite
    %end
    [root@mini data]# chmod 777 /data/centosinstall/ks.cfg 
    #更改授权
    
    重启所有服务
    [root@mini ~]# /etc/init.d/xinetd restart       #TFTP依赖服务
    [root@mini ~]#  /etc/init.d/rpcbind restart   #NFS依赖服务
    [root@mini ~]# /etc/init.d/nfs restart           #NFS服务
    [root@mini ~]#  /etc/init.d/dhcpd restart     #DHCP服务
    #备注:/data/centosinstall/ks.cfg文件第4行配置NFS服务器的目录最后不需带/号否则安装时会报错
    
    利用虚拟机给服务器自动安装centos系统
    • 首先利用PE系统格式化硬盘(一般服务器都是做好raid的虚拟硬盘),如果是全新的机器只要检查RAID是否完成,一般系统开机顺序是先检测硬盘再检测网卡,如果手动更改启动BOOT顺序,自动化安装重启后会继续循环安装,因此最好保证启动顺序是第一硬盘,第二网络,否则需要再系统安装完成重启时手动操作.
    • 虚拟机开启所有服务(xinetd/nfs/dhcp)后,网卡由原本的NAT模式改为桥接模式
    • 打开虚拟机的虚拟网络编辑器功能,关闭DHCP分配地址功能,并将桥接模式下的网卡改为物理网卡(笔记本一般都桥接到无线网卡上)
    • 修改笔记本物理网卡的IP地址,同时利用交换机将笔记本,服务器连接在统一个局域网中
    • 启动服务器等待系统安装完成即可

    相关文章

      网友评论

          本文标题:第二十节、kickstart自动化安装

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