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