基于PXE无人值守安装Linux系统的设计与实现.docx
- 文档编号:11049230
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:33
- 大小:406.14KB
基于PXE无人值守安装Linux系统的设计与实现.docx
《基于PXE无人值守安装Linux系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于PXE无人值守安装Linux系统的设计与实现.docx(33页珍藏版)》请在冰豆网上搜索。
基于PXE无人值守安装Linux系统的设计与实现
本科毕业论文
基于PXE无人值守安装Linux系统的设计与实现
学院:
计算机与信息工程学院
专业:
计算机科学与技术
学号:
111013479
姓名:
文鹏宇
指导教师:
张杰
职称:
副教授
论文提交日期:
二0一五年六月
摘要
PXE,就是预启动执行环境,是一种引导启动的方式。
这种协议一般有两部分,一个是服务器一个是客户端。
通俗的说,我们通过这种方法可以自己创建一个安装源,装系统的时候只要找到这个源我们就可以安装了。
在实现无人值守安装之前,一些服务是需要搭建起来的,如nfs,tftp,dhcp等。
当一台计算机启动的时候,标准输入输出会将PXE客户端调入我们的内存去进行相关操作,并提示出相关选项,在这我们可以进行勾选,PXE的客户端通过网络download启动文件到本地运行。
其实并不是所有电脑都支持PXE,过去的电脑网卡都不支持PXE的,不过现在绝大多数电脑都支持了。
具体过程是PXE客户端通过网卡向局域网内发送IP请求,然后DHCP服务器会给其提供IP地址和系统安装所需的东西,接下来用接到的文件进行系统安装。
这个步奏可能会用到若干台服务器来分享所需文件等。
最终实验会达到效果会是:
任意一台主机在选择网络启动时会获取DHCP服务器分发的ip,并通过tftp来获取启动文件安装,并按照我们的个性化设计进行装机,之后将不用进行任何操作,以实现PXE的无人值守安装。
这种装系统的方法可以不受光驱,光盘及一些外设的限制,还可以做到无人值守安装,这样可以节约大量人力物力,特别是大规模的统一的系统安装,如网吧,学校电脑机房等,这是最好的安装方法。
关键词:
PXE协议系统安装
Abstract
PXE,thepre-bootexecutionenvironmentisawaytostarttheboot.Suchagreementsgenerallyhavetwoparts,oneisaclienttheanotherisserver.Itcandiscribelikethat,inthiswaywecancreateaninstallationsourcebyourself,wecaninstallthesystemonecewefindthesource.Beforeyouimplementunattendedinstallation,someservicesshouldbebuildup,suchasnfs,tftp,dhcp,etc.Whenacomputerisstarted,theBioswilltakePXEclienttransferredtoourmemoryrelatedoperations,andprompttherelevantoptions,inwhichwecanselect,PXEclientsvianetworkbootfiletodownloadrunninglocally.Infact,notallcomputerscansupportPXE,oldcomputernetworkcardsdonotsupportPXE,butnowmajorityofcomputersarenowsupported.ThespecificprocessisPXEclientsendsarequesttotheLANviaIPnetworkcard,thenDHCPserverwillprovideIPaddressandsysteminstallationstuff,subsequentlyreceivedthefilesysteminstallation.Thisstep-outsmayuseseveralserverstosharetherequireddocuments.Finaltestwillachievethedesiredeffectwouldbe:
anyhostbootwithnetworkwillgetDHCPserver·ip,andtogetthroughtftpstartupfiletoinstallandfollowourpersonalizeddesigninstalled,thenwillnothavetoperformanyoperationtoachieveunattendedPXEinstallation.
Thismethodofinstallationofthesystemdonotrealyondrive,CD-ROM,andlimitthenumberofperipherals.Withanunattendedinstallation,soyoucansavealotofmanpowerandresources,especiallylarge-scaleinstallationoftheunifiedsystem,suchasInternetcafes,schoolcomputerroom,etc.Itisthebestmethodofinstallation.
Keywords:
PrebootexecutionenvironmentProtocolSysteminstallation
1引言
本次设计全都是在linux环境下完成的,之前都没有怎么接触过linux,所以对我来说这是一种新的系统。
在接触过一段时间后,我发现linux在很多地方都很优秀,安全性自然不用说,各大企业都选择linux系统作为服务器的操作系统最大的原因就是安全,因为他的代码是开源的,发现问题大家一起来解决打补丁,去除已知Bug,而且用户相对来说较少,再者,Linux的普通用户是没有那么多权限的,所以相对安全。
其最大的优点就是占用系统资源少,早期64M的内存就可以跑的比较流畅了,并且基于其特殊的文件结构,linux很少产生文件碎片,这都是linux的优点。
目前市场上绝大多数服务器用的都是linux系统,但是linux的图形界面还是比不上Windows的,不过最近几年linux的图形也越来越成熟了。
学习过相关linux知识后,我知道linux下一般都会搭很多的服务,这次我的设计也是一种服务,这是一种利用PXE技术来进行网络安装系统的方法,接下来我们就来揭开她的面纱。
1.1什么是PXE
PXE,就是预启动执行环境,是一种引导启动的方式。
这种协议一般有两部分,一个是服务器一个是客户端。
通俗的说,我们通过这种方法可以自己创建一个安装源,装系统的时候只要找到这个源我们就可以安装了。
在实现无人值守安装之前,一些服务是需要搭建起来的,如nfs,tftp,dhcp等。
当一台计算机启动的时候,标准输入输出会将PXE客户端调入我们的内存去进行相关操作,并提示出相关选项,在这我们可以进行勾选,PXE的客户端通过网络download启动文件到本地运行。
其实并不是所有电脑都支持PXE,过去的电脑网卡都不支持PXE的,不过现在绝大多数电脑都支持了。
具体过程是PXE客户端通过网卡向局域网内发送IP请求,然后DHCP服务器会给其提供IP地址和系统安装所需的东西,接下来用接到的文件进行系统安装。
这个步奏可能会用到若干台服务器来分享所需文件等。
最终实验会达到效果会是:
任意一台主机在选择网络启动时会获取DHCP服务器分发的ip,并通过tftp来获取启动文件安装,并按照我们的个性化设计进行装机,之后将不用进行任何操作,以实现PXE的无人值守安装。
1.2配置过程
其实配置过程并不像下面说的那么简单,中间会有好多的细节需要处理,这些细节都没有写在上面,在这里我就简单说一说,由于虚拟机服务器我们选的是2G的内存,所以一般我们的swap分区要给到4个G(1到2倍),在做实验之前我们的网络(我们服务器用的都是静态IP,要关闭dhcp,onboot开机启动也要打开)都要设置好,像防火墙啊,NetworkManager(我们老师说最好关掉)啊,系统里其他的yum库这些东西都是要关掉的,以免影响我们的实验。
实验环境下最好就只有你的dhcp服务器,这也是我选择hostonly的原因之一,还有我们各种服务的文件都应该留有备份,这是个好的习惯。
只要细心一般都不会出错的,如果出错了将会很难查到,我们要避免一切不必要的操作,争取可以一步就做出来。
设计实施的大体步骤
1、虚拟机环境的配置
2、设置本地镜像为YUM源,yum安装相应程序
3、设置nfs共享
4、拷贝无人职守安装系统所需文件
5、配置tftp服务
6、配置dhcp服务
7、配置default文件和生成ks.cfg文件
1.3实现过程及简单流程
开始装机,进行无人值守安装
图1.3.1简单流程图
1.4虚拟机环境的配置
虚拟机的话最好给上2个G的内存,作为服务器开销还是比较大的,
实验环境:
VMwareWorkstation9.0
系统平台:
RedHatEnterprise6.4(最小化安装)
网络模式:
Hostonly模式(仅主机模式)
DHCP/TFTPIP:
192.168.33.128
HTTP/FTP/NFSIP:
192.168.33.128
防火墙已关闭/iptables:
Firewallisnotrunning.
SELINUX=disabled关掉最好
在这里介绍下Hostonly网络连接方式:
Hostonly,仅主机连接方式相当于在虚拟机内的各个系统都在同一个局域网内,但是不能连接外面的网,不过由于虚拟机网卡的原因,真机是可以连进来的。
之所以选择这种方法,最重要的因素是这种方法不受外界干扰,可以避免出现其他的问题。
2KICKSTART无人值守安装
2.1Kickstart简介
前面说到PXE只是一种引导方式,那最终我们是靠什么实现无人值守安装的呢?
先了解下KickStart吧,我查过资料cobbler和KickStart是两种无人值守安装的方法。
这次我们用的是kickstart,我们可以通过一个ks.cfg的文件来编写我们的个性化系统安装需求,就是我们怎样安装用一个文件记录下来。
因为在安装的时候,安装程序第一去找的及时ks.cfg文件,读取到相关参数后,就会使用它,若未能找到对应参数时,这时候就是我们采用交互式的方法来安装了。
可以想象如果Ks.cfg文件包含所有在安装时需要用到的参数,那么装机者这个时候只需要告诉安装从哪里去获得kickstart文件,然后安装程序自己下载文件并按照文件上的进行操作。
一旦安装结束,安装程序会根据设置重启系统。
那么这次安装也就结束了,这也就是我所说的无人值守安装了,其实挺好理解的,最关键的就是kickstart文件,那么有了这个文件,我们改怎么去获取呢?
我们接着往下做。
2.2设置本地镜像为yum源
一般我们都知道在/dev/cdrom或者(misc/cd)文件夹下可以看到所挂载的镜像。
我们要做的就是把镜像文件作为我们的yum源。
Yum比起RPM装包的好处就是可以自己处理依赖关系,也就是自己安装相关的依赖包,用起来也是很方便,但是删包的时候也会删除依赖包,这里要非常小心。
1.在目录/etc/yum.repos.d/下建立我们的yum库
2.文件名必须以.repo结尾
内容:
[repo-name](没要求)
name=description(没要求,可按喜好填写)
baseurl=url:
//yum(我们软件源的路径,yum)
enable=1(是否开启yum源)
gpgcheck=0(是否进行签名检查)
默认设置/etc/yum.conf
Yum的相关命令与操作
清理库缓存的cache:
yumcleanall
****************************************************************************************************************************
查询:
yumlist[all]
yumgrouplist
yuminfo
yumgroupinfo
yumsearch
yumprovides
安装:
yuminstallpackage|rpmfile|@packagegroup
yumlocalinstallrpmfile
yumgroupinstall
卸载:
yumremove
升级:
yumupdate[package|rpmfile|@packagegroup]
******************************************************************************************************************************
创建一个自定义的库
1.创建一个目录,把所有RPM包都拷贝到这个目录中
2.如果这个yum库要对外提供服务,能够考虑httpftp访问
3.安装createrepoRPM包
4.createrepo-v/packagedir
创建/重建库数据的子目录
=====================================================================================
==================================================================
以下是我在命令行的操作:
[root@node1桌面]#vim/etc/yum.repos.d/cdrom.repo
[cdrom]
name=cdrom
baseurl=file:
///misc/cd
enanled=1
gpgcheck=0
[root@node1桌面]#vim/etc/fstab(查看挂载文件的目录)
#
#/etc/fstab
#CreatedbyanacondaonMonApr1321:
38:
512015
#
#Accessiblefilesystems,byreference,aremaintainedunder'/dev/disk'
#Seemanpagesfstab(5),findfs(8),mount(8)and/orblkid(8)formoreinfo
#
/dev/mapper/vg_node1-LogVol01/ext4defaults11
UUID=1d0f573f-85e5-44b3-9dd5-eff791a24aa8/bootext4defaults12
tmpfs/dev/shmtmpfsdefaults00
sysfs/syssysfsdefaults00
proc/procprocdefaults00
/dev/cdrom/yumiso9660defaults00
~
[root@node1桌面]#mkdir/yum(创建用于挂载的目录)
[root@node1桌面]#mount–a(刷新挂载信息)
[root@node1桌面]#mount(查看挂载情况)
/dev/mapper/vg_node1-LogVol01on/typeext4(rw)
procon/proctypeproc(rw)
sysfson/systypesysfs(rw)
tmpfson/dev/shmtypetmpfs(rw,rootcontext="system_u:
object_r:
tmpfs_t:
s0")
/dev/sr0on/yumtypeiso9660(ro)#这条就是我们做的挂载条目
[root@node1桌面]#yumrepolist(查看有哪些库可以用)
Loadedplugins:
product-id,refresh-packagekit,security,subscription-manager
ThissystemisnotregisteredtoRedHatSubscriptionManagement.Youcanusesubscription-managertoregister.
repoidreponamestatus
cdromcdrom3,648
repolist:
3,648
看到repolist(识别出来的可以安装的软件包)我们的yum源就算是建好了,但是我们经常在建好库后却用不了库,原因可能也是各种各样的,这时候试试yumcleanall清除缓存,有时候可以解决类似问题,在这个问题上老师就指导过我。
2.3相关服务的简介与安装配置
2.3.1DHCP服务的安装与配置
DHCP,就是我们经常说的动态主机设置协议,主要是为客户端分发IP的,并且是自动分发IP的。
一般情况下每台机子都有一个默认的dhcp服务器(有记忆功能,只要接收一次某dhcp服务器的IP地址,下一次会优先向此dhcp服务器发送请求)。
我们选择这种方式的话,那么我们每次接受到的IP地址都会不同,即动态IP。
这样的一个地址是dhcp服务器暂时给客户端的,在关机后则会返回这个IP地址,这个时候如果有其他用户请求的话,服务器可能就会把这个IP给其他客户端了。
并且在dhcp服务器上还可以设置子网掩码,网段等其他信息。
dhcp服务符合tcp/ip协议,也就是每一台连接上网络的电脑都会有一个独一无二的IP地址,虽然有时候我们会给自己设置固定的IP(做实验的时候),因为这样做实验会方便一些,或者说便于管理,但真正的生产环境一般采用的都是dhcp方式,因为它降低了我们的配置难度,不但灵活并且可以减少工作量。
下面我来介绍下dhcp服务器是怎么样工作的:
1.客户端接入网络,向局域网(dhcp服务器所在的网络)发送请求IP的指令,找寻dhcp服务器。
如果是第一次接入网络,那么客户端上本来是没有ip资料的,那么它不知道它所在的网络在哪里,它会向网路个源地址为0.0.0.0,目的地址为255.255.255.255的dhcpdiscover的封包。
所处网络中所有安装了tcp/ip协议的机子都会接受到这种广播信息,但能做出响应的只有dhcp服务器。
一般一秒后就会回应,如果连续4次都没有接到广播信息的话,客户端就会显示dhcpdiscover失败。
2.dhcp服务器接收到了请求ip的广播信息的话,它会从它的ip池里面找空闲的ip,再将一个dhcpoffer的封包发给客户端。
dhcpoffer封包会根据dhcpdiscover封包里的Mac地址等资料传送给客户端。
结合我们服务器的设定,租约信息就在dhcpoffer里面。
3.客户端接收到dhcpoffer信息(局域网内有时会有多个dhcp服务器,一般以最快到达的那个为准),就会发送一个dhcprequest的封包,这样dhcp服务器就知道是否接收到它的ip地址了。
这样其他dhcp服务器就被拒绝了。
有时候dhcpoffer给的ip地址已被占用,那么客户端将会再次发送DHCPdiscover信息。
4.dhcp服务器确认客户端接受了ip地址,它便向DHCP客户机发送一个包含它所提供的IP地址和DHCPack确认信息,告知客户端ip请求成功。
客户端就把tcp/ip协议与自己的网卡绑定下来,其它dhcp服务器发的地址都会被收回去。
5.当客户端再次接入网络的时候,就不会发dhcpdiscover包了,它会发之前发过的dhcprequest包(包含之前请求的信息),这时接到包的服务器会优先分配原先的地址,并回复一个信息。
如果ip已被占用,这回复dhcpnack(告诉客户端ip有人用了),那么客户端就要重新发dhcpdiscover包了。
6.一般的一个ip地址都会有一个期限,时间到了的话服务器就会回收地址,若要延期就得更新ip租约。
一般情况下在租约过半时,客户端就会发送更新租约的信息,若得不到确认信息的话,到了四分之三的租约时间客户端就不能再使用这个ip了。
7.解除ip租约是随时都可以的,这时候客户端就会发送一个dhcplerease的命令。
(不知道这和我们可以随时改ip有不有关系,我们临时改ip是不是也发这么一个包)。
接下来是安装和配置过程:
粗体部分是我们需要编辑配置的
[root@node1桌面]#yum-yinstalldhcp(配好库是前提)
[root@node1桌面]#cp/usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
/etc/dhcp/dhcpd.conf
在我们安装完包以后,一般都会有一个配置文件的范例,为了方便节约时间,我们会选择复制这个文件,再对文件进行编辑配置,
#dhcpd.conf
#
#SampleconfigurationfileforISCdhcpd
#
#optiondefinitionscommontoallsupportednetworks...
optiondomain-name"";
optiondomain-name-serversnode1.baiya.org,node2.baiya.org;
default-lease-time600;
max-lease-time7200;
#这是对服务器域名的配置,在本实验中并没有用,我们可以略过这部分
#Thisisaverybasicsubnetdeclaration.
#基本的子网声明
subnet192.168.33.0netmask255.255.255.0{
#这是服务器所处的网段,以及它的子网掩码
range192.168.33.10192.168.33.20;
#我们dhcp服务器可以提供的ip地址范围
optionrouters192.168.33.128;
#(路由的选择)
filename"pxelinux.0";
#这是我们启动要用到的文件,增加tftp-server需要推送给客户端的启动文件(bootstrap)因为tftp的默认目录是/tftpboot,所以文件的绝对路径就是:
/tftpboot/pxelinux.0"
next-server192.168.33.128;
#告诉客户端在获取到pxelinux.0文件之后去哪里获取其余的启动文件
}
#ThisdeclarationallowsBOOTPclientstogetdynamicaddresses,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 PXE 无人 值守 安装 Linux 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)