《基于PXE无人值守安装Linux系统的设_计与实现毕业论文(28页).doc》由会员分享,可在线阅读,更多相关《基于PXE无人值守安装Linux系统的设_计与实现毕业论文(28页).doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于PXE无人值守安装Linux系统的设_计与实现毕业论文-第 21 页本科毕业论文基于PXE无人值守安装Linux系统的设计与实现学 院: 计算机与信息工程学院专 业: 计算机科学与技术学 号: 111013479姓 名: 文鹏宇指导教师: 张杰职 称: 副教授论文提交日期:二0一五年六月摘 要PXE,就是预启动执行环境,是一种引导启动的方式。这种协议一般有两部分,一个是服务器一个是客户端。通俗的说,我们通过这种方法可以自己创建一个安装源,装系统的时候只要找到这个源我们就可以安装了。在实现无人值守安装之前,一些服务是需要搭建起来的,如nfs,tftp,dhcp等。当一台计算机启动的时候,标
2、准输入输出会将PXE 客户端调入我们的内存去进行相关操作,并提示出相关选项,在这我们可以进行勾选,PXE的客户端通过网络download启动文件到本地运行。其实并不是所有电脑都支持PXE,过去的电脑网卡都不支持PXE的,不过现在绝大多数电脑都支持了。具体过程是PXE客户端通过网卡向局域网内发送IP请求,然后DHCP服务器会给其提供IP地址和系统安装所需的东西,接下来用接到的文件进行系统安装。这个步奏可能会用到若干台服务器来分享所需文件等。最终实验会达到效果会是:任意一台主机在选择网络启动时会获取DHCP服务器分发的ip,并通过tftp来获取启动文件安装,并按照我们的个性化设计进行装机,之后将不
3、用进行任何操作,以实现PXE的无人值守安装。这种装系统的方法可以不受光驱,光盘及一些外设的限制,还可以做到无人值守安装,这样可以节约大量人力物力,特别是大规模的统一的系统安装,如网吧,学校电脑机房等,这是最好的安装方法。关键词: PXE 协议 系统安装 Abstract PXE, the pre-boot execution environment is a way to start the boot. Such agreements generally have two parts, one is a client the another is server. It can discribe
4、 like that, in this way we can create an installation source by ourself, we can install the system onece we find the source . Before you implement unattended installation, some services should be build up, such as nfs, tftp, dhcp, etc. When a computer is started, the Bios will take PXE client transf
5、erred to our memory related operations, and prompt the relevant options, in which we canselect, PXE clients via network boot file to download running locally. In fact, not all computers can support PXE, old computer network cards do not support PXE, but now majority of computers are now supported. T
6、he specific process is PXE client sends a request to the LAN via IP network card, then DHCP server will provide IP address and system installation stuff, subsequently received the file system installation. This step-outs may use several servers to share the required documents. Final test will achiev
7、e the desired effect would be: any host boot with network will get DHCP serverip, and to get through tftp startup file to install and follow our personalized design installed, then will not have to perform any operation to achieve unattended PXE installation. This method of installation of the syste
8、m do not realy on drive, CD-ROM, and limit the number of peripherals.With an unattended installation, so you can save a lot of manpower and resources, especially large-scale installation of the unified system, such as Internet cafes, school computer room, etc.It is the best method of installation.Ke
9、y words : Preboot execution environment Protocol System installation 目 录1 引言11.1 什么是PXE11.2 配置过程21.3 实现过程及简单流程31.4虚拟机环境的配置32 KICKSTART无人值守安装42.1 Kickstart简介42.2 设置本地镜像为yum源52.3相关服务的简介与安装配置82.3.1 DHCP服务的安装与配置82.3.2 TFTP服务的安装与配置122.3.3 NFS服务的安装与配置153 全自动无人安装测试223.1 测试223.2 运到的问题及解决方法28总 结29致 谢30参 考 文
10、献311 引言本次设计全都是在linux环境下完成的,之前都没有怎么接触过linux,所以对我来说这是一种新的系统。在接触过一段时间后,我发现linux在很多地方都很优秀,安全性自然不用说,各大企业都选择linux系统作为服务器的操作系统最大的原因就是安全,因为他的代码是开源的,发现问题大家一起来解决打补丁,去除已知Bug,而且用户相对来说较少,再者,Linux的普通用户是没有那么多权限的,所以相对安全。其最大的优点就是占用系统资源少,早期64M的内存就可以跑的比较流畅了,并且基于其特殊的文件结构,linux很少产生文件碎片,这都是linux的优点。目前市场上绝大多数服务器用的都是linux系
11、统,但是linux的图形界面还是比不上Windows的,不过最近几年linux的图形也越来越成熟了。学习过相关linux知识后,我知道linux下一般都会搭很多的服务,这次我的设计也是一种服务,这是一种利用PXE技术来进行网络安装系统的方法,接下来我们就来揭开她的面纱。1.1 什么是PXEPXE,就是预启动执行环境,是一种引导启动的方式。这种协议一般有两部分,一个是服务器一个是客户端。通俗的说,我们通过这种方法可以自己创建一个安装源,装系统的时候只要找到这个源我们就可以安装了。在实现无人值守安装之前,一些服务是需要搭建起来的,如nfs,tftp,dhcp等。当一台计算机启动的时候,标准输入输出
12、会将PXE 客户端调入我们的内存去进行相关操作,并提示出相关选项,在这我们可以进行勾选,PXE的客户端通过网络download启动文件到本地运行。其实并不是所有电脑都支持PXE,过去的电脑网卡都不支持PXE的,不过现在绝大多数电脑都支持了。具体过程是PXE客户端通过网卡向局域网内发送IP请求,然后DHCP服务器会给其提供IP地址和系统安装所需的东西,接下来用接到的文件进行系统安装。这个步奏可能会用到若干台服务器来分享所需文件等。最终实验会达到效果会是:任意一台主机在选择网络启动时会获取DHCP服务器分发的ip,并通过tftp来获取启动文件安装,并按照我们的个性化设计进行装机,之后将不用进行任何
13、操作,以实现PXE的无人值守安装。1.2 配置过程 其实配置过程并不像下面说的那么简单,中间会有好多的细节需要处理,这些细节都没有写在上面,在这里我就简单说一说,由于虚拟机服务器我们选的是2G的内存,所以一般我们的swap分区要给到4个G(1到2倍),在做实验之前我们的网络(我们服务器用的都是静态IP,要关闭dhcp,onboot开机启动也要打开)都要设置好,像防火墙啊,NetworkManager(我们老师说最好关掉)啊,系统里其他的yum库这些东西都是要关掉的,以免影响我们的实验。实验环境下最好就只有你的dhcp服务器,这也是我选择hostonly的原因之一,还有我们各种服务的文件都应该留
14、有备份,这是个好的习惯。只要细心一般都不会出错的,如果出错了将会很难查到,我们要避免一切不必要的操作,争取可以一步就做出来。设计实施的大体步骤1、虚拟机环境的配置2、设置本地镜像为YUM源, yum安装相应程序3、设置nfs共享4、拷贝无人职守安装系统所需文件5、配置tftp服务6、配置dhcp服务7、配置default文件和生成ks.cfg文件1.3 实现过程及简单流程开始装机,进行无人值守安装 图 1.3.1 简单流程图1.4虚拟机环境的配置虚拟机的话最好给上2个G的内存,作为服务器开销还是比较大的,实验环境:VMware Workstation 9.0系统平台:Red Hat Enter
15、prise 6.4 (最小化安装)网络模式:Hostonly模式(仅主机模式)DHCP / TFTP IP:192.168.33.128HTTP / FTP / NFS IP:192.168.33.128防火墙已关闭/iptables: Firewall is not running.SELINUX=disabled 关掉最好在这里介绍下Hostonly网络连接方式:Hostonly,仅主机连接方式相当于在虚拟机内的各个系统都在同一个局域网内,但是不能连接外面的网,不过由于虚拟机网卡的原因,真机是可以连进来的。之所以选择这种方法,最重要的因素是这种方法不受外界干扰,可以避免出现其他的问题。2
16、KICKSTART无人值守安装2.1 Kickstart简介前面说到PXE只是一种引导方式,那最终我们是靠什么实现无人值守安装的呢?先了解下KickStart吧,我查过资料cobbler和KickStart是两种无人值守安装的方法。这次我们用的是kickstart,我们可以通过一个ks.cfg的文件来编写我们的个性化系统安装需求,就是我们怎样安装用一个文件记录下来。因为在安装的时候,安装程序第一去找的及时ks.cfg文件,读取到相关参数后,就会使用它,若未能找到对应参数时,这时候就是我们采用交互式的方法来安装了。可以想象如果Ks.cfg文件包含所有在安装时需要用到的参数,那么装机者这个时候只需
17、要告诉安装从哪里去获得kickstart文件,然后安装程序自己下载文件并按照文件上的进行操作。一旦安装结束,安装程序会根据设置重启系统。那么这次安装也就结束了,这也就是我所说的无人值守安装了,其实挺好理解的,最关键的就是kickstart文件,那么有了这个文件,我们改怎么去获取呢?我们接着往下做。2.2 设置本地镜像为yum源一般我们都知道在/dev/cdrom或者(misc/cd)文件夹下可以看到所挂载的镜像。我们要做的就是把镜像文件作为我们的yum源。Yum比起RPM装包的好处就是可以自己处理依赖关系,也就是自己安装相关的依赖包,用起来也是很方便,但是删包的时候也会删除依赖包,这里要非常小
18、心。1.在目录/etc/yum.repos.d/下建立我们的yum库 2.文件名必须以.repo结尾 内容: repo-name (没要求) name=description (没要求,可按喜好填写) baseurl=url:/yum (我们软件源的路径,yum) enable=1 (是否开启yum源) gpgcheck=0 (是否进行签名检查)默认设置/etc/yum.confYum的相关命令与操作清理库缓存的cache:yum clean all查询:yum list all yum grouplist yum info yum groupinfo yum search yum provi
19、des安装:yum install package|rpmfile|packagegroup yum localinstall rpmfile yum groupinstall卸载:yum remove升级:yum update package|rpmfile|packagegroup 创建一个自定义的库1.创建一个目录,把所有RPM包都拷贝到这个目录中2.如果这个yum库要对外提供服务,能够考虑http ftp访问3.安装createrepo RPM包4.createrepo -v /packagedir 创建/重建 库数据的子目录以下是我在命令行的操作: rootnode1 桌面# vim
20、 /etc/yum.repos.d/cdrom.repocdromname=cdrombaseurl=file:/misc/cdenanled=1gpgcheck=0rootnode1 桌面# vim /etc/fstab (查看挂载文件的目录)# /etc/fstab# Created by anaconda on Mon Apr 13 21:38:51 2015# Accessible filesystems, by reference, are maintained under /dev/disk# See man pages fstab(5), findfs(8), mount(8)
21、and/or blkid(8) for more info/dev/mapper/vg_node1-LogVol01 / ext4 defaults 1 1UUID=1d0f573f-85e5-44b3-9dd5-eff791a24aa8 /boot ext4 defaults 1 2tmpfs /dev/shm tmpfs defaults 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0/dev/cdrom /yum iso9660 defaults 0 0rootnode1 桌面# mkdir /yum (创建用于挂
22、载的目录)rootnode1 桌面# mount a (刷新挂载信息)rootnode1 桌面# mount (查看挂载情况)/dev/mapper/vg_node1-LogVol01 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)tmpfs on /dev/shm type tmpfs (rw,rootcontext=system_u:object_r:tmpfs_t:s0)/dev/sr0 on /yum type iso9660 (ro) #这条就是我们做的挂载条目rootnode1
23、 桌面# yum repolist (查看有哪些库可以用)Loaded plugins: product-id, refresh-packagekit, security, subscription-managerThis system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.repo id repo name statuscdrom cdrom 3,648repolist: 3,648看到repolist(识别出来的可以安装的软件包)我
24、们的yum源就算是建好了,但是我们经常在建好库后却用不了库,原因可能也是各种各样的,这时候试试 yum clean all清除缓存,有时候可以解决类似问题,在这个问题上老师就指导过我。2.3相关服务的简介与安装配置2.3.1 DHCP服务的安装与配置 DHCP ,就是我们经常说的动态主机设置协议,主要是为客户端分发IP的,并且是自动分发IP的。一般情况下每台机子都有一个默认的dhcp服务器(有记忆功能,只要接收一次某dhcp服务器的IP地址,下一次会优先向此dhcp服务器发送请求)。我们选择这种方式的话,那么我们每次接受到的IP地址都会不同,即动态IP。这样的一个地址是dhcp服务器暂时给客户
25、端的,在关机后则会返回这个IP地址,这个时候如果有其他用户请求的话,服务器可能就会把这个IP给其他客户端了。并且在dhcp服务器上还可以设置子网掩码,网段等其他信息。 dhcp服务符合tcp/ip协议,也就是每一台连接上网络的电脑都会有一个独一无二的IP地址,虽然有时候我们会给自己设置固定的IP(做实验的时候),因为这样做实验会方便一些,或者说便于管理,但真正的生产环境一般采用的都是dhcp方式,因为它降低了我们的配置难度,不但灵活并且可以减少工作量。 下面我来介绍下dhcp服务器是怎么样工作的:1.客户端接入网络,向局域网(dhcp服务器所在的网络)发送请求IP的指令,找寻dhcp服务器。如
26、果是第一次接入网络,那么客户端上本来是没有ip资料的,那么它不知道它所在的网络在哪里,它会向网路个源地址为0.0.0.0,目的地址为255.255.255.255的dhcpdiscover的封包。所处网络中所有安装了tcp/ip协议的机子都会接受到这种广播信息,但能做出响应的只有dhcp服务器。一般一秒后就会回应,如果连续次都没有接到广播信息的话,客户端就会显示dhcpdiscover失败。.dhcp服务器接收到了请求ip的广播信息的话,它会从它的ip池里面找空闲的ip,再将一个dhcpoffer的封包发给客户端。dhcpoffer封包会根据dhcpdiscover封包里的地址等资料传送给客户
27、端。结合我们服务器的设定,租约信息就在dhcpoffer里面。.客户端接收到dhcpoffer信息(局域网内有时会有多个dhcp服务器,一般以最快到达的那个为准),就会发送一个dhcprequest的封包,这样dhcp服务器就知道是否接收到它的ip地址了。这样其他dhcp服务器就被拒绝了。有时候dhcpoffer给的ip地址已被占用,那么客户端将会再次发送DHCPdiscover信息。.dhcp服务器确认客户端接受了ip地址,它便向DHCP客户机发送一个包含它所提供的IP地址和DHCPack确认信息,告知客户端ip请求成功。客户端就把tcp/ip协议与自己的网卡绑定下来,其它dhcp服务器发的
28、地址都会被收回去。.当客户端再次接入网络的时候,就不会发dhcpdiscover包了,它会发之前发过的dhcprequest包(包含之前请求的信息),这时接到包的服务器会优先分配原先的地址,并回复一个信息。如果ip已被占用,这回复dhcpnack(告诉客户端ip有人用了),那么客户端就要重新发dhcpdiscover包了。.一般的一个ip地址都会有一个期限,时间到了的话服务器就会回收地址,若要延期就得更新ip租约。一般情况下在租约过半时,客户端就会发送更新租约的信息,若得不到确认信息的话,到了四分之三的租约时间客户端就不能再使用这个ip了。.解除ip租约是随时都可以的,这时候客户端就会发送一个
29、dhcplerease的命令。(不知道这和我们可以随时改ip有不有关系,我们临时改ip是不是也发这么一个包)。接下来是安装和配置过程:粗体部分是我们需要编辑配置的rootnode1 桌面# yum -y install dhcp (配好库是前提)rootnode1 桌面# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf在我们安装完包以后,一般都会有一个配置文件的范例,为了方便节约时间,我们会选择复制这个文件,再对文件进行编辑配置,# dhcpd.conf# Sample configuration file
30、 for ISC dhcpd# option definitions common to all supported networks.option domain-name ;option domain-name-servers node1.baiya.org, node2.baiya.org;default-lease-time 600;max-lease-time 7200;这是对服务器域名的配置,在本实验中并没有用,我们可以略过这部分# This is a very basic subnet declaration.基本的子网声明subnet 192.168.33.0 netmask 2
31、55.255.255.0 这是服务器所处的网段,以及它的子网掩码 range 192.168.33.10 192.168.33.20;我们服务器可以提供的地址范围 option routers 192.168.33.128;(路由的选择) filename pxelinux.0;#这是我们启动要用到的文件,增加 tftp-server 需要推送给客户端的启动文件(bootstrap)因为 tftp 的默认目录是 /tftpboot,所以文件的绝对路径就是: /tftpboot/pxelinux.0 next-server 192.168.33.128;#告诉客户端在获取到 pxelinux.0
32、 文件之后去哪里获取其余的启动文件# This declaration allows BOOTP clients to get dynamic addresses,# which we dont really recommend.#subnet 10.254.239.32 netmask 255.255.255.224 # range dynamic-bootp 10.254.239.40 10.254.239.60;# option broadcast-address 10.254.239.31;# option routers rtr-239-32-1.example.org;#有好几个范
33、本供我们选择,不用的我们可以删掉,也可以打上注释# A slightly different configuration for an internal subnet.#subnet 10.5.5.0 netmask 255.255.255.224 # range 10.5.5.26 10.5.5.30;# option domain-name-servers ns1.internal.example.org;# option domain-name internal.example.org;# option routers 10.5.5.1;# option broadcast-addres
34、s 10.5.5.31;# default-lease-time 600;# max-lease-time 7200;# Hosts which require special configuration options can be listed in# host statements. If no address is specified, the address will be# allocated dynamically (if possible), but the host-specific information# will still come from the host dec
35、laration.host passacaglia hardware ethernet 0:0:c0:5d:bd:95; filename vmunix.passacaglia; server-name ;# Fixed IP addresses can also be specified for hosts. These addresses# should not also be listed as being available for dynamic assignment.# Hosts for which fixed IP addresses have been specified c
36、an boot using# be booted with DHCP, unless there is an address range on the subnet# set.host fantasia hardware ethernet 08:00:07:26:c0:a5; fixed-address ;# You can declare a class of clients and then do address allocation# in a certain class get addresses on the 10.17.224/24 subnet, and all# other c
37、lients get addresses on the 10.0.29/24 subnet.class foo match if substring (option vendor-class-identifier, 0, 4) = SUNW;shared-network 224-29 subnet 10.17.224.0 netmask 255.255.255.0 option routers rtr-224.example.org; subnet 10.0.29.0 netmask 255.255.255.0 option routers rtr-29.example.org; pool a
38、llow members of foo; range 10.17.224.10 10.17.224.250; pool deny members of foo; range 10.0.29.10 10.0.29.230;后面的这一部分跟本次设计关系不大,其实并没有用到,目前我也看不大懂。开机自启动rootnode1 # service dhcpd startStarting dhcpd: OK rootnode1 # chkconfig dhcpd on 2.3.2 TFTP服务的安装与配置TFTP是一种文件传输的服务,用于服务器与客户端进行文件的传输,不过它只能进行简单的文件传输,这个服务的
39、开销并不大,所以并不能进行大文件的传输,多用于小文件的传输。它没有FTP那么强大,但是tftp适用于udp,有些时候还是tftp更方便。它默认占用的端口号是69。接下来我们来进行安装:先安装守护进程 xinetd (tftp是属于它的)rootnode1 # yum install xinetd -yserver | 3.7 kB 00:00 . Resolving Dependencies- Running transaction check- Package xinetd.i686 2:2.3.14-29.el6 set to be updated- Finished Dependency
40、 ResolutionDependencies Resolved Package Arch Version Repository SizeInstalling: xinetd i686 2:2.3.14-29.el6 server 121 kTransaction SummaryInstall 1 Package(s)Upgrade 0 Package(s)Total download size: 121 kInstalled size: 258 kIs this ok y/N: yDownloading Packages:Running rpm_check_debugRunning Tran
41、saction TestTransaction Test SucceededRunning Transaction Installing : 2:xinetd-2.3.14-29.el6.i686 1/1 Installed: xinetd.i686 2:2.3.14-29.el6 Complete!rootnode1 # yum install tftp-server -y rootnode1 # vim /etc/xinetd.d/tftp (编辑配置文件)# default: off# description: The tftp server serves files using the
42、 trivial file transfer #workstations, download configuration files to network-aware printers, #and to start the installation process for some operating systems.service tftpsocket_type= dgramprotocol= udp (使用的协议)wait= yesuser= rootserver= /usr/sbin/in.tftpdserver_args= -s /var/lib/tftpboot#tftp对外提供服务
43、的目录disable= no#开启tftp服务per_source= 11cps= 100 2flags= IPv4设置开机自启动,如果不开机自启动我们每次开机都得手动去启动服务,这会增加我们的工作量,当然这也会占用更多的资源,看个人喜好吧。 rootnode1# service xinetd restart #启动xinetd服务Stopping xinetd: OK Starting xinetd: OK rootnode1# chkconfig xinetd on (开机启动) 2.3.3 NFS服务的安装与配置NFS=network file system,就是网络文件系统。通过这个系统,我们可以在各台电脑之间通过网络共享文件。熟练的运用nfs可以节约我们的存储空间,通过网络的方式对文件进行读写,它最大的好处就是可以在不同操作系统间进行文件共享,依赖rpc协议,在本次设计中也是用来共享启动相关的文件的。先查询是否安装nfs的包rootnode1 # rpm -qa | grep nfsnfs-utils-lib-1.1.5-3.el6.i686nfs-utils-1.2.3-7.el6.i686rootnode1 # rpm -qa | grep rpcbindrpcbind-0.2.0-8.el6.i686创建相关的目录rootnode1 #
限制150内