美文网首页
课外-Kickstart无人值守安装系统CentOS 7

课外-Kickstart无人值守安装系统CentOS 7

作者: MineG | 来源:发表于2019-06-14 14:15 被阅读0次

    Kickstart无人值守安装系统CentOS 7

    1、概述

    1.1 关于PXE

    Preboot Execution Environment 翻译过来就是预启动执行环境:简称 PXE ;传统安装操作系统的方法是 CD/ROMU 盘引导,而 PXE 技术解决的是从网络引导安装系统,当然 PXE 技术不是什么新技术了,是 IntelMicrosoft1998 年定义的更大 PC98 规范的一部分。有关 PXE 规范的详细文档

    1.2 关于pxe引导相关角色说明

    • PXE 作用:引导装机
    • Kickstart 作用:将安装系统的过程中通过 ks.cfg 文件中的配置信息,实现自动安装配置达到无人值守自动安装;
    • TFTP 作用:支持PXE 引导的网卡中从tftp服务器端下载 pxelinux.0 文件、vmlinuzinitrd.img 等内核引导文件;
    • DHCP 作用:PXE引导过程中获首先获取IP地址,并提供 pxelinux.0 文件位置;
    • HTTP 作用:用于下载 ks.cfg 以及系统镜像文件

    通用的无人值守做法如下:

    通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp 服务器获取 ippxelinux.0 文件并从 tftp 服务器上加载相关内核引导文件;同时下载 kickstartcfg 配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!

    1.3 环境准备说明

    本次测试环境说明:

    • PXE 服务器:CentOS 7.6 基于VMware的虚拟机,IP:10.0.0.61,172.16.1.61
    • 外网 IP 段:10.0.0.0(可上网) 内网 IP 段:172.16.1.0(局域网)

    配置服务及安装软件包如下:

    DHCP        #获取IP地址,并提供pxelinux.0文件位置
    TFTP            #支持PXE下载内核引导文件
    HTTP        #下载ks.cfg以及系统镜像文件
    Syslinux        #提供引导文件
    

    以上所需要的软件包均通过 yum 安装

    firewall和selinux临时关闭与永久关闭:

    ##关闭firewalld
    systemctl stop firewalld
    ##永久关闭firewalld
    systemctl disable firewalld
    ##检查结果
    systemctl status firewalld
    ##临时关闭selinux
    setenforce 0
    ##永久关闭selinux
    sed -i 's#^SELINUX=.*#SELINUX=disabled#g' /etc/sysconfig/selinux
    ##检查结果
    grep '^SELINUX=' /etc/sysconfig/selinux
    

    若是生产线,请开放 UDP :67、68、69 TCP :80端口。

    ISO 镜像:

    CentOS 7.6

    2、准备

    2.1 安装所需要的软件包

    ##yum安装
    yum install dhcp tftp tftp-server syslinux httpd -y
    

    2.2 制作安装源

    1、确认 CentOS 7.6 ISO镜像文件已连接

    2、挂载本地光盘制作安装源

    ##创建挂载点
    mkdir –p /media/cdrom
    ##挂载CentOS7光盘
    mount /dev/cdrom /media/cdrom
    mkdir -p /var/www/html/centos/7/x86_64
    ##绑定挂载到http默认目录下
    mount --bind /media/cdrom /var/www/html/centos/7/x86_64
    

    2.3 配置kickstart的 ks.cfg文件

    ##创建ks目录
    mkdir /var/www/html/ks
    
    ## 查看/var/www/html/ks/目录下ks.cfg文件内容
    cat /var/www/html/ks/ks.cfg
    #Kickstart Configurator for CentOS 7 by Mine
    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    # Use CDROM installation media
    #cdrom
    # Install OS instead of upgrade
    install
    # Use network installation
    url --url=http://10.0.0.61/centos/7/x86_64
    # Use graphical install
    graphical
    # Run the Setup Agent on first boot
    firstboot --enable
    #ignoredisk --only-use=sda
    # Keyboard layouts
    keyboard --vckeymap=cn --xlayouts='cn'
    # System language
    lang zh_CN.UTF-8
    # Network information
    #network  --bootproto=static --device=eth0 --gateway=10.0.0.254 --ip=10.0.0.100 --nameserver=223.5.5.5 --netmask=255.255.255.0 --activate 
    #network  --bootproto=static --device=eth1 --ip=172.16.1.100 --netmask=255.255.255.0 --activate
    network  --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto
    network  --hostname=oldboy
    
    # Root password
    rootpw --iscrypted $1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1
    
    # System timezone
    timezone Asia/Shanghai --isUtc
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    autopart --type=lvm
    # Partition clearing information
    clearpart --none --initlabel
    
    %packages
    @^minimal
    @core
    kexec-tools
    vim
    wget
    httpd
    %end
    %addon com_redhat_kdump --enable --reserve-mb='auto'
    %end
    selinux --disabled
    reboot
    

    3、配置

    3.1 HTTPD服务

    启动Httpd服务,并设置开机自启动与查看

    ##启动httpd服务
    systemctl start httpd
    ##开机自启动
    systemctl enable httpd
    ##查看有无端口
    netstat -lntup|grep httpd
    

    3.2 DHCP服务

    1、配置dhcp服务

    dhcp 配置文件在 /etc/dhcp/ 目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改,模板示例路径为 /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example 这里呢,为节省时间,我们直接写入即可。

    cat >>/etc/dhcp/dhcpd.conf<<EOF
    subnet 10.0.0.0 netmask 255.255.255.0 {
    range 10.0.0.100 10.0.0.199;
    option subnet-mask 255.255.255.0;
    default-lease-time 21600;
    max-lease-time 43200;
    next-server 10.0.0.61;
    filename "/pxelinux.0";
    }
    EOF
    ##查看结果
    cat /etc/dhcp/dhcpd.conf
    

    2、启动,设置开机自启动与查看

    ##启动dhcp服务
    systemctl start dhcpd
    ##开机自启动
    systemctl enable dhcpd
    ##查看有无端口
    netstat -lntup|grep dhcpd
    

    3.3 TFTP服务

    安装好 tftp-server 软件包后 默认的数据根目录是 /var/lib/tftpboot/无须修改,只需要复制一些软件引导文件进来即可

    1、相关文件准备

    ##引导文件
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  
    #内核文件
    cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
    #引导菜单
    cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
    #制件引导默认文件
    mkdir -p /var/lib/tftpboot/pxelinux.cfg
    cat >/var/lib/tftpboot/pxelinux.cfg/default <<EOF
    default menu.c32
       prompt 5
       timeout 30
       MENU TITLE CentOS 7 PXE Menu
    
       LABEL linux
       MENU LABEL Install CentOS 7 x86_64
       KERNEL vmlinuz
       #APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg net.ifnames=0 biosdevname=0 ksdevice=eth0
       #APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg
       APPEND initrd=initrd.img inst.repo=http://10.0.0.61/centos/7/x86_64 ks=http://10.0.0.61/ks/ks.cfg net.ifnames=0 biosdevname=0
    EOF
    ##查看结果
    cat /var/lib/tftpboot/pxelinux.cfg/default
    

    2、启动配置开机自启

    ##开机自启动
    systemctl enable tftp
    ##启动tftp
    systemctl start tftp
    

    3、Tftp测试

    /var/lib/tftpboot/ 目录文件结构

    ##查看结构
    tree -L 2 /var/lib/tftpboot/
    /var/lib/tftpboot/
    ├── chain.c32
    ├── initrd.img
    ├── mboot.c32
    ├── memdisk
    ├── menu.c32
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    └── vmlinuz
    ##测试tftp
    [root@oldboyedu ~]# cd /tmp/
    [root@oldboyedu /tmp]# pwd;ls
    /tmp
    [root@oldboyedu /tmp]# tftp 10.0.0.61
    tftp> get vmlinuz
    tftp> quit
    [root@oldboyedu /tmp]# ls
    vmlinuz 
    

    4、测试

    客服端配置

    1)、选择自定义配置

    Vmware软件中,单击左上角的文件,在下拉菜单中选择新建虚拟机

    image

    在弹出的新建虚拟机向导选项卡里面,选择自定义(高级)

    image

    2)、 选择虚拟机硬件兼容性

    硬件兼容性一项中,选择最新的,默认即可

    image

    3)、安装客服机操作系统

    我们后面要自己定制化安装CentOS系统,所以此处选择稍后安装操作系统

    image

    4)、选择客服机操作系统

    此处客服机操作系统选择Linux,版本选择CentOS 64位

    image

    5)、命名虚拟机

    虚拟机名称命名方法:IP+用途,位置:事先规划好的位置即可

    image

    6)、处理器配置

    我们目的是测试用的,所以默认即可

    image

    7)、内存配置

    内存大小,我们给2GB即可

    image

    8)、选择网络类型

    为了方便学习,网络类型这项,必须选择使用网络地址转换(NAT)

    image

    9)、选择I/O控制类型

    这一项,我们默认即可

    image

    10)、选择磁盘类型

    这一项,我们也默认即可

    image

    11)、选择磁盘

    磁盘这一项,选择创建新虚拟机磁盘,不要选择其他的。

    image

    12)、指定磁盘容量

    “磁盘容量默认20G即可

    image

    13)、指定磁盘文件

    保持默认即可

    image

    14)、挂载CentOS镜像

    点击自定义硬件,进入硬件选项卡

    image

    硬件选项卡中,鼠标点中CD/DVD(IDE)选项,在右侧选中使用ISO映像文件,点击浏览按钮,在弹出的窗口中找到本地的CentOS系统ISO文件,选择完毕后,点击关闭按钮。

    image

    15)、完成创建虚拟机

    此时,一台新虚拟机的硬件就全部配置完毕了,检查确认无误后,点击完成按钮

    image

    5、检验

    直接开启虚拟机,等待几秒即可

    DHCP ok

    PXE ok

    加net.ifnames=0 biosdevname=0网卡名是改成eth0或eth1

    最后测试如下

    6、附录

    6.1 ks文件生成的三种方式

    • 方法1
        每安装好一台 Centos 机器,Centos 安装程序都会创建一个 kickstart 配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的 kickstart 配置文件来生成你自己的 kickstart 配置文件。(生成的文件名字叫 anaconda-ks.cfg 位于 /root/anaconda-ks.cfg
    • 方法2
        Centos 提供了一个图形化的 kickstart 配置工具。在任何一个安装好的 Linux 系统上运行该工具,就可以很容易地创建你自己的 kickstart 配置文件。kickstart 配置工具命令为 redhat-config-kickstart(RHEL3)system-config-kickstart(RHEL4,RHEL5) 。网上有很多用 CentOS 桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。
    • 方法3
        读 kickstart 配置文件的手册。用任何一个文本编辑器都可以创建你自己的 kickstart 配置文件。

    6.2 ks文件配置参数说明

    • 命令段:键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项
    • 软件包段:
    %packages
    @groupname:指定安装的包组
    package_name:指定安装的包
    -package_name:指定不安装的包
    

    在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。

    • 脚本段(可选)
    %pre:安装系统前执行的命令或脚本(由于只依赖于启动镜像,支持的命令很少)
    %post:安装系统后执行的命令或脚本(基本支持所有命令)
    

    详解如下表所示:

    关键字 含义
    install 告知安装程序,这是一次全新安装,而不是升级upgrade。
    url --url=" " 通过FTP或HTTP从远程服务器上的安装树中安装。例如:url --url="http://10.0.0.7/CentOS-6.7/",url --url ftp://<username>:<password>@<server>/<dir>
    nfs 从指定的NFS服务器安装,例如:nfs --server=nfsserver.example.com --dir=/tmp/install-tree
    text 使用文本模式安装。
    lang 设置在安装过程中使用的语言以及系统的缺省语言,例如:lang en_US.UTF-8
    keyboard 设置系统键盘类型。例如:keyboard us
    zerombr 清除mbr引导信息。
    bootloader 系统引导相关配置。例如bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
    --location= 指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
    --driveorder 指定在BIOS引导顺序中居首的驱动器
    --append= 指定内核参数.要指定多个参数,使用空格分隔它们。
    network 为通过网络的kickstart安装以及所安装的系统配置联网信息。例如: network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7; --bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。
    static 方法要求在kickstart文件里输入所有的网络信息。例如:network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.254 --nameserver=10.0.0.61,请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
    --ip= 要安装的机器的IP地址
    --gateway= IP地址格式的默认网关.
    --netmask= 安装的系统的子网掩码
    --hostname= 安装的系统的主机名
    --onboot= 是否在引导时启用该设备
    --noipv6= 禁用此设备的IPv6
    --nameserver= 配置dns解析
    timezone 设置系统时区。例如:timezone --utc Asia/Shanghai
    authconfig 系统认证信息。例如:authconfig --enableshadow --passalgo=sha512设置密码加密方式为sha512 启用shadow文件
    rootpw root密码
    clearpart 清空分区。例如:clearpart --all --initlabel, --all 从系统中清除所有分区,--initlable 初始化磁盘标签
    part 磁盘分区。例如:part /boot --fstype=ext4 --asprimary --size=200,part swap --size=1024,part / --fstype=ext4 --grow --asprimary --size=200
    --fstype= 为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat
    --asprimary 强迫把分区分配为主分区,否则提示分区失败。
    --size= 以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
    --grow 告诉分区使用所有可用空间(若有),或使用设置的最大值。
    firstboot 负责协助配置redhat一些重要的信息。例如:firstboot --disable
    selinux 关闭selinux。例如:selinux --disabled
    firewall 关闭防火墙。例如:firewall --disabled
    logging 设置日志级别。例如:logging --level=info
    reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。

    6.3 DHCP配置文件说明

    range 10.0.0.100 10.0.0.199;           # 可分配的起始IP-结束IP
    option subnet-mask 255.255.255.0;     # 设定netmask
    default-lease-time 21600;             # 设置默认的IP租用期限
    max-lease-time 43200;               # 设置最大的IP租用期限
    next-server 10.0.0.61;               # 告知客户端TFTP服务器的ip
    filename "/pxelinux.0";                   # 告知客户端从TFTP根目录下载pxelinux.0文件
    

    6.4 生成密码方法

    [root@m01 ~]# openssl passwd -1 -salt 'oldboy' '123456'
    $1$oldboy$Npg9Pt9k98Mlg0ZeqHAuN1
    

    相关文章

      网友评论

          本文标题:课外-Kickstart无人值守安装系统CentOS 7

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