无人值守批量安装linux
背景:在机房中需要大量安装Linux系统的时候,一台一台的装真的不是办法。当然有一个网络互连的网络环境通过网络安装是非常不错的。以下就是介绍以redhat6.0做为服务器,无人职守安装redhat。
下面我们了解我们需要的一些知识。
一、DHCP 服务
DHCP(动态主机配置协议)
DHCP 应该是一个大家都非常熟悉的协议,平时我们使用电脑时,经常会用到,它
的功能也是大家所知道的:动态地为主机分配IP 地址以节省工作量。亦可为PXE 客户
端分配TFTP Server 的IP。DHCP 由两个部分组成,即DHCP 服务器和DHCP 客户端(通常为我们所使用的PC)。DHCP 是一个协议,前身是BOOTP 协议,使用的端口号为:服务器端是UDP 67,客户端是UDP 68。当一台主机接入网络后,在没有IP 地址的情况下,
向网络上发送DHCP 请求获得IP 地址时,会执行如下操作:
DHCP Discover
客户端广播发送该数据包以发现网络内的dhcp 服务器
DHCP Offer
服务器广播该数据包进行回应,数据包内包含IP、MASK、GATEWAY 等信息
DHCP Request
客户端根据先到先得原则选择一个IP,并广播该信息
DHCP Ack
服务器广播该数据包以最终完成DHCP 地址租约
当我们使用的客户端为windows/linux 主机,其接入网络之后,当网卡配置为DHCP获得地址时,就开始向网络中请求地址,先发送一个广播包,等待1 秒之后,如果没有服务器应答,就开始尝试发送第二个广播包,如果又等了9 秒没有收到应答,则发送第三个广播包,第三个是等13 秒,还没有应答,最后再发送一个包,等待16 秒后,最终在四个广播包没有应答的情况下,也就是从发送第一个请求包到39 秒之后,默认是放弃请求,但最后也会为网卡自动配上一个私有IP 地址,地址段为169.254.0.0/16,并且你会看到网卡连接图标上出现×××感叹号,状态名为“受限制或无连接”,即使这时网络中出现了DHCP 服务器,也救不了这台主机,这就是windows 主机作为DHCP 客户端的情况,而Linux 系统则不启用该网卡。当DHCP 客户端得到IP 地址后,因为地址使用是有时间限制的,当这个时间过去一半的时候,客户端会发送单播数据包要求服务器续
约,以请求继续使用该地址,服务器同意后,该地址的使用时间会被刷新,如果在时间过去一半时,续约不成功,便会在总时间过去87.5%的时候再续约一次,此时使用广播数据包,如果还不成功,就会放弃该地址的使用权。服务器与客户端之间并没有hello这样的数据包来保持会话状态,所以当一台客户端得到一个IP 地址的使用权后,中途离开网络,服务器是无法知道的,也就无法将该IP 地址重新分配给他人使用,所以建议大家在配置服务器时,可以将租约配的越短越好,以免造成一个地址发给客户使用,而这台客户机已经离开了,该IP 地址还长时间不能重新发给新的客户使用,建议租约
配置为1 分钟,因为一个地址在租约过半时,客户端会续约,也就是可以再次使用同一个地址,所以不用担心一分钟之后,客户端会重新获得别的IP 地址。当一台DHCP 客户端收到服务器提供的IP 地址后,会使用Gratuitous ARP 来查讯网络,即使用该IP 地址为目的IP,目标MAC 为FFFFFF 发到网络里,如果有人回答该数据包,则证明该IP地址在网络中已经有他人在使用,那么将向DHCP 服务器重新请求获得别的IP 地址。
三、tftp服务
tftp(简单文件传输协议),用于在局域网内传输小文件,使用udp69 端口。可以用于
传输pxe 引导内核和img。
无值守安装引导过程
1. 客户端启动后,向DHCP 服务器申请IP 地址
2. DHCP 服务器验证后,发觉该客户端是合法的PXE 客户端,因此将IP 地址和PXE 服务器IP(TFTP Server IP)发送到客户端
3. 客户端同TFTP Server 交互,要求传输pxelinux.0 文件,完成客户端的网络配置
4. 客户端要求传输pxelinux.cfg 目录下的defalut 文件,以完成网络安装
5. TFTP Server 发送pxelinux.cfg 目录下的default 文件,客户端据此选择要安装的操作系统
6. TFTP Server 发送vmlinuz 和initrd.img 到客户端,完成客户端的初始化并启动
anaconda 进程开始网络安装
稍微讲一下PXE,以后会在window无人职守安装实验时也会用到。
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。PXE技术与RPL技术不同之处为RPL是静态路由,PXE是动态路由。RPL是根据网卡上的ID号加上其他记录组成的一个Frame(帧)向服务器发出请求。而服务器中已有这个ID数据,匹配成功则进行远程启动。PXE则是根据服务器端收到的工件站MAC地址,使用DHCP服务为这个MAC地址指定一个IP地址。每次启动可能同一台工作站有与上次启动时不同的IP,即动态分配地址。
四、KickStart
KickStart是一种无人职守安装的方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
五,FTP服务,NFS服务(这个就不用讲了吧)
下面开始实验:
1、配置本机linux地址为192.168.200.1
2,安装所需要用的包,下面我用yum安装的,yum不会的自己想办法了哦,
#yum -y install tftp-server vsftpd dhcp syslinux
3,下面开始配置实验需要的服务:
dhcp服务
vi /etc/dhcp/dhcpd.conf #看不懂的可以到/usr/share/doc/dhcp-4*/dhcpd.sample这个是模版有介绍。
特地讲一下filename 的文件要存在啊 next-server 一定要写正确为TFTP服务器地址,这边填自己的就行了 要不然网络启动就会出现以下情况:
tftp服务
默认目录为/var/lib/tftpboot 当然要改目录的话可以自己想办法了哦,这个装了就可以用。
FTP服务(NFS服务)
这两个只需要用一个就行 主要就是下载安装文件,还有一个ks.cfg文件,FTP我之前就做好了,弄个匿名访问即可 因为我已经把光盘内容拷贝到ftp目录/var/ftp/pub下
ks.cfg文件自动生成
这个是重点了哦,这个有很多技巧的东西。可以在后面讨论。大家也可以看下自己系统下/boot/ anaconda-ks.cfg文件
在终端输入:system-config-kickstart
这边选择语言,时间,root密码。大家都应该可以看懂就不讲了
注意下这个安装源来自那里,这里一般走网络,我这边就用FTP了
下面的是安装类型,就是跟引导有关系,一般没有配置电脑就按下面的来,如果是主机已有系统的话需要考虑改下。
这下主要是系统安装在那里的问题,以及对之前的引导是否做保留。当然还有系统分区情况。这个大家都装过linux,我具体分区就三个/ /boot SWAP 分区 实验够用就行。
下面配置网络:
下面的验证加密:
firewall , SELinux 状态
安装显示:
安装选择包,具环境而定:
安装前脚本,还有最下面的是安装完成脚本。这个就是大家的发挥的地方了。大家可以讨论这个问题。
最后SAVE到/var/ftp/pub目录下面 ks.cfg 给个执行权限 chmod 777 ks.cfg
下面看下里面什么东西
终于配置完成,这个要与vi /var/lib/tftpboot/pxelinux.cfg/default文件里面的对应,不然肯定还是会出错的
好了,我们将一些后续工作完成就可以进行测试了
使用一下几条命令来完成
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /var/ftp/pub/p_w_picpaths/* /var/lib/tftpboot
mkdir /tftpboot/pxelinux.cfg
cp /var/ftp/pub/isolinux/isolinux.cfg var/lib/tftpboot/pxelinux.cfg/default
编辑我们的/var/lib/tftpboot/pxelinux.cfg/default文件
然后就是将label linux后面的文件修改成:
kernel vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks=ftp:// 192.168.200.1/var/ftp/pub/ks.cfg ksdevice=eth0 noipv6即可
不过这个文件是只读文件我们修改完成后要强制保存退出使用命令:wq!
好了,一切配置工作都已经完成了.我们重新启动所以服务
也可以重启系统。记得要把之前的服务都chkconfig server on
最后测试安装过程,新建一个虚拟机从网络启动
1,DHCP.TFTP到BOOT,然后回车安装
2,检查硬件设备,正常
3,创建分区信息。
4,检查安装包
6,开始安装过程
7,最后解压包安装。
8.安装完成。
看下anaconda-ks.cfg,和之前生成的ks.cfg是否有相识。