细说Linux基础知识
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 Linux无人值守安装

前面介绍了光盘安装和U盘安装,但如果需要同时部署10台服务器呢?100台服务器呢?超哥有一段悲惨的过往,当年从事游戏运维的时候居然有2000多台服务器,现在想起来还是“默默无语两眼泪,耳边响起二胡声”……这么多台服务器如果纯手工安装,那么耗费的人力和时间都将非常可怕。怎么解决这个问题呢?采用无人值守安装!简单地讲,无人值守安装就是搭建一台安装服务器,将其他所有未安装的服务器作为客户端,客户端从服务器上下载所需的软件,并安装所有的客户端服务器,客户端服务器只需修改启动顺序为网络启动,就可以从服务器安装。这种安装方式大大简化了运维工程师的工作量,但是服务器端的搭建比较复杂,并不适合初学者使用。

如果是初学者,则请先跳过无人值守安装,因其设置复杂,所需Linux知识众多,可以在学完本书后续章节后再来玩此应用。

2.4.1 概念和原理

实现网络安装操作系统,有几个问题需要先明确。第一,既然是网络安装,那么客户端在启动时必须获取IP地址,由谁(DHCP)分配IP地址?第二,由谁(PXE)把客户端启动所必需的软件从服务器端传递到客户端?第三,由谁(KickStart)定义客户端的安装选择?比如选择什么语言?安装什么样的软件包?管理员密码是什么?第四,安装过程已经启动,本地安装是通过光盘或U盘保存安装所需的软件包的,那么网络安装通过谁(HTTP、FTP、NFS)来发送所需的软件包?下面我们一一说明这些问题。

1.DHCP是什么

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种局域网的网络协议,它可以使Client端(客户端)从Server端(服务器端)自动获取IP地址、子网掩码、网关及DNS等网络配置信息,从而简化了Client端的配置和操作,是局域网常用服务。

2.PXE是什么

PXE(Pre-boot Execution Environment)是由英特尔设计的协议,它可以使计算机通过网络启动。协议有Server端和Client端,PXE Client保存在网卡的ROM中,当计算机启动时,BIOS把PXE Client调入内存中执行,然后PXE Client通过网络将放在PXE Server端的启动文件下载到本地运行。注意,PXE Client和PXE Server之间传递数据是通过TFTP协议进行的,所以需要配置TFTP服务器。

3.KickStart是什么

KickStart是一种无人值守的安装方式。它把安装过程中所有需要人工干预填写的各种参数记录下来,并保存在一个命名为ks.cfg的文件中。如果安装过程中出现需要填写的参数,那么安装程序会从ks.cfg中查找需要的配置。如果ks.cfg文件把所有需要填写的参数都记录完整,那么安装过程中就不需要人为参与,从而实现自动安装。

4.HTTP、FTP、NFS是什么

HTTP、FTP、NFS都是Linux中文件共享的方式,在这里使用一种就可以了,我们选择HTTP服务。它的主要作用就是把安装过程中所需的软件包发布到网络上(注意:PXE发布的是启动必需文件),Client可以通过网络获取所需的软件包。

2.4.2 无人值守安装的条件

(1)在服务器上配置DHCP服务。

(2)在服务器上配置TFTP服务。

(3)在服务器上搭建用来发布安装软件包的服务,如HTTP、FTP或NFS等服务。

(4)在服务器上由KickStart生成ks.cfg自动应答配置文件。

(5)客户机的网卡支持PXE(现在的网卡一般都支持)。

(6)客户机的主板支持网络启动(现在的主板一般都支持)。

2.4.3 无人值守安装的步骤

(1)关闭防火墙和SELinux。注意一定要关闭,否则后续会报错。

    chkconfig iptables off
        #关闭防火墙
        vi /etc/selinux/config
        SELINUX=enforcing 改为SELINUX=disabled
        重启系统让设置生效
        #关闭SELinux

(2)在服务器上搭建本地光盘作为yum源的服务器。

①将CentOS 6.x的安装光盘放入服务器。

②挂载光盘到指定目录。

    mkdir /mnt/cdrom
    #建立光盘挂载点
    mount /dev/cdrom /mnt/cdrom
    #挂载光盘到/mnt/cdrom中

③切换所在目录到yum配置文件目录。

    cd /etc/yum.repos.d/

④把除光盘yum源之外的其他yum源修改一下文件名,让它失效。

    mv CentOS-Base.repo CentOS-Base.repo.bak
        mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
    mv CentOS-Vault.repo CentOS-Vault.repo.bak

