无人值守批量安装linux操作系统(实验总结)
每天都看对着电脑的操作系统,有时候出现了什么问题实在解决不了,我们肯定会选择重做系统的,当然一台两台系统我们还是可以一一搞定,可是我们是否想过要是一次性需要我们安装10台,100台甚至更多台的操作系统的时候,我们还是会那样傻乎乎的一台一台机械性的重复着这样的工作吗?可想而知,答案是否定的,那我们能不能找到很好的方法来解决这个问题呢?答案是肯定的,我们的前辈们肯定都遇到过这种问题他们也使用了很好的方法来解决这个问题.那就是---通过网络批量安装操作系统!这样做的好处就是当你的计算机没有光驱或者光驱损坏时,或者是没有安装介质的时候都是可以安装上我们的linux操作系统的~超棒O(∩_∩)o 哈哈不过安装之前我们还是要了解一下相关知识
一.PXE
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中设置的重启选项来重启系统,并结束安装。
三.实验过程中需要的rpm软件包
nfs-utils-lib-*
nfs-utils- *
xinetd-*
tftp-server-*
dhcp-*
dhcp-devel-*
pykickstart-*
system-config-kickstart-*
四.实验过程
配置本机ip地址
图1
图2
安装实验所需的所有安装包
图3
图4
图5
图6
图7
将本实验所涉及的所有服务都设置成开机自动启动
图8
创建实验过程中所需要的文件夹
图9
接下来就是实验的重点内容了,配置我们所需要的服务
1.dhcp服务
打开/etc/dhcpd.conf文件,由于我们是第一次配置该文件,我们可以将
/usr/share/doc/dhcp*/dhcpd.conf.sample复制成/etc/dhcpd.conf文件.也可以直接在vim编辑器的命令模式下输入:r /usr/share/doc/dhcp*/dhcpd.conf.sample这样可以直接进行编辑,这个就需要我们对vim编辑器使用的足够熟练哈
图10
图11
如果是像图11那样的配置dhcpd.conf文件,我们在安装操作系统时是不会成功的,出现的错误提示如图12
图12
正确的配置方法如图13:
图13
2.tftp服务
配置tftp服务,只需要将该文件中的disable一行的yes改成no即可,这个服务的配置文件还算很简单的啊,呵呵
图14
3.nfs服务
打开/etc/exports文件
配置内容如图15
图15
图16
4.ks.cfg文件的自动生成
好了,以上服务都配置完成后就是我们的重点角色ks.cfg文件的生成工作了,这个还真有点麻烦,好在我们前面安装了图形化配置工具,可以将我们的工作变的简单一些,不过还有一些技巧性问题我们在后面详述
在终端输入:system-config-kickstart
图17
图18
图19
图20
图21
图22
图23
图24
图25
图26
图27
图28
图29
图30
图31是我自己的ks.cfg文件,我已经修改过了
图31
终于配置完成,记得要将我们的配置文件保存到/kickstart文件夹,这个要与dhcpd.conf文件中定义的文件夹对应,不然肯定还是会出错的
好了,我们将一些后续工作完成就可以进行测试了,挂载上我们的光盘
使用一下几条命令来完成
mount /dev/cdrom /mnt/
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
cp /mnt/p_w_picpaths/pxeboot/initrd.img /tftpboot
cp /mnt/p_w_picpaths/pxeboot/vmlinuz /tftpboot
mkdir /tftpboot/pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
图32
编辑我们的/tftpboot/pxelinux.cfg/default文件
将timeout 修改成5(只要小一点就可以了)
然后就是将label linux后面的文件修改成:
kernel vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks noipv6即可
不过这个文件是只读文件我们修改完成后要强制保存退出使用命令:wq!
图33
图34
我们还要将光盘里面的所有文件都复制到/install文件夹里面
cp –Rv /mnt/* /install
图35
可是这样做实在是太耗费时间了,我们可以直接将光盘挂载到/install文件夹里面
图36
好了,一切配置工作都已经完成了.我们重新启动所以服务
图37
五.测试安装过程
打开我们的测试机器,将其设置成从网络启动
图38
出现这个画面可想而知我们的实验成功了
以下是安装过程中的截图
图39
图40
图41
图42
图43
图44
图45
安装完成自动重启计算机
图46
成功进入安装完成的操作系统
图47
六.安装过程及配置文件出错解决方案
问题一:我们的tftp服务器无法打开,这个错误困扰了我n久,就是这一个小小的错误导致我来来回回重新做了n次测试,最后终于找到解决方法了,原来是我的服务器的防火墙打开了,我将防火墙关闭,一切问题得以解决,汗….
图48
图49
图50
问题二:tftp服务器无法连接,解决方案就是我们的dhcpd.conf文件中的next-server配置一定要指向我们的tftp服务器
图51
问题三:无法下载我们的ks.cfg文件,这个错误的解决方法就是将我们的ks.cfg文件的权限修改一下,让它具有读写执行的权限
图52
图53
问题四:我们5版的光盘是需要填写序列号的,可是通过图形界面生成的ks.cfg文件是没有跳过序列号的,怎么解决呢?我们自己添加一条记录让它自动跳过就行了啦
# Skip the key number
key –skip
图54
问题五:不能自动初始化磁盘,我们可以在ks.cfg文件中添加一条记录
zerombr yes
图55
问题四和问题五的解决方案截图
图56
七.实验总结
笔者最大的心得就是,出错并不可怕,大不了从头在来,多做几次从中找出其中的问题.为了测试,我前前后后重启系统足有四五十次,来来回回从新搭建服务器足有十几次之多!这样更能让我体会到实验的细节问题,更能加深我以后排错的能力~由于翻阅查找了n多的blog和文档,如有雷同,纯属巧合……共同学习!