一、前言

为啥要用无人值守安装系统?很简单的答案,就是方便日常工作。

常规装系统的办法有哪些?

光盘安装系统:一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就 开始装系统能用的上,以后用的机会屈指可数。

U盘安装系统:还是同样的问题,要一台一台服务器插U盘。

网络安装系统(ftp,http,nfs) :只要服务器能联网就可以装系统了,但还是需要一台台服务器去敲键盘点 鼠标。

无人值守安装系统好处都有啥?

对于个人:装系统大部分时间都浪费于下一步、下一步等操作,浪费了宝贵的时间。

对于行业:自打若干年前Red Hat推出了Kickstart,此后我们搞服务器的运维顿觉身价倍增。不再需要 刻了光盘一台一台地安装Linux,只要搞定PXE、DHCP、TFTP,还有那满屏眼花缭乱不知所云的Kickstart脚 本,瞬间安装上百台服务器。

二、PXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网 络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。

在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)MTFTP(multicast trivial  file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件 设置,从而引导预先安装在服务器中的终端操作系统。

PXE可以引导多种操作系统,如:Windows95 / 98 / 2000 / windows2003 / windows2008 / winXP / win7 /  win8,Linux系列系统等。

严格来说,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向DHCP发送请求

当计算机开机时第一次登录网络的时候,发现本机上没有任何IP地址设定。PXE Client会从自己的PXE网 卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,源IP地址是 0.0.0.0,发送DHCP discover发现信息来寻找DHCP服务器,即向目标IP地址是255.255.255.255发送特定的 广播信息。 网络上每一台安装了TCP/IP协议的主机都会接收到这个广播信息,但只有DHCP服务器才会做出响应。

2、DHCP服务器提供信息

DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一 个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址和其他设置的DHCP offer信息。 DHCP offer提供信息包括pxelinux启动程序(TFTP)位置,以及PXE配置文件所在位置(该文件一般是放在 一台TFTP服务器上)。

3、DHCP客户机接收IP和服务器的互动
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答 一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。 当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含 它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。 然后,DHCP客户机便将其TCP/IP协议与网卡绑定。 另外,除了DHCP客户机选中的服务器外,其他的DHCP服务器将收回曾经提供的IP地址。这是第一次初 始化网络。

4、PXE客户端请求下载启动文件

客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括: pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

5、Boot Server响应客户端请求并传送文件

当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答,用以决定 启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、 pxelinux.cfg/default)。客户端取得pxelinux.0 文件后之执行该文件,向服务器请求下载pxelinux.cfg文件。 客户端pxelinux.cfg配置文件后,请求vmlinuz文件和initrd.img文件,会根据该文件中定义的引导顺序,启 动Linux安装程序的引导内核。 pxeliunx.0:网络引导程序pxe文件 pxelinux.cfg/default:指定镜像的位置或ks文件位置 vmlinuz:引导内核 initrd.img:小型的linux操作系统,类似于windows的PE

6、请求下载自动应答文件

客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通 过什么 安装介质来安装Linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络(这是第二次初始 化网络),并定位安装源位置。 接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。 PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文 件PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序,从而进行两次获取IP地址过 程,但IP地址在DHCP的租期内是一样的。

7、客户端安装操作系统

将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软 件包。OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。 安装完成后,将提示重新引导计算机。

三、Kickstart

Kickstart工作原理

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名 为ks.cfg的文件。 如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用 所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。 所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载 ks.cfg文件,然后就去忙自己的事情。 等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

四、具体实验流程

选择centos7一台做实验

搭建PXE+Kickstart环境

将指定位置配置文件复制到dhcpd.conf中

编辑配置文件

设为开机自启动,并查看启动状态

取消使用本地dhcp服务奖ip地址分配给虚拟机。

修改tftp配置文件

设置为开机自启动。

查看端口是否开启

挂载centos7

浏览器上访问192.168.65.10/centos7

复制信息到var/lib/tftpboot/中

安装syslinux

复制信息

修改pxelinux.cfg/default配置文件

新建虚拟机进行测试

点击回车

在centos最小化安装后安装图形界面

安装system-config-kickstart

安装完成后,在桌面环境下,执行system-config-kickstart开始配置ks.cfg文件,使用startx进入到图形化界面。

配置kickstart,基本配置

安装方法

引导装在程序选项

分区信息

网络配置

禁用防火墙

显示配置

退出图形化界面

 

新建虚拟机,执行自动安装

安装之后自动重启

Ks.cfg配置文件

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$g5xKfGDE$ArAO6P0jZEEk93B9KYfxh/
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=eth1
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://192.168.65.10/centos7"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
part /boot --fstype="xfs" --size=512
#part swap --fstype="swap" --size=1024
#part / --fstype="xfs" --grow --size=1
part pv.01 --size=1 --grow
volgroup vg_centos pv.01
logvol swap --vgname=vg_centos --size=1024 --name=lv.swap
logvol / --vgname=vg_centos --size=1 --grow --name=lv.root
%packages --nobase
@core
net-tools
vim
gcc
%end
%post --interpreter=/bin/shell
rm -rf /etc/yum.repos.d/*
cd /etc/yum.repos.d/
echo -e "[a]">>a.repo
echo -e "baseurl=http://192.168.65.10/centos7">>a.repo
echo -e "gpgcheck=0">>a.repo
%end

小剧场:敢想敢拼!

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