⑤修改光盘yum源文件。

    vi CentOS-Media.repo

该文件的内容按照下面修改:

    [c6-media]
    name=CentOS-$releasever – Media
    baseurl=file:///mnt/cdrom
    #修改为光盘的挂载点,注意file后有三个/
    #       file:///media/cdrom/
    #       file:///media/cdrecorder/
    #注释掉不存在的yum源目录
    gpgcheck=1
    enabled=1
    #把0改为1,代表启用这个yum源文件
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

(3)在服务器上安装并配置DHCP服务。

①安装DHCP服务。

    yum -y install dhcp

②需要修改一下配置文件/etc/dhcp/dhcpd.conf。但是这个文件默认不存在,在/usr/share/doc/dhcp-4.1.1中有一个配置文件的模板文件,把它复制过去,并重新命名。

    cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

③修改配置文件。本节不是讲解DHCP服务的,所以我们把不需要的服务全部注释掉,只启用最基本的功能。

    vi /etc/dhcp/dhcpd.conf
    ddns-update-style interim;
    ignore client-updates;
    next-server 192.168.150.239;
    #指定TFTP服务器的IP地址
    filename "pxelinux.0";
    #PXE客户端得到IP以后的引导文件
    subnet 192.168.150.0 netmask 255.255.255.0 {
    #所属网段和子网掩码
          option routers                   192.168.150.1;
           #分配给客户机的网关
          option subnet-mask              255.255.255.0;
          option domain-name-servers      192.168.150.1;
           #分配给客户机的DNS
          range dynamic-bootp 192.168.150.10192.168.150.100;
           #分配给客户机的IP地址池
          default-lease-time 21600;
          max-lease-time 43200;
    }

④启动DHCP服务,并让DHCP服务开机自启动。

    service dhcpd start
    #启动DHCP服务
    chkconfig dhcpd on
    #让DHCP服务开机自启动

(4)在服务器上安装并配置TFTP服务。

①安装tftp-server服务。

    yum -y install tftp-server

②修改TFTP服务配置文件。

    vi /etc/xinetd.d/tftp
    service tftp
    {
            socket_type         = dgram
            protocol            = udp
            wait                = yes
            user                = root
            server              = /usr/sbin/in.tftpd
            server_args         = -s /tftpboot
            #指定TFTP服务器目录,之后要在根目录下新建tftpboot目录,所有向客户端传
            递的启动文件都要保存在此目录下
            disable             = no
            #把yes改为no,才能启动TFTP服务
            per_source          = 11
            cps                 = 100 2
            flags               = IPv4
    }

③重启TFTP服务。

    service xinetd restart

④手工建立TFTP服务器目录。

    mkdir /tftpboot

⑤复制客户端所需的引导文件到/tftpboot目录下。注意:如果安装的是“Basic Server (基本服务器)”,那么引导文件是没有被安装到系统中的,需要手工安装。

    yum -y install syslinux

然后再复制引导文件pxelinux.0到/tftpboot/目录下。

    cp /usr/share/syslinux/pxelinux.0 /tftpboot/

⑥复制客户端所需的配置文件到/tftpboot/目录下,配置文件在第一张光盘中。

    mount /dev/cdrom /mnt/cdrom
    #挂载光盘
    cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/
    cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/
    #以上两个文件是系统启动所必需的Linux镜像文件
    cp /mnt/cdrom/isolinux/*.msg /tftpboot/
    #复制boot.msg文件到/tftpboot/目录下。此文件是安装过程的提示信息,可以手工修改
    mkdir /tftpboot/pxelinux.cfg
    #新建保存配置文件的目录
    cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
    #复制配置文件到指定目录,并修改文件名
    chmod 644  /tftpboot/pxelinux.cfg/default
    #修改这个文件的权限,默认是只读文件

⑦修改配置文件的内容。

    vi /tftpboot/pxelinux.cfg/default
    default linux
    #修改default vesamenu.c32为default linux
    #prompt 1
    timeout 600
    display boot.msg
    menu background splash.jpg
    menu title Welcome to CentOS 6.3!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    label linux
    #标识哪个lable生效,以下代表lable linux会生效
      menu label ^Install or upgrade an existing system
      menu default
      kernel vmlinuz
      append initrd=initrd.img ks=http://192.168.150.239/ks.cfg
      #加入放置发布软件包的服务器地址和服务,我用的是HTTP服务
      #把自动应答文件(ks.cfg)复制到Apache主目录下
    label vesa
      menu label Install system with ^basic video driver
      kernel vmlinuz
      append initrd=initrd.img xdriver=vesa nomodeset
    label rescue
      menu label ^Rescue installed system
      kernel vmlinuz
      append initrd=initrd.img rescue
    label local
      menu label Boot from ^local drive
      localboot 0xffff
    label memtest86
      menu label ^Memory test
      kernel memtest
    append –

(5)搭建Apache服务器,用来发布安装用软件包。

①安装Apache服务。

    yum –y install http*

②把第一张光盘的所有内容复制到默认网页主目录。

    cp –r /mnt/cdrom/* /var/www/html

③启动Apache服务,并保证Apache服务开机自启动。

    servcie httpd start
    #启动Apache服务
    chkconfig httpd on
    #设置Apache服务开机自启动

(6)由KickStart生成ks.cfg自动应答配置文件。

因为手工书写配置文件过于烦琐,所以我们采用图形界面工具生成ks.cfg自动应答配置文件。但是我们在安装时采用的是“Basic Server(基本服务器)”,并没有安装图形界面,所以需要先安装图形界面。

①安装图形界面。

    yum –y groupinstall "X Window System"
    #安装X Window服务组件
    yum –y groupinstall "Desktop"
    #安装桌面组件
    yum –y install system-config-kickstart
    #安装桌面环境下KickStart配置工具
    startx
    #进入图形界面

②启用KickStart工具。

    system-config-kickstart

●Basic Configuration(基本配置)界面:调整语言、时区和root口令等,如图2-49所示。

图2-49 基本配置

●Installation Method(安装方法)界面:选择“Perform new installation(执行新安装)”, Installation source选择“HTTP”,指定HTTP服务器的IP地址和HTTP目录(这里写“/”),如图2-50所示。

图2-50 安装方法

●Partition Information(分区信息)界面:选择“Clear Master Boot Record(清除主引导记录)”,选择“Remove all existing partitions(删除所有现存分区)”,否则在安装到分区步骤时,会出现确认提示,无法实现全自动安装。然后单击“Add(添加)”按钮添加所需分区,这里我们划分了/boot分区、swap分区和/分区,如图2-51所示。

图2-51 分区信息

●Network Configuration(网络配置)界面:单击“Add Network Device(添加网络设备)”按钮,输入网络设备名,此处指定为eth0;输入网络类型,此处指定为DHCP,如图2-52所示。

图2-52 网络配置

●Firewall Configuration(防火墙配置)界面:SELinux选择为Disabled(关闭),Security level选择为Disable firewall(关闭),如图2-53所示。

图2-53 防火墙配置

●Package Selection(软件包选择)界面:选择需要的软件包,如图2-54所示。

图2-54 软件包选择

●其他页面全部保持默认设置即可。选择“File”→“Save”命令,指定保存文件名和保存位置保存。文件名指定为ks.cfg,保存目录指定为/root/目录。

③复制ks.cfg文件到Apache主目录下。

    cp /root/ks.cfg /var/www/html

④修改ks.cfg文件。

    vi /var/www/html
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --disabled
    key –skip
    #此句实现跳过注册码输入,否则安装过程会报错
    # Install OS instead of upgrade
    install
    # Use network installation
    url --url="http://192.168.150.239/"
    # Root password
    rootpw --iscrypted $1$b.in331n$DDJc03wp6n4vvchCrJ9m5.
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use graphical install
    graphical
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang zh_CN
    # SELinux configuration
    selinux --disabled
    # Installation logging level
    logging --level=info
    # System timezone
    timezone  Asia/Chongqing
    # Network information
    network  --bootproto=dhcp --device=eth0 --onboot=on
    # System bootloader configuration
    bootloader --location=mbr
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all --initlabel
    # Disk partitioning information
    part /boot --fstype="ext4" --size=200
    part swap --fstype="swap" --size=1000
    part / --fstype="ext4" --grow --size=1
    %packages
    @chinese-support
    @ftp-server
    %end

(7)启动客户端,修改BIOS界面,选择启动方式为网络启动。如果一切顺利,那么客户端会自动安装Linux系统。

无人值守安装的服务器端配置相对复杂,并不适合新手学习。如果刚开始学习,则掌握光盘安装即可,在以后工作中用到或对无人值守安装感兴趣再来学习。